Open xiaohuazi123 opened 4 years ago
可以说pacemaker和corosync是Linux目前默认的通用ha方案。 “通用”就是说它适用于各种组件,web,app,db。但是,一些组件为了追求极致的效果,还是会发展出自己的定制HA方案,特别是数据库。比如PG就有很多专门的ha方案,partroni,repmgr等等。
pacemaker和corosync确实非常强大,但是需要注意corosync不是采用的强一致的协议(强一致的协议的例子是paxos,raft),用在数据库上务必要注意防止脑裂。另外pacemaker和corosync内部逻辑比较复杂,学习成本很高,如果遇到奇怪的问题排错比较费精力。这两点是pacemaker+corosync的短板。(pha4pgsql所用pgsql ra会把每个失败的错误原因显示在状态里,一定程度上减轻了从大量pacemaker日志中分析错误的痛苦)
pacemaker+corosync如果能做到足够可靠,用户是不需要关心其内部逻辑的。就像etcd一样,etcd日志里的那些消息估计很多人也看不懂,但是etcd非常可靠,一般情况下用户不需要了解太多内部细节。pacemaker和corosync的可靠性应该也是不断增强的,mssql使用pacemaker和corosync构建HA也佐证了这一点。
可以说pacemaker和corosync是Linux目前默认的通用ha方案。 “通用”就是说它适用于各种组件,web,app,db。但是,一些组件为了追求极致的效果,还是会发展出自己的定制HA方案,特别是数据库。比如PG就有很多专门的ha方案,partroni,repmgr等等。
pacemaker和corosync确实非常强大,但是需要注意corosync不是采用的强一致的协议(强一致的协议的例子是paxos,raft),用在数据库上务必要注意防止脑裂。另外pacemaker和corosync内部逻辑比较复杂,学习成本很高,如果遇到奇怪的问题排错比较费精力。这两点是pacemaker+corosync的短板。(pha4pgsql所用pgsql ra会把每个失败的错误原因显示在状态里,一定程度上减轻了从大量pacemaker日志中分析错误的痛苦)
pacemaker+corosync如果能做到足够可靠,用户是不需要关心其内部逻辑的。就像etcd一样,etcd日志里的那些消息估计很多人也看不懂,但是etcd非常可靠,一般情况下用户不需要了解太多内部细节。pacemaker和corosync的可靠性应该也是不断增强的,mssql使用pacemaker和corosync构建HA也佐证了这一点。
@ChenHuajun 大佬,能不能再问个问题? pgsql的其他高可用方案partroni,repmgr 现在比较推荐的是用partroni + etcd/consul/zookeeper 然后比较少人用repmgr,国内好像只有平安科技在用,我也听朋友说repmgr会出现脑裂还是什么的 我想问的是,partroni + etcd/consul/zookeeper是不是目前pgsql高可用的最简单最可靠的ha方案?
因为本人之前做mssql的,现在新项目也会用pgsql和mysql 至于mssql,其实mssql2017之前的ha方案是用的Windows的wsfc(Windows Server 故障转移群集)来做仲裁和底层故障转移的 从mssql2017开始支持在Linux上run之后,由于Linux上没有wsfc,所以微软用开源第三方的pacemaker和corosync代替 因为mssql的功能一直以傻瓜著称,配置简单,可靠性有保障
一旦用了pacemaker和corosync方案,本身这两个软件不是微软自家开发的,而且配置复杂,所以我觉得mssql会在这方面失去优势
partroni + etcd/consul/zookeeper比repmgr和pacemaker+corosync可靠性应该要高。至于是不是"最简单",可能不同人有不同看法吧。
"mssql会在这方面失去优势",我觉得这个未必。pacemaker和corosync是一个通用的HA框架,在这个框架下,厂商可以做深度定制的,看厂商功力了。
partroni + etcd/consul/zookeeper比repmgr和pacemaker+corosync可靠性应该要高。至于是不是"最简单",可能不同人有不同看法吧。
"mssql会在这方面失去优势",我觉得这个未必。pacemaker和corosync是一个通用的HA框架,在这个框架下,厂商可以做深度定制的,看厂商功力了。
非常感谢陈老师解答! 但是目前微软还没有推出安装套件,需要用户自己去折腾pacemaker和corosync 所以够蛋疼的
您好,本人是搞mssql的,从mssql2017开始,mssql支持在Linux上运行 然后 mssql在Linux的高可用方案变为 pacemaker和corosync 上搭建alwayson可用性组 请问pacemaker和corosync 是Linux标准的ha方案吗 如果楼主对微软有了解就知道,mssql会自带自己的ha方案,自带的ha方案都是微软自己实现的底层基础设施,用户不再需要考虑其他的ha方案 并且微软自带的ha方案都非常完善和傻瓜,而微软选择 第三方的pacemaker和corosync 而不是自己实现的ha底层基础设施
那就是说pacemaker和corosync 已经非常完善了,非常强大了,所以微软选择了pacemaker和corosync 而不再在Linux上造轮子?