本文在一臺機器上模擬3個 zk server的集羣安裝java
本人安裝的系統版本信息(Esxi虛擬機)
[lsug@172-16-1-105 ~]$ uname -a
Linux 172-16-1-105 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[lsug@172-16-1-105 ~]$ cat /etc/redhat-release
CentOS release 6.7 (Final)vim
1.下載解壓
解壓到3個目錄(模擬3臺zk server)服務器
tar -zxf zookeeper-3.4.6.tar.gztcp
2.環境準備
建立須要的目錄:
每一個zk的instance都須要設置獨立的數據存儲目錄、日誌存儲目錄,因此dataDir、dataLogDir這二個節點對應的目錄,須要手動先建立好。
在/data目錄下分別建立z1,z2,z3三個文件夾,分別在每一個文件夾下建立data和log目錄
mkdir -p /data/zk{1..3}/{data,log} 分佈式
建立多實例:
cp -R zookeeper-3.4.6/* /data/zk1/
cp -R zookeeper-3.4.6/* /data/zk2/
cp -R zookeeper-3.4.6/* /data/zk3/ide
3. 修改配置文件
建立每一個目錄下conf/zoo.cfg配置文件
vim /data/zk1/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zk1/data
dataLogDir=/data/zk1/log
clientPort=2181
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389測試
vim /data/zk2/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zk2/data
dataLogDir=/data/zk2/log
clientPort=2182
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389spa
vim /data/zk3/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zk3/data
dataLogDir=/data/zk3/log
clientPort=2183
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389.net
注:由於是在一臺機器上模擬集羣,因此端口不能重複,這裏用2181~2183,2287~2289,以及3387~3389相互錯開。日誌
另外還有一個很是關鍵的設置,在每一個zk server配置文件的dataDir所對應的目錄下,必須建立一個名爲myid的文件,其中的內容必須與zoo.cfg中server.x 中的x相同,即:
[root@localhost wwt]# cat /data/zk1/data/myid 對應server.1中的1
1
[root@localhost wwt]# cat /data/zk2/data/myid 對應server.2中的2
2
[root@localhost wwt]# cat /data/zk3/data/myid 對應server.3中的3
3
4,啓動多實例
/data/zk1/bin/zkServer.sh start
/data/zk2/bin/zkServer.sh start
/data/zk3/bin/zkServer.sh start
5-檢查啓動是否成功
檢查一
啓用成功後,輸入 jps 看下進程
jps
20351 ZooKeeperMain
20791 QuorumPeerMain
20822 QuorumPeerMain
20865 QuorumPeerMain
1928 Jps
檢查二
[lsug@localhost ~]$ netstat -anltup | grep 218*
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 :::2181 :::* LISTEN 779/java
tcp 0 0 :::2182 :::* LISTEN 639/java
tcp 0 0 :::2183 :::* LISTEN 734/java
6.測試
能夠啓動客戶端測試下:
bin/zkCli.sh -server localhost:2181
(注:若是是遠程鏈接,把localhost換成指定的IP便可)
成功後,應該會進到提示符下,相似下面這樣:
[zk: localhost:2181(CONNECTED) 0]
而後,就能夠用一些基礎命令,好比 ls ,create ,delete ,get 來測試了(關於這些命令,你們能夠查看文檔),
特別提一個頗有用的命令rmr 用來遞歸刪除某個節點及其全部子節點
====****生產環境中,分佈式集羣部署的步驟與上面基本相同,只不過由於各zk server分佈在不一樣的機器,上述配置文件中的localhost換成各服務器的真實Ip便可。 分佈在不一樣的機器後,不存在端口衝突問題,可讓每一個服務器的zk均採用相同的端口,這樣管理起來比較方便。***=====