zookeeper集羣

集羣角色

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,有幾個節點,就寫幾行配置。服務器

  • id:是用來標識當前節點在集羣的機器序號,就是下面的myid文件的內容,這個內容只能是數字,而且範圍爲1-255。
  • host:就是節點的ip地址
  • 第一個port:follow節點與leader節點交換信息的端口
  • 第二個port:選舉leader時,各個節點互相通訊的端口

在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

  • 三機房部署,根據過半設計原則,只要兩個機房的數量,超過一半,那第三個機房不可用,zookeeper集羣仍是可用的。因此假設總數是9,第三個機房因爲不能超過一半,那他就是4,其餘兩個機房就是5的,好比1,4或2,3。這樣任意一個機房不可用,剩餘的兩個機房確定都大於等於5,zookeeper集羣仍是能夠用的。
  • 雙機房部署,這個時候,只能讓好的服務器,多部署節點了
相關文章
相關標籤/搜索