zookeeper安裝配置

zookeeper安裝配置

安裝

wget命令下載安裝包
tar xvf zookeeper-3.4.8.tar.gz

修改配置文件

cp conf/zoo_sample.cfg conf/zoo.cfg
vi conf/zoo.cfg
將dataDir修改爲自己設定的目錄

啓動

bin/zkServer.sh start
若start指定配置文件,則會啓動相應的機器

停止

bin/zkServer.sh stop

配置僞分佈式集羣

所謂 “僞分佈式集羣” 就是在,在一臺PC中,啓動多個ZooKeeper的實例。“完全分佈式集羣” 是每臺PC,啓動一個ZooKeeper實例。

新建myid文件

~ echo “1” > /opt/zookeeper/zk1/myid
~ echo “2” > /opt/zookeeper/zk2/myid
~ echo “3” > /opt/zookeeper/zk3/myid

配置文件說明

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/opt/zookeeper/zk3
clientPort=2183
server.1=114.215.102.167:2888:3888
server.2=114.215.102.167:2889:3889
server.3=114.215.102.167:2890:3890

單機模式下

  • tickTime:這個時間是作爲 Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。

  • dataDir:顧名思義就是 Zookeeper 保存數據的目錄,默認情況下,Zookeeper 將寫數據的日誌文件也保存在這個目錄裏。

  • clientPort:這個端口就是客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。

集羣模式下

  • 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 地址;C 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端口;D 表示的是萬一集羣中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通信的端口。如果是僞集羣的配置方式,由於 B 都是一樣,所以不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不同的端口號。

  • 除了修改 zoo.cfg 配置文件,集羣模式下還要配置一個文件 myid,這個文件在 dataDir 目錄下,這個文件裏面就有一個數據就是 A 的值,Zookeeper 啓動時會讀取這個文件,拿到裏面的數據與 zoo.cfg 裏面的配置信息比較從而判斷到底是那個 server。

修改配置文件

修改:dataDir,clientPort
增加:集羣的實例,server.X,”X”表示每個目錄中的myid的值
conf/zk1.cfg
conf/zk2.cfg
conf/zk3.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=/opt/zookeeper/zk3
# the port at which the clients will connect
clientPort=2183
server.1=114.215.102.167:2888:3888
server.2=114.215.102.167:2889:3889
server.3=114.215.102.167:2890:3890

啓動集羣

bin/zkServer.sh start zk1.cfg
bin/zkServer.sh start zk2.cfg
bin/zkServer.sh start zk3.cfg
若啓動的服務器數量沒有大於等於總數的1/2,調用status命令則會出現Error contacting service. It is probably not running.錯誤

查看節點狀態

bin/zkServer.sh status zk1.cfg
如果出現如下信息:

ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper348/bin/../conf/zk1.cfg
Error contacting service. It is probably not running.

請檢查zk1.cfg配置文件是否正確填寫,如server ip地址是否正確,端口號是否被佔用,dataDir路徑是否存在等

終止節點

bin/zkServer.sh stop zk1.cfg

連接zookeeper服務器

bin/zkCli.sh -server 114.215.102.167:2181

zookeeper常用命令

輸入:help
ZooKeeper -server host:port cmd args
        connect host:port
        get path [watch]
        ls path [watch]
        set path data [version]
        rmr path
        delquota [-n|-b] path
        quit
        printwatches on|off
        create [-s] [-e] path data acl
        stat path [watch]
        close
        ls2 path [watch]
        history
        listquota path
        setAcl path acl
        getAcl path
        sync path
        redo cmdno
        addauth scheme auth
        delete path [version]
        setquota -n|-b val path
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章