Leader:为客户端提供读写服务
Follow:为客户端提供读服务
Observer:为客户端提供读服务,不参与投票,也不参与“过半写成功”策略,由于既提高了集群的读性能,又不影响写性能。node
在172.17.0.2中的conf下的zoo.cfg,添加如下三行segmentfault
server.1=172.17.0.2:2888:3888
server.2=172.17.0.3:2888:3888
server.3=172.17.0.4:2888:3888
zoo.cfg配置格式为server.id=host:port:port
,有几个节点,就写几行配置。服务器
在dataDir指定的目录下,建立一个myid文件,内容就是当前节点的server id。进入dataDir目录,查看文件性能
[root@d775e33fffb5 conf]# cd /tmp/zookeeper/
[root@d775e33fffb5 zookeeper]# ls
myid version-2 zookeeper_server.pid
配置observer。
在zoo.cfg中加入下面一行数据设计
peerType=observer
zoo.cfg配置格式为server.id=host:port:port:observer
。
配置完成后,就能够看到对nodes的操做,会同步到其余节点上,这边不作演示了,简单演示命令参考zookeeper安装及简单命令。code
官方建议,集群的个数是奇数,是由于在zookeeper集群中,有一半节点存活,那zookeeper集群就是可用的。
咱们假设当前有5个节点,为了保证可用性,咱们最多容许挂掉2个。
若是当前是6个节点,也仍是运行挂掉2个,由于若是是3个,就没有超过一半的节点存活。
从容灾能力来讲,5个和6个,都是容许2个服务挂掉,可是6就多部署了一个,浪费了资源。server
zookeeper的过半设计原则,很好的解决了单点的问题,可是若是节点都在同一机房的话,仍是会由于不可抵抗的天然因素,致使所有节点不可用,这个时候,咱们就能够多地部署,好比三机房部署,双机房部署。ip