一奕扣、描述
偽分布式集群就是在一臺機器部署多個zk應(yīng)用薪鹦,部署之前服務(wù)器需要有jdk環(huán)境 java -version可以顯示相關(guān)java信息才可以進行zookeeper搭建。
二惯豆、步驟
- 下載zookeeper
自己在/usr/local/下新建zkmy文件夾池磁,下載
[root@localhost zkmy]# wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
- 解壓
[root@localhost zkmy]# tar -xzvf zookeeper-3.4.13.tar.gz
- 配置
進入zk中的conf目錄下
[root@localhost zkmy]# cd zookeeper-3.4.13/conf
[root@localhost conf]# ls
configuration.xsl log4j.properties zoo_sample.cfg
將zoo_sample.cfg 復(fù)制三份,分別命名為
zoo_1.cfg, zoo_2.cfg, zoo_3.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo_1.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo_2.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo_3.cfg
[root@localhost conf]# ls
configuration.xsl log4j.properties zoo_1.cfg zoo_2.cfg zoo_3.cfg zoo_sample.cfg
- 分別對zoo_1楷兽、2地熄、3文件進行編輯
- 設(shè)置dataDir,dataLogDir
- 設(shè)置clientPort
- 設(shè)置server
#Zookeeper 服務(wù)器之間或客戶端與服務(wù)器之間維持心跳的時間間隔,也就是每個tickTime 時間就會發(fā)送一個心跳芯杀。
tickTime=2000
#Zookeeper 服務(wù)器集群中連接到 Leader 的 Follower 服務(wù)器 初始化連接時最長能忍受多少個心跳時間間隔數(shù)端考。當已經(jīng)超過 10 個心跳的時間(也就是 tickTime)長度后 Zookeeper 服務(wù)器還沒有收到客戶端的返回信息雅潭,那么表明這個客戶端連接失敗□斯#總的時間長度就是 10*2000=20 秒寻馏。
initLimit=10
#標識Leader 與 Follower 之間發(fā)送消息,請求和應(yīng)答時間長度核偿,最長不能超過多少個 tickTime 的時間長度诚欠,總的時間長度就是 5*2000=10 秒。
syncLimit=5
#Zookeeper 保存數(shù)據(jù)的目錄漾岳,默認情況下轰绵,Zookeeper 將寫數(shù)據(jù)的日志文件也保存在這個目錄里。
#dataDir=/tmp/zookeeper
dataDir=/apps/servers/data/d_1
#Zookeeper 保存日志文件的目錄,默認沒有此配置
dataLogDir=/apps/servers/logs/logs_1
# 客戶端連接Zookeeper 服務(wù)器的端口
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
#http://zookeeper.apache.org/doc/current/zookeeperAdmin.html
#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
server.1=localhost:2187:2887
server.2=localhost:2188:2888
server.3=localhost:2189:2889
注:
server.A=B:C:D
A 是一個數(shù)字尼荆,表示這個是第幾號服務(wù)器左腔;
B 是這個服務(wù)器的 ip 地址;
C 表示的是這個服務(wù)器與集群中的 Leader 服務(wù)器交換信息的端口捅儒;
D 表示的是萬一集群中的 Leader 服務(wù)器掛了液样,需要一個端口來重新進行選舉,選出一個新的 Leader巧还,而這個端口就是用來執(zhí)行選舉時服務(wù)器相互通信的端口鞭莽。如果是偽集群的配置方式,由于 B 都是一樣麸祷,所以不同的 Zookeeper 實例通信端口號不能一樣澎怒,所以要給它們分配不同的端口號。
- 修改之后分別創(chuàng)建data目錄和日志目錄
mkdir -p /apps/servers/data/d_1
mkdir -p /apps/servers/data/d_2
mkdir -p /apps/servers/data/d_3
mkdir -p /apps/servers/logs/logs_1
mkdir -p /apps/servers/logs/logs_2
mkdir -p /apps/servers/logs/logs_3
除了修改 zoo.cfg 配置文件阶牍,集群模式下還要配置一個文件 **myid**喷面,這個文件在 dataDir 目錄下,這個文件里面就有一個數(shù)據(jù)就是 A 的值走孽,Zookeeper 啟動時會讀取這個文件惧辈,拿到里面的數(shù)據(jù)與 zoo.cfg 里面的配置信息比較從而判斷到底是那個 server。
echo "1" > /apps/servers/data/d_1/myid
echo "2" >/apps/servers/data/d_2/myid
echo "3" >/apps/servers/data/d_3/myid
- 啟動服務(wù)
進入bin目錄下輸入命令
sh zkServer.sh start ../conf/zoo_1.cfg
sh zkServer.sh start ../conf/zoo_2.cfg
sh zkServer.sh start ../conf/zoo_3.cfg
Usage: zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
[圖片上傳失敗...(image-3a5b51-1660486608819)]
- 通過命令檢測是否成功:
注意防火墻和配置是否成功融求,這個是部署成功的關(guān)鍵
sh zkServer.sh status ../conf/zoo_1.cfg
sh zkServer.sh status ../conf/zoo_2.cfg
sh zkServer.sh status ../conf/zoo_3.cfg
or
[root@localhost bin]# sh zkCli.sh -server localhost:2181