Skip to content

fix(mysql): 调整spider对clb访问连接的处理 #10072 #10095

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 16, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def add_spiders(
cluster: Optional[Cluster],
spiders: Optional[List],
spider_role: Optional[TenDBClusterSpiderRole],
domain_entry: Optional[ClusterEntry] = None,
domain_entry_list: List[ClusterEntry],
):
"""
添加spider节点元信息, 包括spider不同角色的添加
Expand All @@ -48,8 +48,7 @@ def add_spiders(
# receiver是代表slave实例对象
shard_info.storage_instance_tuple.receiver.proxyinstance_set.add(*spiders_objs)

if not spider_role == TenDBClusterSpiderRole.SPIDER_MNT:
# 非运维节点添加域名映射
for domain_entry in domain_entry_list:
domain_entry.proxyinstance_set.add(*spiders_objs)

# 直到这里才有明确的 db module
Expand Down
35 changes: 19 additions & 16 deletions dbm-ui/backend/db_meta/api/cluster/tendbcluster/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,19 +177,19 @@ def add_spiders(
spider_role: Optional[TenDBClusterSpiderRole],
resource_spec: dict,
is_slave_cluster_create: bool,
domain: str = None,
new_slave_domain: str = None,
):
"""
对已有的集群添加spider的元信息
因为从集群添加的行为spider-slave扩容行为基本类似,所以这里作为一个公共方法,对域名处理根据不同单据类型做不同的处理
@param cluster_id: 待关联的集群id
@param creator: 提单的用户名称
@param spider_version: 待加入的spider版本号(包括小版本信息)
@param domain: 待关联的域名
@param add_spiders: 待加入的spider机器信息
@param spider_role: 待加入spider的角色
@param resource_spec: 待加入spider的规格
@param is_slave_cluster_create: 代表这次是否是添加从集群
@param new_slave_domain: 如果是添加从集群场景,这里代表新的从域名信息
"""
cluster = Cluster.objects.get(id=cluster_id)

Expand Down Expand Up @@ -226,26 +226,29 @@ def add_spiders(
# 新增的实例继承cluster集群的时区设置
spider_objs = api.proxy_instance.create(proxies=spiders, creator=creator, time_zone=cluster.time_zone)

cluster_entry_list = []
# 判断is_slave_cluster_create参数,如果是True则代表做从集群添加,需要添加从域名元信息;如果False则代表spider扩容
if is_slave_cluster_create:
api.cluster.tendbcluster.slave_cluster_create_pre_check(slave_domain=domain)
cluster_entry = ClusterEntry.objects.create(
cluster=cluster,
cluster_entry_type=ClusterEntryType.DNS,
entry=domain,
creator=creator,
role=ClusterEntryRole.SLAVE_ENTRY.value,
)
api.cluster.tendbcluster.slave_cluster_create_pre_check(slave_domain=new_slave_domain)
cluster_entry_list = [
ClusterEntry.objects.create(
cluster=cluster,
cluster_entry_type=ClusterEntryType.DNS,
entry=new_slave_domain,
creator=creator,
role=ClusterEntryRole.SLAVE_ENTRY.value,
)
]
else:
if domain:
cluster_entry = cluster.clusterentry_set.get(entry=domain)
else:
# 运维节点添加不需要做域名映射
cluster_entry = None
# 扩容spider的节点处理
if spider_role == TenDBClusterSpiderRole.SPIDER_MASTER:
cluster_entry_list = list(cluster.clusterentry_set.filter(role=ClusterEntryRole.MASTER_ENTRY))
elif spider_role == TenDBClusterSpiderRole.SPIDER_SLAVE:
cluster_entry_list = list(cluster.clusterentry_set.filter(role=ClusterEntryRole.SLAVE_ENTRY))

# 录入集群相关信息
api.cluster.tendbcluster.add_spiders(
cluster=cluster, spiders=spiders, domain_entry=cluster_entry, spider_role=spider_role
cluster=cluster, spiders=spiders, domain_entry_list=cluster_entry_list, spider_role=spider_role
)

# spider主机转移模块、添加对应的服务实例
Expand Down
17 changes: 6 additions & 11 deletions dbm-ui/backend/flow/utils/spider/spider_db_meta.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

from backend.db_meta.api.cluster.tendbcluster.handler import TenDBClusterClusterHandler
from backend.db_meta.api.cluster.tendbcluster.remotedb_node_migrate import TenDBClusterMigrateRemoteDb
from backend.db_meta.enums import ClusterEntryRole, InstanceStatus, MachineType, TenDBClusterSpiderRole
from backend.db_meta.enums import InstanceStatus, MachineType, TenDBClusterSpiderRole
from backend.db_meta.models import Cluster, ProxyInstance, StorageInstance
from backend.flow.utils.dict_to_dataclass import dict_to_dataclass
from backend.flow.utils.spider.spider_act_dataclass import ShardInfo
Expand Down Expand Up @@ -89,16 +89,16 @@ def tendb_cluster_slave_apply(self):
"cluster_id": self.global_data["cluster_id"],
"creator": self.global_data["created_by"],
"spider_version": self.global_data["spider_version"],
"domain": self.global_data["slave_domain"],
"add_spiders": self.global_data["spider_slave_ip_list"],
"spider_role": TenDBClusterSpiderRole.SPIDER_SLAVE,
"resource_spec": self.global_data["resource_spec"],
"is_slave_cluster_create": True,
"new_slave_domain": self.global_data["slave_domain"],
}
TenDBClusterClusterHandler.add_spiders(**kwargs)
return True

def add_spider_nodes(self, spider_role: Optional[TenDBClusterSpiderRole], domain: str = None):
def add_spider_nodes(self, spider_role: Optional[TenDBClusterSpiderRole]):
"""
对已有的TenDB cluster集群 (spider集群)扩容写入的公共方法
"""
Expand All @@ -108,7 +108,6 @@ def add_spider_nodes(self, spider_role: Optional[TenDBClusterSpiderRole], domain
"cluster_id": self.global_data["cluster_id"],
"creator": self.global_data["created_by"],
"spider_version": self.global_data["spider_version"],
"domain": domain,
"add_spiders": self.global_data["spider_ip_list"],
"spider_role": spider_role,
"resource_spec": self.global_data.get("resource_spec") or default_spider_spec,
Expand All @@ -121,17 +120,13 @@ def add_spider_slave_nodes_apply(self):
"""
对已有的TenDB cluster集群 (spider集群)扩容spider-slave节点
"""
cluster = Cluster.objects.get(id=self.global_data["cluster_id"])
slave_dns = cluster.clusterentry_set.get(role=ClusterEntryRole.SLAVE_ENTRY).entry
self.add_spider_nodes(spider_role=TenDBClusterSpiderRole.SPIDER_SLAVE, domain=slave_dns)
self.add_spider_nodes(spider_role=TenDBClusterSpiderRole.SPIDER_SLAVE)

def add_spider_master_nodes_apply(self):
"""
对已有的TenDB cluster集群 (spider集群)扩容spider-master节点
"""
cluster = Cluster.objects.get(id=self.global_data["cluster_id"])
master_dns = cluster.clusterentry_set.get(role=ClusterEntryRole.MASTER_ENTRY).entry
self.add_spider_nodes(spider_role=TenDBClusterSpiderRole.SPIDER_MASTER, domain=master_dns)
self.add_spider_nodes(spider_role=TenDBClusterSpiderRole.SPIDER_MASTER)

def reduce_spider_nodes_apply(self):
"""
Expand Down Expand Up @@ -159,7 +154,7 @@ def add_spider_mnt(self):
"""
对已有的TenDB cluster集群 (spider集群)扩容spider-mnt节点
"""
self.add_spider_nodes(spider_role=TenDBClusterSpiderRole.SPIDER_MNT, domain=None)
self.add_spider_nodes(spider_role=TenDBClusterSpiderRole.SPIDER_MNT)

def remote_switch(self):
"""
Expand Down