昨天我們已經把Apache Mesos安裝起來了,但是因為Mesos是Master-Slave的架構,所以會有single point of failure(SPOF)單點故障而造成整個cluster無法正常運作的問題。如果這個問題發生在production的環境就會很嚴重,因此要解決這個問題可以透過整合zookeeper的方式解決此問題。
這裡不介紹zookeeper的架構因為會偏離Mesos這個主題,如果有興趣可以到zookeeper到官網查看。今天的目標是把zookeeper先安裝起來,然後明天再把zookeeper整合到我們在day3安裝好的環境上。
安裝zookeeper的環境佈署架構如下圖:
上圖的架構就是我們今天要實作的部份,主要是一台的實體機器上面會安裝三台VM虛擬機器,然後因為zookeeper需要有奇數的主機數量所以在這裡我先安裝三台的zookeeper。
安裝zookeeper前的準備:
下面的操作步驟每台的虛擬機上都需要做一次
1、下載zookeeper
wget http://apache.stu.edu.tw/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz -P /opt
2、需要先把JDK安裝好我是用JDK7,可以輸入以下指令驗證您的jdk是否有安裝成功
3、安裝ssh server,這樣在傳送檔案上就可以使用scp
指令
yum install openssh-server
啟動ssh
systemctl enable sshd
systemctl start sshd
開始安裝zookeeper:
解壓縮下載完的zookeeper
cd /opt && tar zxvf zookeeper-3.4.6.tar.gz
切換到解壓縮完的目錄內,並切換到conf目錄下,如下圖
之後就可以使用vi打開zoo.cfg,去設定zookeeper
vi zoo.cfg
這裡修改2個部份:
1、dataDir主要是zookeeper用來放資料的地方,改完之後要確認你的系統是否有/var/zookeeper這個目錄的資料夾,而且在每台slave上也要建立。
mkdir –p /var/zookeeper
2、設定了有哪些主機是用來做zookeeper server,值得一提的是server.0的點.0在zookeeper裡稱為myid,需要做如下的設定,不然會在log檔看到找不到myid的檔案錯誤
Example:
在192.168.182.132的這台主機要建立下面的檔案
echo “0”>/var/zookeeper/myid
在192.168.182.130的這台主機要建立下面的檔案
echo “1”> /var/zookeeper/myid
在192.168.182.131的這台主機要建立下面的檔案
echo “2”>/var/zookeeper/myid
當master的設定完zoo.cfg
之後,其它的slave也要按照上面的步驟再做一次,也可以把master設定完的檔案直接複製到slave內。
啟動zookeeper
切換到zookeeper的目錄下,並且執行啟動zookeeper,另外2台的slave也要輸入一樣的指令啟動zookeeper
測試zookeeper是否有安裝成功:
測試的方法有3種
1、輸入jps
確認QuorumPeerMain是否有存在如下圖,如果輸入jps
指令有出錯那有可能是在安裝jdk時環境變數沒有設定正確:
2、執行以下指令確認:
3、執行zookeeper的shell測試:
./zkCli.sh -server 192.168.182.132:2181
紀錄遇到的問題
我有實際的去安裝zookeeper做測試其實這中間我有輸入下面的指令去做測試但是一直發現有Error如下圖。很怕趕不上今天的發文時間差點就開天窗了,還好後來有解出來,問題是在於/var/zookeeper/myid的檔案裡面的編號輸入錯誤,所以這點一定要注意
今天已經把zookeeper安裝完了,如果還是無法啟動的話可以查看log檔的錯誤訊息,它的路徑在zookeeper的目錄下面的bin/zookeeper.out,這對您在解決問題應該會有幫助,明天就可以把今天安裝完的zookeeper整合到之前所安裝的mesos環境內了。
參考資料
Zookeeper官網:https://zookeeper.apache.org/