溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

zookeeper單機多實例和分布式部署方法介紹

發(fā)布時間:2021-07-26 02:19:59 來源:億速云 閱讀:202 作者:chen 欄目:云計算

這篇文章主要介紹“zookeeper單機多實例和分布式部署方法介紹”,在日常操作中,相信很多人在zookeeper單機多實例和分布式部署方法介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”zookeeper單機多實例和分布式部署方法介紹”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

1. 準(zhǔn)備工作:

   1)需要linux環(huán)境,推薦用ubuntu的系統(tǒng)。學(xué)習(xí)的話使用oracle的virtual box安裝虛擬機,網(wǎng)上找下安裝文檔就可以裝好了,而生產(chǎn)環(huán)境一般都會裝好的。ubuntu下載鏈接:

32位:http://mirrors.zju.edu.cn/ubuntu-releases//precise/ubuntu-12.04.3-server-i386.iso
或
64位:http://mirrors.hust.edu.cn/ubuntu-releases//precise/ubuntu-12.04.3-server-amd64.iso

    2) JDK:zookeeper需要java運行環(huán)境,這個建議1.6以上,配置好 JAVA_HOME 、CLASSPATH、 PATH 變量。

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

環(huán)境變量配置,home目錄下的.profile即可:

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 下載穩(wěn)定版本,現(xiàn)在的版本是3.4.5

2. 各種解壓,不多說,建議對解壓后的目錄(帶有版本號的),建立軟連接 zk ,方便后面的配置和升級。

    我解壓后放在:  /data/apache/zookeeper下面,并修改文件權(quán)限為運行用戶權(quán)限:

sudo chown -R zqgame:zqgame zookeeper

   zqgame:zqgame是運行zookeeper的用戶和用戶所在組,查看權(quán)限:

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. 端口檢查,通常使用的端口 2181,2888,3888 ,檢查是否占用,占用則下面的配置中更改端口。

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

   配置文件內(nèi)容:

tickTime=2000
initLimit=5
syncLimit=5
dataDir=/data/apache/zookeeper/data  # 目錄需要手工建立,存放 zk 數(shù)據(jù),主要是快照
clientPort=2181
# dataLogDir事務(wù)日志存放目錄,最好配置,事務(wù)日志的寫入速度嚴(yán)重影響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需要為dataDir和dataLogDir設(shè)置目錄,改動內(nèi)容如下:

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,不同的端口號,這里配置了三個實例

如何區(qū)分到底是第幾個實例呢,就要有個id文件,名字必須是myid

echo "1" > /data/apache/zookeeper/data/slave1/myid
echo "2" > /data/apache/zookeeper/data/slave1/myid
echo "3" > /data/apache/zookeeper/data/slave1/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,分發(fā)在不同的IP上,仍然是不同的myid。假設(shè)我有三臺獨立機器,那么zoo.cfg(只需要一個默認(rèn)的配置文件zoo.cfg)配置文件如下所示:

tickTime=2000
initLimit=5
syncLimit=5
dataDir=/data/apache/zookeeper/data  # 目錄需要手工建立,存放 zk 數(shù)據(jù),主要是快照
clientPort=2181
# dataLogDir事務(wù)日志存放目錄,最好配置,事務(wù)日志的寫入速度嚴(yán)重影響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執(zhí)行下面一條
echo "1" > /data/apache/zookeeper/data/myid
#在192.168.130.102執(zhí)行下面一條
echo "2" > /data/apache/zookeeper/data/myid
#在192.168.130.103執(zhí)行下面一條
echo "3" > /data/apache/zookeeper/data/myid

這樣分別在三臺機器迅速啟動zookeeper,此時不需要指定配置文件,默認(rèn)配置文件就是zoo.cfg:

bin/zkServer.sh start

查看啟動后的狀態(tài):

bin/zkServer.sh status

進入zookeeper的shell客戶端:

bin/zkCli.sh   #進入本機zookeeper的shell

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

bin/zkCli.sh -server 192.168.130.101

在查看啟動狀態(tài)有錯誤的情況下,稍等一會再查看,因為zookeeper啟動后需要一點時間選出leader。以上配置和命令不了解的可見后續(xù)文章詳細解釋其用法。歡迎拍磚!

到此,關(guān)于“zookeeper單機多實例和分布式部署方法介紹”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI