linux下 zookeeper-3.4.10安裝,命令行基礎命令,過半機制,奇數原則
zookeeper安裝
1.將ZK文件上傳到服務器上
2.執行tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/ 將文件解壓到opt下的module目錄下(根據自己上傳的版本更改命令)
3.移動到model目錄下,進入ZK文件夾中
cd /opt/module/zookeeper-3.4.10/
4.創建zkData文件夾,然後進入conf文件夾
mkdir zkData
cd conf/
5.將zoo_sample.cfg文件重命名爲zoo.cfg
6.打開zoo.cfg文件,將dataDir的值改爲剛剛創建的zkData的路徑
然後在最後增加代碼(主機名改爲自己linux系統對應的主機名,需要注意與hosts文件中的主機名一致)
#######################cluster##########################
server.1=bigdata2:2888:3888
server.2=bigdata1:2888:3888
server.3=bigdata3:2888:3888
7.進入到zkData文件夾中,創建並打開myid文件
在裏面輸入數值,數值與之前在zoo.cfg文件中設定的一致
server.1=bigdata2:2888:3888
8.回退到model目錄中
9.將zookeeper複製到其他linux系統上
scp -r zookeeper-3.4.10/ bigdata1:`pwd`
pwd代表相對路徑,但是我使用之後並沒有往bigdata1中拷貝
於是使用下面的絕對路徑
scp -r zookeeper-3.4.10/ bigdata1:'/opt/module/'
結果:
10.將bigdata1和bigdata3的myid進行修改
11.配置環境變量
export ZK_HOME=/opt/module/zookeeper-3.4.10
export PATH=$PATH:$ZK_HOME/bin
12.檢驗安裝配置成功
輸入zkS然後按tab鍵,如果可以自動將其補全爲zkServer.就代表配置成功
基礎命令
啓動zookeeper(集羣,最少兩個)
zkServer.sh start
查看當前節點的zk狀態
zkServer.sh status
啓動zk客戶端
進入到ZK目錄下
cd /opt/module/zookeeper-3.4.10/
執行zkCli命令
bin/zkCli.sh
顯示所有操作命令:help
普通創建(永久節點):create
獲得節點的值:get path [watch]
設置節點的具體值:set
使用 ls 命令來查看當前znode中所包含的內容
刪除節點:delete和 遞歸刪除節點:rmr
ZK的選舉原理(過半機制,奇數原則)
過半機制:
當ZK集羣中的超過一般的節點都可以正常工作,就代表這個集羣已經啓動了。
當集羣啓動後,會進行全員投票,當某一節點獲得半數及以上的票時,那個節點就會變爲leader節點,其他的節點仍然是follower節點,如果沒有節點獲得半數及以上的票的時候,會進行循環,直到有節點獲得半數及以上的票。這個時候,ZK集羣也就真正的啓動起來了
奇數原則:
在學習ZK的時候,就學習到ZK集羣的節點數最好是一個以上的奇數。那麼爲什麼是奇數呢?
原因1:在進行選舉的時候,如果是偶數,那麼就有可能出現兩個leader,就會出現腦裂的錯誤。
原因2:leaderd的選舉算法採用了paxos協議
paxos核心思想:當多數server寫成功,則任務數據寫成功。如果有3個server則2個寫成功即可,當有4個或5個server,則3個寫成功即可。
如果有3個server,最多允許有一個server掛掉,如果有4個server,則同樣最多允許一個server掛掉,因此,可以看出,3臺服務器和4臺服務器的容災能力是一樣的,爲了節省服務器資源,我們通常採用奇數數量,作爲服務器部署數量。