【手把手教程】——Zookeeper註冊中心的安裝
安裝zookeeper,如果是使用原始碼則需要進行編譯,如果是release版本的則
直接使用就好。
以下的操作都在linux系統中執行。
1、修改作業系統的/etc/hosts檔案中新增:
# zookeeper servers(註釋)
192.168.137.2 edu-provider-01
*注意:以上的ip地址為自己電腦的ip地址
2、到http://apache.fayea.com/zookeeper/下載zookeeper-3.4.6:
$
wgethttp://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
3、解壓zookeeper安裝包:
$ tar -zxvf zookeeper-3.4.6.tar.gz
4、在/home/user/zookeeper-3.4.6目錄下建立以下目錄:
$ cd /home/user/zookeeper-3.4.6
$ mkdir data
$ mkdir logs
注意:user為所建立的使用者
5、將 zookeeper-3.4.6/conf 目錄下的 zoo_sample.cfg 檔案拷貝一份,命名為為 zoo.cfg
$ cp zoo_sample.cfg zoo.cfg
6、修改zoo.cfg 配置檔案:
$ vi zoo.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=/home/user/zookeeper-3.4.6/datadataLogDir=/home/user/zookeeper-3.4.6/logs
# the port at which the clients will connect
clientPort=2181
#2888,3888 are election port
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 伺服器還沒有收到客戶端的返回資訊,那麼表明這個客戶端連線失敗。總的時間長度就是
5*2000=10 秒。
syncLimit:這個配置項標識 Leader 與 Follower 之間傳送訊息,請求和應答時間長度,最長不能超過多少個tickTime 的時間長度,總的時間長度就是 2*2000=4 秒。
server.A=B:C:D:其中 A 是一個數字,表示這個是第幾號伺服器;B 是這個伺服器的IP地址或/etc/hosts檔案中映射了IP的主機名;C 表示的是這個伺服器與叢集中的 Leader 伺服器交換資訊的埠;D 表示的是萬一叢集中的 Leader 伺服器掛了,需要一個埠來重新進行選舉,選出一個新的 Leader,而這個埠就是用來執行選舉時伺服器相互通訊的埠。如果是偽叢集的配置方式,由於 B 都是一樣,所以不同的 Zookeeper 例項通訊埠號不能一樣,所以要給它們分配不同的埠號。
7、在dataDir=/home/user/zookeeper-3.4.6/data下建立myid檔案
編輯myid檔案,並在對應的IP的機器上輸入對應的編號。如在zookeeper上,myid 檔案內容就是1。如果只在
單點上進行安裝配置,那麼只有一個server.1。
$ vi myid
1
8、user使用者下修改vi /home/user/.bash_profile,增加zookeeper配置:
# zookeeper env exportZOOKEEPER_HOME=/home/wusc/zookeeper-3.4.6 export
PATH=$ZOOKEEPER_HOME/bin:$PATH
使配置檔案生效
$ source /home/wusc/.bash_profile
9、在防火牆中開啟要用到的埠2181、2888、3888 切換到root使用者許可權,執行以下命令:
# chkconfig iptables on
# service iptables start 編輯/etc/sysconfig/iptables # vi /etc/sysconfig/iptables
增加以下3行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -jACCEPT
-AINPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
-A INPUT -mstate --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
重啟防火牆:
# service iptables restart
檢視防火牆埠狀態:
# service iptables status
10、啟動並測試zookeeper(要用wusc使用者啟動,不要用root):
(1)使用wusc使用者到/home/user/zookeeper-3.4.6/bin目錄中執行:
$ zkServer.sh start
(2)輸入jps 命令檢視程序:
$ jps
1456 QuorumPeerMain
1475 Jps
其中,QuorumPeerMain 是 zookeeper 程序,啟動正常
(3)檢視狀態:
$ zkServer.sh status
(4)檢視zookeeper服務輸出資訊:由於服務資訊輸出檔案在/home/user/zookeeper3.4.6/bin/zookeeper.out
$ tail -500f zookeeper.out
11、 停止 zookeeper程序:
$ zkServer.sh stop
12、配置zookeeper開機使用wusc使用者啟動:編輯/etc/rc.local檔案,加入:
su- wusc -c '/home/user/zookeeper-3.4.6/bin/zkServer.sh start'
問題處理:
用以下命令賦予許可權:
chmod 777./zkServer.sh
一般用root管理員許可權去執行命令