這里我以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的選舉策略選舉產生的。