1. 程式人生 > >zookeeper手把手搭建偽分佈叢集環境

zookeeper手把手搭建偽分佈叢集環境

zookeeper偽分佈安裝

關於為何zookeeper叢集叢集必須至少3個節點機器的原因,是因為zookeeper叢集提供服務的機制決定的。zookeeper叢集認為超多半數叢集內部機器正常,就認為叢集是正常的,可對外提供協調服務。

1、安裝jdk,在系統變數新增JAVA_HOME
vi /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
儲存後重新整理檔案,使之立刻生效
source /etc/profile
驗證是否生效
java -version
2、download zookeeper安裝程式,解壓安裝包到安裝目錄下

地址http://zookeeper.apache.org/releases.html
3、配置ZK_HOME環境變數
vi /etc/profile
export ZK_HOME=/usr/local/zookeeper
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME
儲存後重新整理檔案,使之立刻生效
source /etc/profile
驗證是否生效
zkServer.sh status
4、新增修改zookeeper配置檔案
/etc/usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
在zoo.cfg中新增配置引數,下面是必須要配置的引數
tickTime=2000
dataDir=/usr/local/data/zookeeper/
dataLogDir=/usr/local/data/zookeeper/
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888

server.3=zoo3:2888:3888

引數解釋:
tickTime為心跳會話超時世間,毫秒單位,如果超過該時間心跳監測沒有迴應(ack),判定該節點已死。
initLimit zookeeper follow和leader進行資料同步容許的最大時長,更具業務需要可調整該引數。
syncLimit 容許zookeeper follow 資料落後leader的最大資料
dataDir zookeeper儲存記憶體資料快照的本地磁碟位置。zookeeper在執行期間會將資料儲存在記憶體中,保證了訪問的時效性。
clientPort 監聽客戶端連線的埠;也即開放給客戶連線的埠
dataLogDir 配置zookeeper儲存事務日誌的地方,不配置預設使用dataDir配置。目的是為了將事務日誌和記憶體資料映象分開儲存
server.x 使用者配置zookeeper叢集伺服器主機列表配置。配置規則server.x=[hostname]:nnnnn[:nnnnn], etc
第一個引數為機器主機名,後面兩個為機器埠引數,例如2888用於和leader的通訊,3888為用於叢集leader的選舉,
注意x為叢集中該機器的編號(叢集中唯一),該配置需要和dataDir目錄下檔案myid中的內容一致,為數字。叢集啟動的時候
會去dataDir目錄下查詢myid,檢查編號是否一致。
5、進入dataDir建立名為myid的檔案,內容為上面server.x配置的對應的編號

6、由於是偽分散式部署。就是在一臺伺服器上面啟動多個zookeeper例項,模擬組成叢集。所以上面zoo.cfg配置要注意,例如你模擬3臺機器,
你就需要配置3個zoo.cfg檔案,名稱可以任意,下面啟動zookeeper例項的時候你指定使用的配置檔案即可。注意偽分佈的時候clientPort需要不同,
server.x的hostname可以是localhost或者是主機名(如果你已經配置的話),但是後面的埠必須不一樣。例如你可以配置為;
server.1=yarn001:2888:3888
server.2=yarn001:2889:3889
server.3=yarn001:2890:3890

7、啟動zookeeper例項

準備工作做好後,啟動.我們在啟動指令碼的時候,制定啟動指令碼使用的cfg配置檔案的名稱和位置(依據你自己配置的位置為準,如果是和預設的cfg在統一目錄,

你可以如下啟動即可)
zkServer.sh start zoo.cfg
zkServer.sh start zoo2.cfg
zkServer.sh start zoo3.cfg
8、驗證是否啟動成功,jps指令,會發現3個QuorumPeerMain程序(個數依據你的例項數配置)
[[email protected] conf]# jps
5055 Jps
4670 QuorumPeerMain
2606 -- process information unavailable
4876 ZooKeeperMain
4650 QuorumPeerMain
4686 QuorumPeerMain
[[email protected] conf]# 

9、驗證leader和follow

zkServer.sh status zoo.cfg
zkServer.sh status zoo2.cfg
zkServer.sh status zoo3.cfg