1. 程式人生 > >【手把手教程】——Zookeeper註冊中心的安裝

【手把手教程】——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管理員許可權去執行命令