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