
前言
在分布式系統(tǒng)的舞臺上,Zookeeper是一位不可或缺的重要角色。如何搭建一個穩(wěn)定、高性能的Zookeeper集群,成為每位系統(tǒng)管理員和開發(fā)者的必修課。讓我們一同踏上這場集群之旅,揭秘三臺服務器背后的Zookeeper配置細節(jié),打造一個分布式一致性的樂園。
前置
設置主機名對應關系
這里因為我的ip總是變化的,也就是固定ip不能滿足需求的時候
要設置好ip與主機名的對應關系
這里只要每臺主機去ping另外兩臺主機即可,如果可達就可以使用了比如ping ubtone
要有java環(huán)境
執(zhí)行兩個命令java -version
與javac
出現(xiàn)以下即可
步驟
當搭建 Apache ZooKeeper 集群時,需要更詳細的配置和操作步驟。以下是一個更詳細的指南,以便您更好地理解如何配置和操作 ZooKeeper 集群:
1. 下載和解壓 ZooKeeper:
# 下載 ZooKeeper
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.10/apache-zookeeper-3.5.10-bin.tar.gz
# 解壓
tar -zxf apache-zookeeper-3.5.10-bin.tar.gz
2. 配置 ZooKeeper:
# 進入 ZooKeeper 目錄
cd apache-zookeeper-3.5.10-bin
# 復制示例配置文件
cp conf/zoo_sample.cfg conf/zoo.cfg
編輯 conf/zoo.cfg
文件:
vim conf/zoo.cfg
配置文件示例:
# 必填項:ZooKeeper 數(shù)據(jù)存儲目錄
dataDir=/path/to/dataDir
# 必填項:ZooKeeper 客戶端連接端口
clientPort=2181
# 選填項:ZooKeeper 集群節(jié)點信息
server.1=hostname1:2888:3888
server.2=hostname2:2888:3888
server.3=hostname3:2888:3888
每個節(jié)點的 dataDir
都應該是唯一的。clientPort
是 ZooKeeper 客戶端連接的端口。server.X
是集群中每個節(jié)點的配置,其中 X
是節(jié)點編號,hostnameX
是該節(jié)點的主機名或 IP 地址。
3. 配置集群節(jié)點的 myid 文件:
在每個節(jié)點上創(chuàng)建一個 myid
文件,其中包含節(jié)點的編號,對應于 server.X
中的 X
。
# 例如,在第一個節(jié)點上:
echo "1" > /path/to/dataDir/myid
# 在第二個節(jié)點上:
echo "2" > /path/to/dataDir/myid
# 在第三個節(jié)點上:
echo "3" > /path/to/dataDir/myid
4. 防火墻和端口設置:
確保防火墻允許 ZooKeeper 使用的端口(默認是 2181)。根據(jù)您的防火墻工具,設置相應的規(guī)則。
5. 啟動 ZooKeeper:
在每個節(jié)點上執(zhí)行以下命令啟動 ZooKeeper:
# ZooKeeper 3.6.0 之前版本
bin/zkServer.sh start
# ZooKeeper 3.6.0 及更高版本
bin/zookeeper-server-start.sh -daemon conf/zoo.cfg
6. 驗證 ZooKeeper:
連接到 ZooKeeper CLI,檢查集群狀態(tài):
上方可以看到,有一個leader,兩個follower。當你啟動一個完第二個服務時候,它就會出現(xiàn)leader和follower
出現(xiàn)的問題解決(全面)
每臺主機都不可達,也就是出現(xiàn)類似這種
Cannot open channel to 2 at election address ubttwo/192.168.101.104:3888
-
首先我們確定防火墻是否關閉了,這個方法很多,比如使用ping,查看主機是否可達,然后使用telnet ip 2181,看端口是否可達,如果第一步?jīng)]什么問題的話,就應該是第二個問題
-
在每一個zoo.cfg配置文件中加入配置
quorumListenOnAllIPs=true
quorumListenOnAllIPs=true
是 ZooKeeper 的配置參數(shù)之一,用于指定 ZooKeeper 服務器是否監(jiān)聽所有的 IP 地址。當設置為 true
時,ZooKeeper 將監(jiān)聽服務器上的所有網(wǎng)絡接口,而不僅僅是特定的 IP 地址。
具體來說,這個配置項的含義是:
- 當
quorumListenOnAllIPs=true
時,ZooKeeper 服務器將接受來自任何 IP 地址的連接請求。 - 當
quorumListenOnAllIPs=false
時,ZooKeeper 服務器將僅接受來自指定 IP 地址的連接請求。
默認情況下,quorumListenOnAllIPs
的值為 true
,這意味著 ZooKeeper 服務器會監(jiān)聽所有的 IP 地址。這在一些場景中可能是有用的,特別是在多網(wǎng)卡或多 IP 地址的環(huán)境中,以確保 ZooKeeper 能夠接受來自所有網(wǎng)絡接口的連接。
在配置文件(通常是 zoo.cfg
)中,可以按以下方式設置該選項:
quorumListenOnAllIPs=true
或者文章來源:http://www.zghlxwxcb.cn/news/detail-860910.html
quorumListenOnAllIPs=false
具體選擇取決于您的網(wǎng)絡環(huán)境和需求。如果您的 ZooKeeper 服務器部署在一個具有多個網(wǎng)絡接口的主機上,可能需要將其設置為 true
以確保能夠接受來自所有接口的連接。在其他情況下,可以根據(jù)需要設置為 false
。文章來源地址http://www.zghlxwxcb.cn/news/detail-860910.html
到了這里,關于搭建Zookeeper集群:三臺服務器,一場分布式之舞的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!