ZooKeeper入门(五)配置集群和选举机制
一. 配置集群
1. 準(zhǔn)備多臺(tái)ZooKeeper服務(wù)器? ?
2. 配置ZooKeeper服務(wù)器
在每臺(tái)服務(wù)器的conf/zoo.cfg文件中添加如下內(nèi)容:
server.20=192.168.4.20:2888:3888
server.21=192.168.4.21:2888:3888
server.22=192.168.4.22:2888:3888
格式: server.A=B:C:D
A表示這臺(tái)服務(wù)器的編號(hào)ID,是一個(gè)數(shù)字
B表示服務(wù)器的IP地址或域名
C表示這臺(tái)服務(wù)器與集群中的Leader交換信息時(shí)使用的端口
D表示執(zhí)行選舉Leader服務(wù)器時(shí)互相通信的端口
3. 創(chuàng)建myid配置文件
在集群環(huán)境下,需要在dataDir 目錄中創(chuàng)建一個(gè)名為myid 的文件,文件內(nèi)容是當(dāng)前服務(wù)器的編號(hào)
ID,即上面配置的A
cd data
echo A的值 > myid
ZooKeeper啟動(dòng)時(shí)會(huì)讀取這個(gè)文件,將里面的數(shù)字與zoo.cfg中配置的server.A進(jìn)行比較,從而判斷這臺(tái)服務(wù)器是哪個(gè)
4.開啟zookeeper
開啟3臺(tái)虛擬機(jī)的zookeeper程序
/usr/local/zookeeper/bin/zkServer.sh start
開啟成功后查看zookeeper集群的狀態(tài)
/usr/local/zookeeper/bin/zkServer.sh status
出現(xiàn)Mode:follower或是Mode:leader則代表成功
二:集群特性
- 一個(gè)ZooKeeper集群中,有一個(gè)領(lǐng)導(dǎo)者Leader和多個(gè)跟隨者Follower
- Leader負(fù)責(zé)進(jìn)行投票的發(fā)起和決議,更新系統(tǒng)狀態(tài)
- Follower用于接收客戶端的請(qǐng)求并向客戶端返回結(jié)果,在選舉Leader過(guò)程中參與投票
- 半數(shù)機(jī)制:可用節(jié)點(diǎn)數(shù)量>總節(jié)點(diǎn)數(shù)量/2
- 全局?jǐn)?shù)據(jù)一致:集群中每臺(tái)服務(wù)器保存一份相同的數(shù)據(jù)副本,不論客戶端連接到哪個(gè)服務(wù)器,數(shù)據(jù)都是
一致的 - 更新請(qǐng)求順序執(zhí)行:來(lái)自同一個(gè)客戶端的更新請(qǐng)求,按其發(fā)送順序依次執(zhí)行
- 數(shù)據(jù)更新的原子性:一次數(shù)據(jù)更新,要么成功,要么失敗
- 實(shí)時(shí)性:在一定的時(shí)間范圍內(nèi),客戶端能讀取到最新數(shù)據(jù)
?
三:選舉機(jī)制
?
ZooKeeper在提供服務(wù)時(shí)會(huì)自動(dòng)選舉一個(gè)節(jié)點(diǎn)服務(wù)器作為L(zhǎng)eader,其他都是Follower
選舉流程:
總結(jié):
?
- 每個(gè)服務(wù)器在啟動(dòng)時(shí)都會(huì)選擇自己,然后將投票信息發(fā)送出去
- 服務(wù)器編號(hào)ID越大,在選擇算法中的權(quán)重越大
- 投票數(shù)必須過(guò)半,才能選出Leader
- 誰(shuí)是Leader:啟動(dòng)順序的前集群數(shù)/2+1 個(gè)服務(wù)器中,id值最大的會(huì)成為L(zhǎng)eader?
總結(jié)
以上是生活随笔為你收集整理的ZooKeeper入门(五)配置集群和选举机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 快手极速版能赚钱吗(上的快手极速版)
- 下一篇: Kafka集群环境搭建