Zookeeper之一 安裝和配置(單機+叢集)
這裡我以zookeeper3.4.10.tar.gz來演示安裝,安裝到/usr/local/soft目錄下。
一.單機版配置
1.安裝和配置
#1.下載
wget http://apache.fayea.com/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
#2.解壓
tar -zxvf zookeeper3.4.10.tar.gz
#3.在zookeeper-3.4.10/conf目錄下建立目錄:
mkdir data
mkdir logs
#4.將zookeeper3.4.10/conf目錄下的zoo_sample.cfg 檔案拷貝一份,命名為為zoo.cfg
cp zoo_sample.cfg zoo.cfg
#5.修改zoo.cfg配置檔案
vim zoo.cfg
#修改為上面建立的目錄
dataDir=/usr/local/soft/zookeeper-3.4.10/data
#【該配置項為優化項,用於單獨存放事務日誌。參考官方文件】
dataLogDir=/usr/local/soft/zookeeper-3.4.10/logs
說明:
dataDir是快照儲存的目錄。配置檔案中已經明確說明不要使用/tmp來儲存,/tmp在這裡僅僅是為了演示的目的。
dataLogDir是一個優化項,可以參考官方說明:優化
大意意思是:指明一個明確的事務日誌目錄可以在更新時降低延遲。預設的事務日誌存放位置與data快照和myid檔案存放位置相同。使用dataLogDir引數就可以指定一個不同的目錄。
2.配置環境變數(可選)
配置環境變數後,則可在bin目錄之外直接使用相應的命令。
#開啟配置
vim /etc/profile
#在檔案尾加入以下內容
export ZOOKEEPER_HOME=/usr/local/soft/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin
#重新整理配置
source /etc/profile
3.啟動(不要使用root使用者啟動)
#啟動
zkServer.sh start
#停止
zkServer.sh stop
#檢視執行狀態
zkServer.sh status
執行狀態中standalone表明當前為單節點模式。
4.設定開機啟動(可選。生產環境下需要)
設定開機啟動有兩種方式,分別對應/etc/rc.d目錄下的init.d目錄和rc.local檔案。
說明:
由於linux建立了軟連結init.d -> rc.d/init.d,rc.local -> rc.d/rc.local的緣故,所以/etc/rc.d/init.d可以簡寫為/etc/init.d,同樣/etc/rc.d/rc.local可簡寫為/etc/rc.local
①方式一:開機啟動指令碼
該方式類似於windows的’啟動’目錄,裡面的批處理檔案會在系統啟動後自動執行。對應/etc/rc.d/init.d目錄。
開啟/etc/rc.d/rc.local檔案,加入以下內容
#以非root使用者來啟動指令碼
su - 使用者名稱 -c '/usr/local/soft/zookeeper-3.4.10/zkServer.sh start'
然後,重啟試試。
②方式二:開機自啟動服務服務
另一種是做成開機自啟動服務,這類似於windows中的系統服務,這些服務會在系統啟動時自動啟動。對應/etc/rc.d/rc.local檔案。
#進入/etc/rc.d/init.d目錄
cd /etc/rc.d/init.d
#建立zookeeper檔案(每個服務對應一個檔案),並授予執行許可權
touch zookeeper
chomod +x zookeeper
#編輯zookeeper檔案(建立zookeeper服務)
vim zookeeper
加入如下內容(這裡使用的是root使用者)
#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
case $1 in
start) su root /usr/local/soft/zookeeper-3.4.10/bin/zkServer.sh start;;
stop) su root /usr/local/soft/zookeeper-3.4.10/bin/zkServer.sh stop;;
status) su root /usr/local/soft/zookeeper-3.4.10/bin/zkServer.sh status;;
restart) su root /usr/local/soft/zookeeper-3.4.10/bin/zkServer.sh restart;;
*) echo "require start|stop|status|restart" ;;
esac
#將zookeeper服務新增到開機啟動項
chkconfig –add zookeeper
#檢視開機自啟項中是否已有zookeeper服務
chkconfig --list
#重啟系統試試
#測試服務
service zookeeper start/stop/restart/status
二、配置引數說明
1.tickTime:
Zookeeper伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。tickTime以毫秒為單位。
tickTime=2000
2.initLimit:Leader-Follow初始通訊時限
叢集中的follower伺服器(F)與leader伺服器(L)之間初始連線時能容忍的最多心跳數(tickTime的數量)。啟動有快有慢,超過該值則認為啟動失敗。
initLimit=5
3.syncLimit:LF同步通訊時限
叢集中的follower伺服器與leader伺服器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)。
syncLimit=2
4.dataDir:資料檔案目錄
Zookeeper儲存資料的目錄,預設情況下,Zookeeper將寫資料的日誌檔案也儲存在這個目錄裡。
dataDir=/home/michael/opt/zookeeper/data
5.clientPort:客戶端連線埠
客戶端連線 Zookeeper 伺服器的埠,Zookeeper 會監聽這個埠,接受客戶端的訪問請求。
clientPort=2181
6.伺服器名稱與地址:叢集資訊(伺服器編號,伺服器地址,LF通訊埠,選舉埠)
這個配置項的書寫格式比較特殊,規則如下:
server.N=YYY:A:B
server.1=test05:2888:3888
server.2=test06:2888:3888
server.3=test07:2888:3888
三、叢集版配置
為了高可用,通常會配置zookeeper叢集。Zookeeper叢集中只要有過半的節點是正常的情況下,那麼整個叢集對外就是可用的。正是基於這個特性,要將ZK叢集的節點數量要為奇數(2n+1:如3、5、7個節點)較為合適。
以下是由三臺zookeeper組成的叢集的配置。
1.新增配置
只需要在前面單機配置的基礎上,在配置檔案追加如下內容
#伺服器編號,伺服器地址,Leader-Follow通訊埠,選舉埠
server.1=test01:2888:3888
server.2=test02:2888:3888
server.3=test03:2888:3888
說明:伺服器地址可以直接寫成ip形式,但推薦使用了ip與主機名繫結形式。
只需在/etc/hosts檔案中新增:
# zookeeper servers
192.168.8.88 test01
2.驗證叢集
分別啟動三個zookeeper節點,檢視執行狀態。
zkServer.sh status
如果叢集正常,則三臺zookeeper都不再是standalone模式,而是會有一個leader模式和兩個follower模式。其中leader是由zookeeper的選舉策略選舉產生的。