-
Notifications
You must be signed in to change notification settings - Fork 71
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
对增加数据中心/机房配置项的探讨 #1
Comments
对于这个问题一个方面是避免跨机房的节点发起选举,另一方面,跨机房部署cluster可能会有潜在不稳定因素(比如机房间网络波动)导致集群发生不正确的跨机房切换。
我持相反观点,对于上规模的环境来说,自动化可以大大减轻运维压力,很多人害怕自动化,可能是缺少足够的了解,redis cluster中对于人工干预几乎都可以使用命令来实现,你在用途中提到
如果只是搬迁集群的话我们只需要 :
这个步骤中其实没有依赖dc_id功能,需要dc_id的主要是机房切换,这个是公司决策需要(因为某种原因,需要立即切走) ,所以跨机房部署本身只是一种容灾。 回到前面的问题。
这个我觉得并不存在,前面也提到可以手动failover。
手动failover 其实就是直接开始介入 step 2,并没有特别神秘的地方 写在最后 以上仅代表个人观点,欢迎探讨~ 手动at一下作者吧 @JingchengLi |
这块的实现是按照redis作者antirez的想法实现的,可以参考: 另外,datacenter-id中的datacenter只是一个名称而已,按你的例子,在实际配置时,也可以将相同交换机下面的机器配置为相同的datacenter-id。 实际上,这个多机房支持的功能要解决的问题就是redis cluster“过于”自动化的问题,因为机房间的脑裂问题一旦发生,那结果可能是灾难性的。通过这个PR,就可以实现A机房节点提供服务,而B机房节点只作为从节点进行实时同步,并且B机房节点不参与自动failover。只在有必要时(A机房维护/断电),才通过运维组件将服务切换到B机房。 |
@zts1993 相同观点的略过了哈
这个观点不赞同,可以手动failover不代表就“友好”了,此项目增加配置项datacenter-id就是解决人工干预不友好的一个例子么?当然“友好”也没有什么标准,仁者见仁吧,只是表达一下看法而已。
个人观点,期待反馈~ |
我觉现在就是可以使用“人工干预”也可以使用“自动化”的,但是我感觉您的意思是: cluster 既要支持自动切换也要可以同时支持完全手动切换? (或者说手动切换在特殊情况下作为一种降级模式)? 可以展开说下人工干预友好可以举个例子么? |
不好意思,我用中文表达了啊,不同意见互相交流下。
问题描述:redis在集群工作时,一个从节点发现自己的主节点进入下线状态时将进行故障转移。故障转移即是发生故障主节点的所有从节点进行选主(Raft算法领头选举)。您是觉得对于部署在和主节点不同机房的从节点被选中后跨机房通信会对性能有影响,所以增加了datacenter-id这个配置项。
我的理解:我觉得这个问题只是一个使用过程中的具体问题,如果用数据中心/机房做配置项,再来一个需求:一个机房内部不同交换机/子网之间有没有必要再增加配置项(这个例子可能不恰当,毕竟机房内部延迟足够小),我的意思是redis作为一个软件产品需要抽象具体需求来给出解决方案,所以代码层面有数据中心(机房)类似的代码是有些狭义了
延伸:其实我觉得redis cluster对于用户来说最大的问题是运维问题,过于“自动化”,对人工干预不友好,这也是好多用户不敢用的原因。我觉得在所有从节点进行Raft算法选主前应该先判断一下有没有被人工干预指定为主节点的配置项(配置信息所有从节点信息是经过同步一致的),如果有配置信息,则此从节点单独参选主节点,所有从节点都没有则大家一起参选。
用途:1.解决跨机房节点被选主带来性能问题
2.人为干预,可以平移整个集群到另一个机房(实现集群的平移)
3.使得不同机房的从(备)节点更加有实际意义
The text was updated successfully, but these errors were encountered: