zookeeper單機多實例和分佈式部署

介紹zookeeper單機多實例部署(實驗性質)以及生產環境的分佈式部署html

 

1. 準備工做:java

 

   1)須要linux環境,推薦用ubuntu的系統。學習的話使用oraclevirtual box安裝虛擬機,網上找下安裝文檔就能夠裝好了,而生產環境通常都會裝好的。ubuntu下載連接:linux

32位:http://mirrors.zju.edu.cn/ubuntu-releases//precise/ubuntu-12.04.3-server-i386.isoweb

shell

64位:http://mirrors.hust.edu.cn/ubuntu-releases//precise/ubuntu-12.04.3-server-amd64.isoapache

 

    2) JDKzookeeper須要java運行環境,這個建議1.6以上,配置好 JAVA_HOME CLASSPATH、 PATH 變量。ubuntu

jdk下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.htmloracle

環境變量配置,home目錄下的.profile便可:jvm

export JAVA_HOME="/usr/lib/jvm/jdk1.7.0_40"分佈式

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export ZOOKEEPER_HOME="/data/apache/zookeeper"

export PATH="$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin"

 

    3) zookeeper安裝包:http://zookeeper.apache.org/releases.html 下載穩定版本,如今的版本是3.4.5

 

2. 各類解壓,很少說,建議對解壓後的目錄(帶有版本號的),創建軟鏈接 zk ,方便後面的配置和升級。

    我解壓後放在:  /data/apache/zookeeper下面,並修改文件權限爲運行用戶權限:

sudo chown -R zqgame:zqgame zookeeper

zqgame:zqgame是運行zookeeper的用戶和用戶所在組,查看權限:

zqgame@develop-test-web:/data/apache$ ll

total 16

drwxr-xr-x  4 zqgame zqgame 4096 Jan 17 12:41 ./

drwxr-xr-x 11 root   root   4096 Dec 13 14:49 ../

drwxr-xr-x 11 zqgame zqgame 4096 Nov 20 15:50 hadoop-2.2.0/

drwxr-xr-x 12 zqgame zqgame 4096 Jan 17 12:56 zookeeper/

zqgame@develop-test-web:/data/apache$

 

3. 端口檢查,一般使用的端口 218128883888 ,檢查是否佔用,佔用則下面的配置中更改端口。

netstat -ano | grep 2181

 

4.單機多實例配置及啓動:

#生成配置文件,配置文件名隨便,這裏是zoo.cfg

cp /data/apache/zookeeper/conf/zoo_sample.cfg  /data/apache/zookeeper/conf/zoo.cfg

vi /data/apache/zookeeper/conf/zoo.cfg

 

   配置文件內容:

tickTime=2000

initLimit=5

syncLimit=5

dataDir=/data/apache/zookeeper/data  # 目錄須要手工創建,存放 zk 數據,主要是快照

clientPort=2181

# dataLogDir事務日誌存放目錄,最好配置,事務日誌的寫入速度嚴重影響zookeeper的性能

dataLogDir=/data/apache/zookeeper/datalog

server.1=192.168.130.170:2889:3889

server.2=192.168.130.170:2890:3890

server.3=192.168.130.170:2891:3891

 

   拷貝配置文件,生成三個配置文件:zoo-slave1.cfg: (另外兩個 zoo-slave2.cfg 和 zoo-slave3.cfg)。

   zoo-slave1.cfg須要爲dataDirdataLogDir設置目錄,改動內容以下:

dataDir=/data/apache/zookeeper/data/slave1

dataLogDir=/data/apache/zookeeper/datalog/slave1

clientPort=2182

 

   zoo-slave2.cfg :

dataDir=/data/apache/zookeeper/data/slave2

dataLogDir=/data/apache/zookeeper/datalog/slave2

clientPort=2183

 

  zoo-slave3.cfg :

dataDir=/data/apache/zookeeper/data/slave3

dataLogDir=/data/apache/zookeeper/datalog/slave3

clientPort=2184

 

如上配置相同的本機IP,不一樣的端口號,這裏配置了三個實例

 

如何區分究竟是第幾個實例呢,就要有個id文件,名字必須是myid

echo "1" > /data/apache/zookeeper/data/slave1/myid

echo "2" > /data/apache/zookeeper/data/slave2/myid

echo "3" > /data/apache/zookeeper/data/slave3/myid

 

在三個窗口下迅速啓動:

bin/zkServer.sh start zoo-slave1.cfg 

bin/zkServer.sh start zoo-slave2.cfg 

bin/zkServer.sh start zoo-slave3.cfg

 

查看zookeeper選出來的leader,經過下面的腳本,分別指定配置文件,就能夠查看哪個實例是leader

bin/zkServer.sh status zoo-slave1.cfg

 

能夠看下以下輸出信息:

zqgame@develop-test-web:/data/apache/zookeeper$ bin/zkServer.sh status zoo-slave2.cfg 

JMX enabled by default

Using config: /data/apache/zookeeper/bin/../conf/zoo-slave2.cfg

Mode: leader

 

5、分佈式部署:

 

    與單機多實例差很少,不過不用三個目錄,只須要一個目錄,一個配置文件,三個不一樣IP,分發在不一樣的IP上,仍然是不一樣的myid。假設我有三臺獨立機器,那麼zoo.cfg(只須要一個默認的配置文件zoo.cfg)配置文件以下所示:

tickTime=2000

initLimit=5

syncLimit=5

dataDir=/data/apache/zookeeper/data  # 目錄須要手工創建,存放 zk 數據,主要是快照

clientPort=2181

# dataLogDir事務日誌存放目錄,最好配置,事務日誌的寫入速度嚴重影響zookeeper的性能

dataLogDir=/data/apache/zookeeper/datalog

server.1=192.168.130.101:2888:3888

server.2=192.168.130.102:2888:3888

server.3=192.168.130.103:2888:3888

 

而後在三臺機器上分別寫入不一樣的myid

#192.168.130.101執行下面一條

echo "1" > /data/apache/zookeeper/data/myid

#192.168.130.102執行下面一條

echo "2" > /data/apache/zookeeper/data/myid

#192.168.130.103執行下面一條

echo "3" > /data/apache/zookeeper/data/myid

 

這樣分別在三臺機器迅速啓動zookeeper,此時不須要指定配置文件,默認配置文件就是zoo.cfg

bin/zkServer.sh start

查看啓動後的狀態:

bin/zkServer.sh status

進入zookeepershell客戶端:

bin/zkCli.sh   #進入本機zookeepershell

進入指定機器的shell客戶端:

bin/zkCli.sh -server 192.168.130.101

在查看啓動狀態有錯誤的狀況下,稍等一會再查看,由於zookeeper啓動後須要一點時間選出leader。 

相關文章
相關標籤/搜索