Skip to content

Commit d5a9aa0

Browse files
committed
fix(mysql): 修复只读集群部署的flow出现构建失败的问题 #10202
1 parent 8436424 commit d5a9aa0

File tree

2 files changed

+38
-39
lines changed

2 files changed

+38
-39
lines changed

dbm-ui/backend/flow/engine/bamboo/scene/spider/common/common_sub_flow.py

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from backend.flow.plugins.components.collections.common.download_backup_client import DownloadBackupClientComponent
3131
from backend.flow.plugins.components.collections.mysql.clear_machine import MySQLClearMachineComponent
3232
from backend.flow.plugins.components.collections.mysql.clone_user import CloneUserComponent
33+
from backend.flow.plugins.components.collections.mysql.dns_manage import MySQLDnsManageComponent
3334
from backend.flow.plugins.components.collections.mysql.exec_actuator_script import ExecuteDBActuatorScriptComponent
3435
from backend.flow.plugins.components.collections.mysql.sync_master import SyncMasterComponent
3536
from backend.flow.plugins.components.collections.mysql.trans_flies import TransFileComponent
@@ -41,6 +42,7 @@
4142
from backend.flow.utils.base.base_dataclass import Instance
4243
from backend.flow.utils.common_act_dataclass import DownloadBackupClientKwargs
4344
from backend.flow.utils.mysql.mysql_act_dataclass import (
45+
CreateDnsKwargs,
4446
DBMetaOPKwargs,
4547
DelServiceInstKwargs,
4648
DownloadMediaKwargs,
@@ -65,17 +67,17 @@
6567
def add_spider_slaves_sub_flow(
6668
uid: str,
6769
cluster: Cluster,
68-
slave_domain: str,
6970
add_spider_slaves: list,
7071
root_id: str,
7172
parent_global_data: dict,
7273
is_clone_user: bool = True,
74+
slave_domain: str = None,
7375
):
7476
"""
7577
定义对原有的TenDB cluster集群添加spider slave节点的公共子流程
7678
提供部分需要单据使用:比如添加从集群、扩容接入层等功能
7779
@param cluster: 待操作的集群
78-
@param slave_domain: 带添加spider slave节点所要关联的域名
80+
@param slave_domain: 带添加spider slave节点所要关联的域名, 这里参数只针对只读集群的部署
7981
@param add_spider_slaves: 待添加的slave机器列表信息
8082
@param root_id: flow流程的root_id
8183
@param parent_global_data: 本次子流程的对应上层流程的全局只读上下文
@@ -219,30 +221,35 @@ def add_spider_slaves_sub_flow(
219221
)
220222

221223
# 阶段7 添加从域名
222-
# sub_pipeline.add_act(
223-
# act_name=_("添加集群域名"),
224-
# act_component_code=MySQLDnsManageComponent.code,
225-
# kwargs=asdict(
226-
# CreateDnsKwargs(
227-
# bk_cloud_id=cluster.bk_cloud_id,
228-
# add_domain_name=slave_domain,
229-
# dns_op_exec_port=tmp_spider.port,
230-
# exec_ip=[ip_info["ip"] for ip_info in add_spider_slaves],
231-
# )
232-
# ),
233-
# )
234-
entrysub_process = BuildEntrysManageSubflow(
235-
root_id=root_id,
236-
ticket_data=parent_global_data,
237-
op_type=DnsOpType.CREATE,
238-
param={
239-
"cluster_id": cluster.id,
240-
"port": tmp_spider.port,
241-
"add_ips": [ip_info["ip"] for ip_info in add_spider_slaves],
242-
"entry_role": [ClusterEntryRole.SLAVE_ENTRY.value],
243-
},
244-
)
245-
sub_pipeline.add_sub_pipeline(sub_flow=entrysub_process)
224+
if slave_domain:
225+
# 这里针对spider_slave集群部署的场景,从域名是传进来的
226+
sub_pipeline.add_act(
227+
act_name=_("添加集群域名"),
228+
act_component_code=MySQLDnsManageComponent.code,
229+
kwargs=asdict(
230+
CreateDnsKwargs(
231+
bk_cloud_id=cluster.bk_cloud_id,
232+
add_domain_name=slave_domain,
233+
dns_op_exec_port=tmp_spider.port,
234+
exec_ip=[ip_info["ip"] for ip_info in add_spider_slaves],
235+
)
236+
),
237+
)
238+
else:
239+
# 这里是针对扩容spider slave场景,所有的访问映射关系通过元数据获取
240+
entry_sub_process = BuildEntrysManageSubflow(
241+
root_id=root_id,
242+
ticket_data=parent_global_data,
243+
op_type=DnsOpType.CREATE,
244+
param={
245+
"cluster_id": cluster.id,
246+
"port": tmp_spider.port,
247+
"add_ips": [ip_info["ip"] for ip_info in add_spider_slaves],
248+
"entry_role": [ClusterEntryRole.SLAVE_ENTRY.value],
249+
},
250+
)
251+
sub_pipeline.add_sub_pipeline(sub_flow=entry_sub_process)
252+
246253
return sub_pipeline.build_sub_process(sub_name=_("集群[{}]添加spider slave节点".format(cluster.name)))
247254

248255

dbm-ui/backend/flow/engine/bamboo/scene/spider/spider_add_nodes.py

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515

1616
from django.utils.translation import ugettext as _
1717

18-
from backend.db_meta.enums import ClusterEntryRole, TenDBClusterSpiderRole
18+
from backend.db_meta.enums import TenDBClusterSpiderRole
1919
from backend.db_meta.exceptions import ClusterNotExistException
20-
from backend.db_meta.models import Cluster, ClusterEntry
20+
from backend.db_meta.models import Cluster
2121
from backend.flow.engine.bamboo.scene.common.builder import Builder, SubBuilder
2222
from backend.flow.engine.bamboo.scene.spider.common.common_sub_flow import (
2323
add_spider_masters_sub_flow,
@@ -89,15 +89,8 @@ def add_spider_nodes(self):
8989

9090
elif info["add_spider_role"] == TenDBClusterSpiderRole.SPIDER_SLAVE:
9191

92-
try:
93-
# 先判断集群是否存在已添加从集群,如果没有则跳过这次扩容,判断依据是集群是存在有且只有一个的从域名
94-
slave_dns = cluster.clusterentry_set.get(role=ClusterEntryRole.SLAVE_ENTRY)
95-
# 加入spider-slave 子流程
96-
sub_pipelines.append(self.add_spider_slave_notes(sub_flow_context, cluster, slave_dns.entry))
97-
98-
except ClusterEntry.DoesNotExist:
99-
logger.warning(_("[{}]The cluster has not added a slave cluster, skip".format(cluster.name)))
100-
continue
92+
# 加入spider-slave 子流程
93+
sub_pipelines.append(self.add_spider_slave_notes(sub_flow_context, cluster))
10194

10295
else:
10396
# 理论上不会出现,出现就中断这次流程构造
@@ -151,7 +144,7 @@ def add_spider_master_notes(self, sub_flow_context: dict, cluster: Cluster):
151144
)
152145
return sub_pipeline.build_sub_process(sub_name=_("[{}]添加spider-master节点流程".format(cluster.name)))
153146

154-
def add_spider_slave_notes(self, sub_flow_context: dict, cluster: Cluster, slave_dns: str):
147+
def add_spider_slave_notes(self, sub_flow_context: dict, cluster: Cluster):
155148
"""
156149
添加spider-slave节点的子流程流程逻辑
157150
必须集群存在从集群,才能添加
@@ -169,7 +162,6 @@ def add_spider_slave_notes(self, sub_flow_context: dict, cluster: Cluster, slave
169162
root_id=self.root_id,
170163
uid=sub_flow_context["uid"],
171164
parent_global_data=copy.deepcopy(sub_flow_context),
172-
slave_domain=slave_dns,
173165
)
174166
)
175167
# 阶段2 变更db_meta数据

0 commit comments

Comments
 (0)