首先在Zookeeper官網下載最新版本,下載后解壓到用戶目錄下。
tar -zxvf zookeeper-3.4.8.tar.gz
重命名conf目錄下zoo_sample.cfg文件為zoo.cfg並且修改其中的配置項
initLimit=10 #默認值
syncLimit=5 #默認值
dataDir=/Users/umgsai/zookeeper/data
dataLogDir=/Users/umgsai/zookeeper/dataLog
server.1=172.24.51.28:2888:3888
其他配置項使用默認值即可。
172.24.51.28為當前機器的IP地址,也可以使用host文件中配置的域名。
2888端口號是zookeeper服務之間通信的端口。
3888端口是zookeeper與其他應用程序通信的端口。
initLimit:配置zookeeper接收客戶端(這里所說的客戶端不是用戶連接zookeeper服務器的客戶端,而是指zookeeper服務器集群中連接到Leader的Follower服務器)初始化連接時最長能忍受多少個心跳時間間隔數。當已經超過10個心跳時間長度后zookeeper服務器還沒有收到客戶端的返回消息,那么表明這個客戶端連接失敗。總的時間長度就是5*2000=10秒。
syncLimit:配置Leader與Follower之間發送消息,請求和應答時間長度最長不能超過多少個ticketTime的時間長度,總的時間長度就是2*2000=4秒。
server.A=B:C: D 其中A是一個數字,表示這是第幾號服務器。B是這台服務器的IP地址。C表示這台服務器與集群中的Leader服務器交換信息的端口。D表示的是萬一集群中的Leader服務器掛了,需要一個端口來重新進行選舉,選出一個新的Leader,這個端口就是用來執行選舉時服務器相互通信的端口。如果是偽集群的配置方式,由於B都是一樣,所以不同的zookeeper實例通信端口號不能一樣,所以要給他們分配不同的端口號。
在dataDir=/Users/umgsai/zookeeper/data 下創建myid文件
編輯myid文件,並在對應的IP的機器上輸入對應的編號。如在zookeeper上,myid文件內容就是1.如果只在單點上進行安裝配置,那么只有一個server.1
添加環境變量
vi /home/umgsai/.bash_profile
添加ZOOKEEPER_HOME配置,添加path=%ZOOKEEPER_HOME%/bin
# zookeeper env
export ZOOKEEPER_HOME=/home/umgsai/zookeeper-3.4.8
export PATH=$ZOOKEEPER_HOME/bin:$PATH
使配置文件生效
source .bash_profile
在防火牆中打開要用到的端口2181 2888 3888
sudo chkconfig iptables on
service iptables start
編輯 /etc/sysconfig/iptables
vi /etc/sysconfig/iptables
增加以下內容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
重啟防火牆
service iptables restart
檢查防火牆狀態
service iptables status
啟動Zookeeper
進入bin目錄下執行
./zkServer.sh start
可以使用jps命令查看進程。
QuorumPeerMain是Zookeeper進程。
查看狀態
./zkServer.sh status
查看zookeeper服務輸出信息,服務信息輸出文件在.../bin/zookeeper.out
tail -500f zookeeper.out
配置zookeeper開始使用umgsai用戶啟動
編輯/etc/rc.local文件。加入以下內容
su - umgsai -c 'home/umgsai/zookeeper-2.4.8/bin/zkServer.sh start'
參考 http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/