zookeeper偽集群安裝
記錄下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偽集群安裝