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()
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()
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)
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)
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()
def close_connections(): for mk in machine_list.keys(): connection_dict[mk].close()
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)