ZooKeeper双机房部署方案讨论
背景
对于ZK集群,理论上至少三个机房才能真正做到跨机房容灾。但在实际环境中,由于成本的原因,大多中小公司采用双机房部署的方案,存在两种形式。
方案一:非对等部署
非对等部署:投入更多的资源重点维护某个机房,如下图所示。
优点
- 集群总量可为奇数,容错性更好;
- 有一定的跨机房容灾能力,机房B挂掉认可正常运行;
缺点
- 存在数据丢失的可能(机房A被毁,且Master在机房A时);
方案二:对等部署
对等部署:两个机房的资源分配是对等的,如下图所示。
优点
- 保证数据的不丢失;
缺点
- 没有跨机房容灾能力,任意一个机房挂掉,ZK集群不可用;
- 写性能不如非对等部署方案;
- 集群数量为偶数,容错性不如非对等方案;