ZooKeeper 實(shí)戰(zhàn)(一) 超詳細(xì)的單機(jī)與集群部署教程(MacOS)
0. ZooKeeper簡(jiǎn)介
ZooKeeper是一個(gè)提供包括配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等功能的集中式服務(wù)。主要功能如下:
-
分布式鎖:Zookeeper可以幫助開(kāi)發(fā)人員實(shí)現(xiàn)分布式鎖,用于控制多個(gè)節(jié)點(diǎn)的并發(fā)訪問(wèn)。通過(guò)Zookeeper的原子廣播和順序一致性特性,可以實(shí)現(xiàn)高效且可靠的分布式鎖。
-
配置管理:在分布式系統(tǒng)中,節(jié)點(diǎn)的配置信息可能需要?jiǎng)討B(tài)地更改和共享。Zookeeper提供了一個(gè)簡(jiǎn)單而可靠的方式來(lái)實(shí)現(xiàn)配置的管理,開(kāi)發(fā)人員可以將配置信息存儲(chǔ)在Znode中,當(dāng)配置發(fā)生變化時(shí),Zookeeper會(huì)及時(shí)通知相關(guān)的節(jié)點(diǎn)。
-
命名服務(wù):分布式系統(tǒng)中的節(jié)點(diǎn)通常需要有一個(gè)唯一的標(biāo)識(shí)符來(lái)進(jìn)行識(shí)別。Zookeeper可以提供一個(gè)簡(jiǎn)單的命名服務(wù),根據(jù)節(jié)點(diǎn)的名稱(chēng)和路徑來(lái)唯一標(biāo)識(shí)每個(gè)節(jié)點(diǎn)。
-
分布式隊(duì)列:Zookeeper可以幫助實(shí)現(xiàn)分布式系統(tǒng)中的隊(duì)列功能,多個(gè)節(jié)點(diǎn)可以通過(guò)Zookeeper來(lái)訪問(wèn)和操作一個(gè)隊(duì)列。Zookeeper提供了有序的Znode樹(shù)特性,可以確保隊(duì)列中的元素按照先進(jìn)先出的順序進(jìn)行處理。
-
服務(wù)發(fā)現(xiàn):在分布式系統(tǒng)中,節(jié)點(diǎn)需要能夠發(fā)現(xiàn)和連接到其他相關(guān)的服務(wù)。Zookeeper提供了服務(wù)注冊(cè)和發(fā)現(xiàn)的功能,可以幫助節(jié)點(diǎn)快速地發(fā)現(xiàn)和連接到其他需要的服務(wù)。
詳細(xì)介紹可前往ZooKeeper官網(wǎng)地址。
1. 單機(jī)部署
1.1. ZooKeeper下載安裝
官方推薦的穩(wěn)定版本
(1)前往ZooKeeper官方下載地址選擇穩(wěn)定版本(官方文檔中帶有Release的版本號(hào)),如下圖所示,博主選擇版本3.7.2。
(2)選擇二進(jìn)制版本,即以-bin結(jié)尾的文件下載。
(3)下載完成后解壓,并重命名文件夾為zk1。
1.2. 修改配置文件
(1)打開(kāi)終端,進(jìn)入conf目錄,將zoo_sample.cfg 復(fù)制一份并重命名為zoo.cfg。
(2)輸入 vim zoo.cfg
編輯zoo.cfg配置文件,修改數(shù)據(jù)和日志存放目錄。
1.3. 啟動(dòng)服務(wù)端
進(jìn)入bin目錄,輸入./zkServer.sh start
啟動(dòng)服務(wù)端。最后顯示Starting zookeeper ... STARTED
表示啟動(dòng)成功。
1.4. 啟動(dòng)客戶端
還是在bin目錄下,輸入./zkCli.sh
啟動(dòng)客戶端。最后顯示[zk: localhost:2181(CONNECTED) 0]
表示啟動(dòng)成功
至此單機(jī)部署已完成。
2. 集群部署
本次案例在同一臺(tái)機(jī)器上部署,沒(méi)有使用虛擬機(jī)或多臺(tái)服務(wù)器。
2.1. 集群準(zhǔn)備
(1)首先將上一節(jié)單機(jī)部署的zk1文件夾復(fù)制兩份,分別命名為zk2,zk3。
(2)修改每個(gè)文件夾(zk實(shí)例)
配置參數(shù)解讀:
server.A=B:C:D
A: 是一個(gè)數(shù)字,表示這個(gè)是第幾號(hào)服務(wù)器。集群模式下配置一個(gè)文件 myid,這個(gè)文件在 dataDir 目錄下,這個(gè)文件里面有一個(gè)數(shù)據(jù) 就是 A 的值,Zookeeper 啟動(dòng)時(shí)讀取此文件,拿到里面的數(shù)據(jù)與 zoo.cfg 里面的配置信息比較從而判斷到底是哪個(gè) server。
B 是這個(gè)服務(wù)器的地址(ip或者主機(jī)名)。
C 是這個(gè)服務(wù)器 Follower 與集群中的 Leader 服務(wù)器交換信息的端口。
D 是萬(wàn)一集群中的 Leader 服務(wù)器掛了,需要一個(gè)端口來(lái)重新進(jìn)行選舉,選出一個(gè)新的Leader,而這個(gè)端口就是用來(lái)執(zhí)行選舉時(shí)服務(wù)器相互通信的端口。
zk1
(1)進(jìn)入conf目錄,編輯zoo.cfg文件
tickTime=2000
initLimit=10
syncLimit=5
# 數(shù)據(jù)文件存放路徑
dataDir=../data
# 日志文件存放路徑
dataLogDir=../logs
# 客戶端連接端口
clientPort=2181
# zookeeper服務(wù)器端口號(hào)
admin.serverPort=2111
# 服務(wù)器列表,詳細(xì)配置看《配置參數(shù)解讀》
# 注意由于此處是在同一臺(tái)機(jī)器上配置所有ip都一樣,此時(shí)后面的端口不要重復(fù)了
server.01=127.0.0.1:2341:2351
server.02=127.0.0.1:2342:2352
server.03=127.0.0.1:2343:2353
# 如果部署在不同服務(wù)器,參照下方配置
# server.服務(wù)器myid=服務(wù)器的ip地址或者主機(jī)名:主從交流端口:選舉端口
(2)進(jìn)入dataDir所指定的目錄,下創(chuàng)建文件myid,并輸入01。
myid文件內(nèi)容。
zk2
(1)進(jìn)入conf目錄,編輯zoo.cfg文件(與zk1類(lèi)似)。注意clientPort
和admin.serverPort
修改了,同一臺(tái)服務(wù)器端口不要重復(fù)。
tickTime=2000
initLimit=10
syncLimit=5
# 數(shù)據(jù)文件存放路徑
dataDir=../data
# 日志文件存放路徑
dataLogDir=../logs
# 客戶端連接端口
clientPort=2182
# zookeeper服務(wù)器端口號(hào)
admin.serverPort=2112
# 服務(wù)器列表,詳細(xì)配置看《配置參數(shù)解讀》
# 注意由于此處是在同一臺(tái)機(jī)器上配置所有ip都一樣,此時(shí)后面的端口不要重復(fù)了
server.01=127.0.0.1:2341:2351
server.02=127.0.0.1:2342:2352
server.03=127.0.0.1:2343:2353
# 如果部署在不同服務(wù)器,參照下方配置
# server.服務(wù)器myid=服務(wù)器的ip地址或者主機(jī)名:主從交流端口:選舉端口
(2)進(jìn)入dataDir所指定的目錄,下創(chuàng)建文件myid,并輸入02。
zk3
(1)進(jìn)入conf目錄,編輯zoo.cfg文件(與zk1類(lèi)似)。注意clientPort
和admin.serverPort
修改了,同一臺(tái)服務(wù)器端口不要重復(fù)。
tickTime=2000
initLimit=10
syncLimit=5
# 數(shù)據(jù)文件存放路徑
dataDir=../data
# 日志文件存放路徑
dataLogDir=../logs
# 客戶端連接端口
clientPort=2183
# zookeeper服務(wù)器端口號(hào)
admin.serverPort=2113
# 服務(wù)器列表,詳細(xì)配置看《配置參數(shù)解讀》
# 注意由于此處是在同一臺(tái)機(jī)器上配置所有ip都一樣,此時(shí)后面的端口不要重復(fù)了
server.01=127.0.0.1:2341:2351
server.02=127.0.0.1:2342:2352
server.03=127.0.0.1:2343:2353
# 如果部署在不同服務(wù)器,參照下方配置
# server.服務(wù)器myid=服務(wù)器的ip地址或者主機(jī)名:主從交流端口:選舉端口
(2)進(jìn)入dataDir所指定的目錄,下創(chuàng)建文件myid,并輸入03。
2.2. 啟動(dòng)集群服務(wù)器
(1)啟動(dòng)zk1
(2)啟動(dòng)zk2
(3)啟動(dòng)zk3
2.3. 查看服務(wù)器狀態(tài)
(1)zk1 -> follower
(2)zk2 -> leader
(3)zk3 -> follower
至此集群部署完成。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-857754.html
3. 總結(jié)
本篇文章旨在教會(huì)讀者學(xué)會(huì)部署ZooKeeper,未涉及有關(guān)理論和使用的知識(shí)。后續(xù)將會(huì)基于本章部署好的ZooKeeper進(jìn)行有關(guān)各項(xiàng)功能教學(xué)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-857754.html
到了這里,關(guān)于ZooKeeper 實(shí)戰(zhàn)(一) 超詳細(xì)的單機(jī)與集群部署教程(MacOS)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!