新部署一套集群,单机多实例部署,当前有四个 label :zone、dc、rack、host,有什么好的方法实现 同一个 Region 的 Leader 以及 follower 不同时出现在一个交换机的一个机器上面
ps:已经尝试设置多层 isolation-level ,但是不行
新部署一套集群,单机多实例部署,当前有四个 label :zone、dc、rack、host,有什么好的方法实现 同一个 Region 的 Leader 以及 follower 不同时出现在一个交换机的一个机器上面
ps:已经尝试设置多层 isolation-level ,但是不行
错误信息指出 isolation-level
的值必须是 location-labels
中定义的一个标签,或者为空。是一个噢
确实是这样,看文档只能设置标签中的一个
其实用 label 就够了。虽然是软限制。
我们有这样的一个场景的需求,3副本:
单机多实例的业务场景下,隔离级别需要设置成 host,因为需要避免同一个 region 的leader 和 follower 同时出现在一个主机上,如下图:
但是对于上游链路来说,同一个交换机可能管理多个主机,如果需要 region 的高可用一个 host 是不符合需求的,如下图:
那么能想到的解决方案如下:
所以想确认一下是否有 rack,host 的隔离级别
label 可以陪着多层。
pd 陪着 和 一律 配置即可。
比如你 pd 和 tikv label 配置:
pd: label : jijia, host
tikv :
jijia1,host1
jijia2,host2
jijia3,host3
只要 jijia 这个 label 符合 节点数大于副本数需求,就会先按照 jijia 来分配 region 副本。
你可以认为就是个 group by jijia,host.
我的意思是,如果有机架变更,那么 tikv 要重新打 label,而重新打 label 则有可能导致一个 region 出现在同一个交换机下,隔离在 host 上就有问题了,解决方案如上,所以 tidb 的隔离不能设置两个吗?
tikv :
jijia1,host1
jijia1,host2
jijia3,host3
你截图中不需要配置 level。按照 label 走就行了吧。
pd-ctl config set isolation-level rack
pd-ctl config set location-labels zone,rack,host
结帖,经过验证发现只设置local-label:zone、dc、rack、host,isolation-level 为空,也可以满足 region 的 Leader 和 Follower 均衡分布,不会出现同一个交换机的不同机器上同时存在 L 和 F 的现象(假设出现,该交换机宕机,则无法从该 Region 读取数据)
请问同一交换机的标签是设置在zone、dc、rack的那层?dc吗?
另外,tidb节点有做相同的标签吗?tidb做了标签之后,可以避免跨交换机访问tikv吗?
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。