Пример #1
0
def main():
    for mk in machine_list.keys():
        machine = machine_list[mk]
        print("Setting up MongoDB in %s ..." % machine["ip"])
        rc = RemoteConnection(machine["ip"], machine["user"],
                              machine["passwd"])
        rc.upload_dir(local_filepath, remote_location)
        rc.run_command("chmod 777 " + remote_location + "/*")
        rc.close()
Пример #2
0
def set_configsvr_cluster():
    """
    配置MongoDB配置服务器集群
    :return:
    """
    machine = machine_list[machine_list.keys().__iter__().__next__()]
    pyconn = pymongo.MongoClient(machine["ip"], configsvr_port)
    admin_db = pyconn.get_database("admin")
    config_object = {
        "_id":
        configsvr_replSetName,
        "members": [{
            "_id": index,
            "host": "%s:%d" % (machine_list[mk]["ip"], configsvr_port)
        } for index, mk in enumerate(machine_list.keys())]
    }
    set_result = admin_db.command("replSetInitiate", config_object)
    if set_result["ok"] != 1.0:
        print("Warning: set configure cluster failed.")
    pyconn.close()
Пример #3
0
def generate_routesvr(machine_key):
    conn = connection_dict[machine_key]
    yaml_saving_path = join(conf_path, "route.yaml")
    if CLEANING_MODE:
        router_config = templates.router_configure_file_model
        router_config["net"]["port"] = route_port_start
        router_config["systemLog"]["path"] = join(log_path, "route.log")
        router_config["sharding"] = {
            "configDB":
            configsvr_replSetName + "/" + ",".join([
                "%s:%d" % (machine_list[mk]["ip"], configsvr_port)
                for mk in machine_list.keys()
            ])
        }
        conn.write_yaml(yaml_saving_path, router_config)
    return "%s --config %s" % (mongos_path, yaml_saving_path)
Пример #4
0
def set_routesvr():
    machine = machine_list[machine_list.keys().__iter__().__next__()]
    router_entry = pymongo.MongoClient(machine["ip"], route_port_start)
    admin_db = router_entry.get_database("admin")
    for replset_id in range(replset_count):
        replset_name = "replset_%d" % replset_id
        service_list = []
        for mk in connection_dict.keys():
            ip = machine_list[mk]["ip"]
            for shard_id in range(shard_service_pre_machine[replset_id]):
                port = shard_port_start + replset_id * 10 + shard_id
                service_list.append("%s:%d" % (ip, port))
        shard_info = replset_name + "/" + ",".join(service_list)
        result = admin_db.command("addShard", shard_info)
        print("路由服务器配置中...")
        print("副本集增加结果:" + shard_info + "结果")
        print_json(result)
Пример #5
0
def set_shardsvr_cluster(replset_id):
    """
    配置MongoDB分片服务器集群
    :return:
    """
    machine = machine_list[machine_list.keys().__iter__().__next__()]
    members = []
    t = 0
    for mk, mac in machine_list.items():
        for i in range(shard_service_pre_machine[replset_id]):
            port = shard_port_start + replset_id * 10 + i
            members.append({"_id": t, "host": "%s:%d" % (mac["ip"], port)})
            t += 1

    pyconn = pymongo.MongoClient(machine["ip"],
                                 shard_port_start + replset_id * 10)
    admin_db = pyconn.get_database("admin")
    config_object = {"_id": "replset_%d" % replset_id, "members": members}
    set_result = admin_db.command("replSetInitiate", config_object)
    if set_result["ok"] != 1.0:
        print("Warning: set replset %d cluster failed." % replset_id)
    pyconn.close()
Пример #6
0
def close_connections():
    for mk in machine_list.keys():
        connection_dict[mk].close()
Пример #7
0
import pymongo
import traceback

CLEANING_MODE = True
REMOTE_CONTROL_PASSWD = "979323846"
REMOTE_CONTROL_PORT = 10086


def join(path, *paths):
    return raw_join(path, *paths).replace("\\", "/")


connection_dict = {
    mk: RemoteConnection(machine_list[mk]["ip"], machine_list[mk]["user"],
                         machine_list[mk]["passwd"], machine_list[mk]["port"])
    for mk in machine_list.keys()
}


def close_connections():
    for mk in machine_list.keys():
        connection_dict[mk].close()


def clean_path():
    for mk in connection_dict.keys():
        connection_dict[mk].run_command("rm -rf %s" % dbfile_path)
        connection_dict[mk].run_command("mkdir -p %s" % log_path)
        connection_dict[mk].run_command("mkdir -p %s" % conf_path)
        connection_dict[mk].run_command("mkdir -p %s" % data_path)