Skip to content

Commit b553a46

Browse files
yyhenryyyiSecloud
authored andcommitted
fix(mongodb): 副本集单实例部署,分片集群分片单实例部署 #8734
1 parent 769afe7 commit b553a46

File tree

3 files changed

+45
-16
lines changed

3 files changed

+45
-16
lines changed

dbm-ui/backend/db_meta/api/cluster/nosqlcomm/create_instances.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def create_mongo_mutil_instances(bk_biz_id, bk_cloud_id, machine_type, inst_pair
3737
# 找到主节点
3838
if storage["role"] == InstanceRole.MONGO_M1:
3939
primary = storage
40+
4041
for storage in inst_pair["nodes"]:
4142
if storage["role"] != InstanceRole.MONGO_M1:
4243
tuples.append(
@@ -47,7 +48,8 @@ def create_mongo_mutil_instances(bk_biz_id, bk_cloud_id, machine_type, inst_pair
4748
)
4849
machine.create(machines=list(machines.values()), bk_cloud_id=bk_cloud_id)
4950
storage_instance.create(instances=instances)
50-
storage_instance_tuple.create(tuples)
51+
if tuples:
52+
storage_instance_tuple.create(tuples)
5153
except Exception as e:
5254
logger.error(traceback.format_exc())
5355
raise e
@@ -89,7 +91,8 @@ def create_mongo_instances(
8991
if not skip_machine:
9092
machine.create(machines=list(machines.values()), bk_cloud_id=bk_cloud_id)
9193
storage_instance.create(instances=instances)
92-
storage_instance_tuple.create(tuple)
94+
if tuple:
95+
storage_instance_tuple.create(tuple)
9396
except Exception as e:
9497
logger.error(traceback.format_exc())
9598
raise e

dbm-ui/backend/flow/utils/mongodb/calculate_cluster.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,8 +227,12 @@ def cluster_calc(payload: dict, payload_clusters: dict, app: str) -> dict:
227227
nodes = [{"ip": machine["ip"], "bk_cloud_id": machine["bk_cloud_id"]} for machine in machines]
228228
replica_set["nodes"] = nodes
229229
shards.append(replica_set)
230+
if node_count > 1:
231+
add_shard_nodes = nodes[0:-1]
232+
else:
233+
add_shard_nodes = nodes
230234
add_shards[replica_set["set_id"]] = ",".join(
231-
["{}:{}".format(node["ip"], str(replica_set["port"])) for node in nodes[0:-1]]
235+
["{}:{}".format(node["ip"], str(replica_set["port"])) for node in add_shard_nodes]
232236
)
233237

234238
payload_clusters["shards"] = shards

dbm-ui/backend/flow/utils/mongodb/mongodb_dataclass.py

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,7 @@ def get_add_relationship_to_meta_kwargs(self, replicaset_info: dict) -> dict:
583583
info["bk_cloud_id"] = self.payload["config"]["nodes"][0]["bk_cloud_id"]
584584
info["machine_specs"] = self.payload["machine_specs"]
585585
info["immute_domain"] = self.payload["mongos"]["domain"]
586+
node_count = self.payload["node_count"]
586587
# mongos
587588
info["proxies"] = [
588589
{"ip": node["ip"], "port": self.payload["mongos"]["port"]} for node in self.payload["mongos"]["nodes"]
@@ -595,18 +596,31 @@ def get_add_relationship_to_meta_kwargs(self, replicaset_info: dict) -> dict:
595596
}
596597
if len(self.payload["config"]["nodes"]) <= 11:
597598
for index, node in enumerate(self.payload["config"]["nodes"]):
598-
if index == len(self.payload["config"]["nodes"]) - 1:
599-
config["nodes"].append(
600-
{"ip": node["ip"], "port": self.payload["config"]["port"], "role": self.instance_role[-1]}
601-
)
602-
else:
599+
if node_count == 1:
603600
config["nodes"].append(
604601
{
605602
"ip": node["ip"],
606603
"port": self.payload["config"]["port"],
607604
"role": self.instance_role[index],
608605
}
609606
)
607+
elif node_count > 1:
608+
if index == len(self.payload["config"]["nodes"]) - 1:
609+
config["nodes"].append(
610+
{
611+
"ip": node["ip"],
612+
"port": self.payload["config"]["port"],
613+
"role": self.instance_role[-1],
614+
}
615+
)
616+
else:
617+
config["nodes"].append(
618+
{
619+
"ip": node["ip"],
620+
"port": self.payload["config"]["port"],
621+
"role": self.instance_role[index],
622+
}
623+
)
610624
info["configs"].append(config)
611625

612626
# shard
@@ -618,14 +632,19 @@ def get_add_relationship_to_meta_kwargs(self, replicaset_info: dict) -> dict:
618632
}
619633
if len(shard["nodes"]) <= 11:
620634
for index, node in enumerate(shard["nodes"]):
621-
if index == len(shard["nodes"]) - 1:
622-
storage["nodes"].append(
623-
{"role": self.instance_role[-1], "ip": node["ip"], "port": shard["port"]}
624-
)
625-
else:
635+
if node_count == 1:
626636
storage["nodes"].append(
627637
{"role": self.instance_role[index], "ip": node["ip"], "port": shard["port"]}
628638
)
639+
elif node_count > 1:
640+
if index == len(shard["nodes"]) - 1:
641+
storage["nodes"].append(
642+
{"role": self.instance_role[-1], "ip": node["ip"], "port": shard["port"]}
643+
)
644+
else:
645+
storage["nodes"].append(
646+
{"role": self.instance_role[index], "ip": node["ip"], "port": shard["port"]}
647+
)
629648
info["storages"].append(storage)
630649
return info
631650

@@ -985,7 +1004,8 @@ def get_cluster_info_deinstall(self, cluster_id: int):
9851004
"instance_role": member.role,
9861005
}
9871006
)
988-
nodes.append(backup_node)
1007+
if len(cluster_info.get_shards()[0].members) > 1:
1008+
nodes.append(backup_node)
9891009
self.payload["nodes"] = nodes
9901010
elif cluster_info.cluster_type == ClusterType.MongoShardedCluster.value:
9911011
mongos = cluster_info.get_mongos()
@@ -1019,7 +1039,8 @@ def get_cluster_info_deinstall(self, cluster_id: int):
10191039
"instance_role": member.role,
10201040
}
10211041
)
1022-
nodes.append(backup_node)
1042+
if len(shard.members) > 1:
1043+
nodes.append(backup_node)
10231044
shard_info["nodes"] = nodes
10241045
shards_nodes.append(shard_info)
10251046
backup_node = {}
@@ -1040,7 +1061,8 @@ def get_cluster_info_deinstall(self, cluster_id: int):
10401061
"instance_role": member.role,
10411062
}
10421063
)
1043-
config_nodes.append(backup_node)
1064+
if len(config.members) > 1:
1065+
config_nodes.append(backup_node)
10441066
self.payload["mongos_nodes"] = mongos_nodes
10451067
self.payload["shards_nodes"] = shards_nodes
10461068
self.payload["config_nodes"] = config_nodes

0 commit comments

Comments
 (0)