Zookeeper偽叢集的搭建
阿新 • • 發佈:2018-12-25
Zookeeper偽叢集的搭建
1.選擇自己需要的版本號進行下載
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
注意:Zookeeper是需要依賴jdk的,所以你的主機要安裝上jdk
2.解壓
[[email protected] tools]# tar -zxvf zookeeper-3.4.9.tar.gz
3. 分別建立三個data(d_1,d_2,d_3)目錄和logs(log_1,log_2,log_3)目錄用來分別存放三個Zookeeper 的資料和日誌資訊
4.進入zk中的conf目錄下 分別 複製配置檔案zoo_sample.cfg 為zoo1.cfg,zoo2.cfg,zoo3.cfg來作為三個Zookeeper的的配置檔案
[[email protected] conf]# cp zoo_sample.cfg zoo1.cfg
[[email protected] conf]# cp zoo_sample.cfg zoo2.cfg
[[email protected] conf]# cp zoo_sample.cfg zoo3.cfg
5. 分別對zoo1.cfg、2、3檔案進行編輯
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/home/tools/zookeeper-3.4.9/data/d_1 dataLogDir=/home/tools/zookeeper-3.4.9/logs/log_1 # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1 server.1=127.0.0.1:2187:2887 server.2=127.0.0.1:2188:2888 server.3=127.0.0.1:2189:2889
如圖:zoo1.cfg
Zoo2.cfg
Zoo3.cfg
這幾個引數主要是注意一下:
- dataDir zk 的放置一下資料的目錄如版本號,id 等等,所以每一個節點都區分一下如,/home/tools/zookeeper-3.4.9/data/d_1
- clientPort 接受客戶端請求的埠,每個節點都需要不一樣。如:2181
- server.X 這個數字就是對應 data/myid中的數字。你在3個server的myid檔案中分別寫入了1,2,3,那麼每個server中的zoo.cfg都配server.1,server.2,server.3就OK了。因為在同一臺機器上,後面連著的2個埠3個server都不要一樣,否則埠衝突,其中第一個埠用來叢集成員的資訊交換,第二個埠是在leader掛掉時專門用來進行選舉leader所用。
6.分別在/home/tools/zookeeper-3.4.9/data/d_1,2,3目錄下建立myid檔案Myid檔案的內容分別對應配置檔案中server.1 和server.2 server.3 中的數字1,2,3
echo '1' myid (要進去/home/tools/zookeeper-3.4.9/data/d_1這個目錄下)
echo '2' myid
echo '3' myid
7.進入bin目錄下輸入命令 分別進行啟動
[[email protected] bin]# ./zkServer.sh start ../conf/zoo1.cfg
[[email protected] bin]# ./zkServer.sh start ../conf/zoo2.cfg
[[email protected] bin]# ./zkServer.sh start ../conf/zoo3.cfg
8.檢視Zookeeper的狀態
[[email protected] bin]# ./zkServer.sh status ../conf/zoo3.cfg
[[email protected] bin]# ./zkServer.sh status ../conf/zoo2.cfg
[[email protected] bin]# ./zkServer.sh status ../conf/zoo1.cfg
或者使用jps檢視是否啟動了三個。
到此Zookeeper的偽叢集搭建就完畢了。
Zoo.cfg 引數
角色:
- Leader:Leader 作為整個 ZooKeeper 叢集的主節點,負責響應所有對 ZooKeeper 狀態變更的請求。它會將每個狀態更新請求進行排序和編號,以便保證整個叢集內部訊息處理的 FIFO,寫操作都走 leader
- Follower :Follower 的邏輯就比較簡單了。除了響應本伺服器上的讀請求外,follower 還要處理leader 的提議,並在 leader 提交該提議時在本地也進行提交。 另外需要注意的是,leader 和 follower 構成 ZooKeeper 叢集的法定人數,也就是說,只有他們才參與新 leader的選舉、響應 leader 的提議。
- Observer :如果 ZooKeeper 叢集的讀取負載很高,或者客戶端多到跨機房,可以設定一些 observer伺服器,以提高讀取的吞吐量。Observer 和 Follower 比較相似,只有一些小區別:首先observer 不屬於法定人數,即不參加選舉也不響應提議;其次是 observer 不需要將事務持久化到磁碟,一旦 observer 被重啟,需要從 leader 重新同步整個名字空間。
Zookeeper 特性:
- Zookeeper 是一個由多個 server 組成的叢集
- 一個 leader,多個 follower
- 每個 server 儲存一份資料副本
- 全域性資料一致
- 分散式讀 follower,寫由 leader 實施
- 更新請求轉發,由 leader 實施
- 更新請求順序進行,來自同一個 client 的更新請求按其傳送順序依次執行
- 資料更新原子性,一次資料更新要麼成功,要麼失敗
- 全域性唯一資料檢視,client 無論連線到哪個 server,資料檢視都是一致的實時性,在一定事件範圍內,client 能讀到最新資料