1. 程式人生 > >zookeeper偽集群安裝

zookeeper偽集群安裝

tar.gz 所有 臨時 mce tps star 個數字 cluster 修改配置

記錄下zookeeper偽分布式搭建的過程,假設系統已經配置好了JAVA環境。

1.準備環境

  linux服務器一臺,下載某個版本的zookeeper壓縮包,下載鏈接:http://apache.claz.org/zookeeper/zookeeper-3.5.3-beta/zookeeper-3.5.3-beta.tar.gz

2.生成多個節點

  因為是偽分布式環境,所以是在一臺機器上搭建多個節點。在/data/zk/目錄下生成三個文件夾,分別為:zk0,zk1,zk2,將上面下載的壓縮包拷貝進各個文件夾並解壓,解壓時註意,最好不要帶z參數,不然可能會報錯。

3.修改配置文件

  先由模板生成配置文件:

  cp /data/zk/zk0/zookeeper-3.5.3-beta/conf/zoo_sample.cfg /data/zk/zk0/zookeeper-3.5.3-beta/conf/zoo.cfg

  cp /data/zk/zk1/zookeeper-3.5.3-beta/conf/zoo_sample.cfg /data/zk/zk1/zookeeper-3.5.3-beta/conf/zoo.cfg

  cp /data/zk/zk2/zookeeper-3.5.3-beta/conf/zoo_sample.cfg /data/zk/zk2/zookeeper-3.5.3-beta/conf/zoo.cfg

  修改配置文件,增加以下部分

  dataDir=/data/zk/zk0/zookeeper-3.5.3-beta/data(註意每個配置文件中zk*的路徑不同)

  clientPort=2181(zk0是2181,zk1是2182,zk2是2183,端口不能重復否則啟動時會出現端口已被占用錯誤。)

  4lw.commands.whitelist=*(此配置是支持四字節命令的,線上環境慎重添加,可能會帶來安全問題,不開次配置不能使用下面的telnet命令)

  server.0=127.0.0.1:2880:3880

  server.1=127.0.0.1:2881:3881
  server.2=127.0.0.1:2882:3882

  server.A=B:C:D 其中 A 是一個數字,就是myid裏的那個數字,表示這個是第幾號服務器;B 是這個服務器的 ip 地址,C和D是兩個端口,C、D兩個端口相互也不能重復(僅限偽分布式模式下)。

4.生成myid文件,偽分布式模式下通過此文件id來區分每個節點,所以值不能重復

  mkdir /data/zk/zk0/zookeeper-3.5.3-beta/data

  echo 0 > /data/zk/zk0/zookeeper-3.5.3-beta/data/myid

  mkdir /data/zk/zk1/zookeeper-3.5.3-beta/data

  echo 1 > /data/zk/zk1/zookeeper-3.5.3-beta/data/myid

  mkdir /data/zk/zk2/zookeeper-3.5.3-beta/data

  echo 2 > /data/zk/zk2/zookeeper-3.5.3-beta/data/myid

5.啟動

  /data/zk/zk0/zookeeper-3.5.3-beta/bin/zkServer.sh start /data/zk/zk0/zookeeper-3.5.3-beta/conf/zoo.cfg
  /data/zk/zk1/zookeeper-3.5.3-beta/bin/zkServer.sh start /data/zk/zk1/zookeeper-3.5.3-beta/conf/zoo.cfg
  /data/zk/zk2/zookeeper-3.5.3-beta/bin/zkServer.sh start /data/zk/zk2/zookeeper-3.5.3-beta/conf/zoo.cfg

  正常情況會輸出:Starting zookeeper ... STARTED

  最好是將節點全啟動起來之後在進行連接等操作。

6.檢查各個節點的狀態

  /data/zk/zk0/zookeeper-3.5.3-beta/bin/zkServer.sh status
  /data/zk/zk1/zookeeper-3.5.3-beta/bin/zkServer.sh status
  /data/zk/zk2/zookeeper-3.5.3-beta/bin/zkServer.sh status

  正常會輸出:

    ZooKeeper JMX enabled by default
    Using config: /data/zk/zk0/zookeeper-3.5.3-beta/bin/../conf/zoo.cfg
    Client port found: 2181. Client address: localhost.
    Mode: follower(follower表示角色)

7.查看節點狀態、關閉節點

  /data/zk/zk0/zookeeper-3.5.3-beta/bin/zkServer.sh status
  /data/zk/zk1/zookeeper-3.5.3-beta/bin/zkServer.sh status
  /data/zk/zk2/zookeeper-3.5.3-beta/bin/zkServer.sh status

  /data/zk/zk0/zookeeper-3.5.3-beta/bin/zkServer.sh stop
  /data/zk/zk1/zookeeper-3.5.3-beta/bin/zkServer.sh stop
  /data/zk/zk2/zookeeper-3.5.3-beta/bin/zkServer.sh stop

8.client連接測試

  /data/zk/zk1/zookeeper-3.5.3-beta/bin/zkCli.sh -server 127.0.0.1:2181

  正常會輸出:Welcome to ZooKeeper!

  然後可以輸入正常的client命令來操作zookeeper。

9.除了可以用client連接操作,zookeeper還支持用telnet使用特殊命令來操作,這個稱為四字節命令,具體詳見:https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperAdmin.html#sc_clusterOptions

  • 1. 可以通過命令:echo stat|nc 127.0.0.1 2181 來查看哪個節點被選擇作為follower或者leader
  • 2. 使用echo ruok|nc 127.0.0.1 2181 測試是否啟動了該Server,若回復imok表示已經啟動。
  • 3. echo dump| nc 127.0.0.1 2181 ,列出未經處理的會話和臨時節點。
  • 4. echo kill | nc 127.0.0.1 2181 ,關掉server
  • 5. echo conf | nc 127.0.0.1 2181 ,輸出相關服務配置的詳細信息。
  • 6. echo cons | nc 127.0.0.1 2181 ,列出所有連接到服務器的客戶端的完全的連接 / 會話的詳細信息。
  • 7. echo envi |nc 127.0.0.1 2181 ,輸出關於服務環境的詳細信息(區別於 conf 命令)。
  • 8. echo reqs | nc 127.0.0.1 2181 ,列出未經處理的請求。
  • 9. echo wchs | nc 127.0.0.1 2181 ,列出服務器 watch 的詳細信息。
  • 10. echo wchc | nc 127.0.0.1 2181 ,通過 session 列出服務器 watch 的詳細信息,它的輸出是一個與 watch 相關的會話的列表。
  • 11. echo wchp | nc 127.0.0.1 2181 ,通過路徑列出服務器 watch 的詳細信息。它輸出一個與 session 相關的路徑。

zookeeper偽集群安裝