1、 修改作業系統的/etc/hosts檔案中添加:
#zookeeper servers192.168.102.131 edu-provider-01
2、 下載zookeeper
到http://apache.fayea.com/zookeeper/下載zookeeper-3.4.6
在終端中輸入:
# wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
3、 解壓zookeeper安裝包:
# tar –zvxf zookeeper-3.4.6.tar.gz
移動到/usr/local
# mv zookeeper-3.4.6 /usr/local
4、 在/usr/local/ zookeeper-3.4.6下建立一下目錄
資料檔案
# mkdir data
記錄檔
# mkdir logs
5、 將zookeeper/conf目錄下的zoo_sample.cfg拷貝備份一份,命名為zoo_sample_bak.cfg
# cp zoo_sample.cfg zoo_sample_bak.cfg
6、 修改zoo_sample.cfg設定檔,添加上面建立的資料檔案和記錄檔
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial# synchronization phase can take
initLimit=10
# The number of ticks that can pass between# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just# example sakes.#dataDir=/tmp/zookeeper#添加資料目錄和日誌目錄檔案配置
dataDir=/usr/local/zookeeper-3.4.6/data
dataLogDir=/usr/local/zookeeper-3.4.6/logs
# the port at which the clients will connectclientPort=2181# the maximum number of client connections.# increase this if you need to handle more clients#maxClientCnxns=60## Be sure to read the maintenance section of the# administrator guide before turning on autopurge.## http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance## The number of snapshots to retain in dataDir#autopurge.snapRetainCount=3# Purge task interval in hours# Set to "0" to disable auto purge feature#autopurge.purgeInterval=1#添加服務節點,單節點服務,如下:
server.1=
edu-provider-01:2888:3888
其中
2888連接埠號碼是zookeeper服務之間通訊的連接埠號碼
3888連接埠號碼是zookeeper與其他應用程式通訊的連接埠
edu-provider-01: 是在hosts中已經映射了IP的主機名稱
initLimit:這個配置是用來配置zookeeper接受用戶端(這裡所說的用戶端不是使用者串連zookeeper伺服器的用戶端,而是zookeeper伺服器叢集中串連到leader的follower服務)初始化串連時最長能接受多少個心跳時間間隔數。當已經超過10個心跳的時間(也就是tickTime)長度之後zookeeper伺服器還沒有接收到用戶端返回的資訊,那麼表示這個用戶端串連失敗。總時間長度是10*2000=20秒。
syncLimit:這個組態識別leader與follower之間發送訊息,請求和答應時間長度,最長不能超過多少個tickTime的時間長度,總時間長度是5*2000=10秒
server.A=B:C:D:其中A是個數字,表示這個是第幾號伺服器;B表示這個伺服器的ip地址或者/etc/hosts檔案中映射了的ip的主機名稱,C表示的是這個伺服器與叢集中的leader伺服器交換資訊的連接埠;D表示的是萬一叢集中的leader伺服器掛了,需要一個連接埠來重新進行選舉,選出新的leader,而這個連接埠就是用來執行選舉時候伺服器互相通訊的連接埠,如果是偽叢集的配置方式,由於B都是一樣的,所以不同的zookeeper執行個體通訊連接埠號不能一樣,所以要給它們分配不同的連接埠號碼
7、 在/usr/local/zookeeper-3.4.6/data下建立myid檔案
編輯myid檔案,並在對應的ip的機器上輸入對應的編號,如在zookeeper上,nyid檔案內容就是1,如果只在單點上進行安裝配置,那麼只有一個server.1
8、 在/home/admin/.bash_profile中添加環境變數,增加zookeeper配置
Vi /home/admin/.bash_profile#zookeeper cvnexport ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6export PATH=$PATH:$ZOOKEEPER_HOME/bin
(以上是臨時環境變數對目前使用者)
可以在
/etc/profile
Vi /etc/profile
添加
#zookeeper cvnexport ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6export PATH=$PATH:$ZOOKEEPER_HOME/bin#source /etc/profile
source /etc/profile 使環境變數生效
9、 在防火牆中開啟要用到的連接埠號碼 2181 、2888 、3888
在root使用者權限下,執行下面命令
# chkconfig iptables on
#service iptables start
編輯/etc/sysconfig/iptables
# vi /etc/sysconfig/iptables
添加一下三行
-A INPUT -p tcp -m tcp --dport 2181 -j ACCEPT-A INPUT -p tcp -m tcp --dport 2888 -j ACCEPT-A INPUT -p tcp -m tcp --dport 3888 -j ACCEPT
重啟防火牆
service iptables restart
查看防火牆連接埠狀態
service iptables status
10、 啟動並測試zookeeper(不要用root使用者)
(1) 退出root使用者,進入/usr/local/zookeeper-3.4.6/bin
啟動服務:zkServer.sh start
如果出現
Starting zookeeper ... /usr/local/zookeeper-3.4.6/bin/zkServer.sh: line 113: /usr/local/zookeeper-3.4.6/data/zookeeper_server.pid: Permission deniedFAILED TO WRITE PID
說明沒有寫的許可權
進入root使用者,授予許可權
chmod a+rwx /usr/local/zookeeper-3.4.6/data
# exit 退出
重新啟動
啟動成功。
(2)查看啟動狀態是否真的啟動成功
執行以下命令:
zkServer.sh status
如果出現以上Error contacting service. It is probably not running.這表示失敗
查看輸出日誌 在/usr/local/zookeeper-3.4.6/目錄下
執行下面命令:
vi /usr/local/zookeeper-3.4.6/ zookeeper.out
可以查看到錯誤
我這裡原因跟啟動的時候一樣沒有給logs可讀寫權限
執行
chmod a+rwx /usr/local/zookeeper-3.4.6/logs
即可
重新啟動,查看狀態:
啟動成功。
(3)查看zookeeper服務日誌輸出
進入/usr/local/zookeeper-3.4.6/目錄下,執行以下命令
# tail –f zookeeper.out
11、 停止zookeeper服務
# zkServer.sh stop