摘要:前言記錄集群搭建的過(guò)程什么是是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是的一個(gè)開(kāi)源的實(shí)現(xiàn),是和的重要組件。
前言
記錄Zookeeper集群搭建的過(guò)程!
什么是 Zookeeper ?ZooKeeper是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開(kāi)源的實(shí)現(xiàn),是Hadoop和Hbase的重要組件。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等。
劃重點(diǎn):分布式應(yīng)用程序協(xié)調(diào)服務(wù),在分布式系統(tǒng)中,通常需要一個(gè)通用的服務(wù)注冊(cè)與發(fā)現(xiàn)中心,因此Zookeeper就是充當(dāng)這樣的角色,國(guó)內(nèi)非常出名的分布式框架Dubbo也建議使用Zookeeper作為服務(wù)注冊(cè)與發(fā)現(xiàn)中心。
環(huán)境準(zhǔn)備準(zhǔn)備三臺(tái)Linux虛擬機(jī),前往官網(wǎng)下載zookeeper壓縮包,如果不知道官網(wǎng)如何下載,可在公眾號(hào)「張少林同學(xué)」回復(fù)Java工具獲取網(wǎng)盤下載鏈接
| OS | 主機(jī)名 | ip | zookeeper/端口 |
| :-------: | :-------: | :-----------: | :--------------------------: |
| centos7 | LIHETEST6 | 192.168.2.216 | zookeeper-3.4.11.tar.gz/2181 |
| centos7 | LIHETEST7 | 192.168.2.217 | zookeeper-3.4.11.tar.gz/2181 |
| centos7 | LIHETEST8 | 192.168.2.218 | zookeeper-3.4.11.tar.gz/2181 |
在三臺(tái)服務(wù)器分別做以下操作,這里以 LIHETEST6 為例:
查看本機(jī)主機(jī)名:hostname
vim /etc/hostname 刪除原有內(nèi)容,新增主機(jī)名:LIHETEST6
設(shè)置主機(jī)名及IP映射 : vim /etc/hosts 在文件尾部添加內(nèi)容,格式為: IP 地址 主機(jī)名 (中間用空格分割),保存退出,例如:192.168.2.216 LIHETEST6
重啟網(wǎng)絡(luò)服務(wù):systemctl restart network
單機(jī)部署將Zookeeper壓縮包上傳到服務(wù)器后,解壓
//上傳壓縮包 scp zookeeper-3.4.11.tar.gz [email protected]:/home/tools //登錄到服務(wù)器目錄 解壓 tar -zxvf zookeeper-3.4.11.tar.gz //進(jìn)入zookeeper主目錄 cd zookeeper-3.4.11
解壓后看看都有哪些內(nèi)容:
我們只需要把焦點(diǎn)定位到這兩個(gè)目錄:
bin目錄:腳本執(zhí)行目錄,里面放置一些Zookeeper啟動(dòng)腳本等
conf目錄:配置文件目錄
執(zhí)行腳本命令./bin/zkServer.sh start 啟動(dòng)Zookeeper,結(jié)果如下:
提示找不到 ../conf/zoo.cfg文件,但是最后卻打印STARTED,于是執(zhí)行./bin/zkServer.sh status看看當(dāng)前Zookeeper狀態(tài),結(jié)果如下:
上述結(jié)果很清晰明了了,Zookeeper啟動(dòng)失敗,原因是找不到配置文件:./conf/zoo.cfg,./bin/zkServer.sh start命令啟動(dòng)時(shí),默認(rèn)會(huì)使用此配置文件啟動(dòng),而初始化時(shí)./conf目錄下并無(wú)此文件,查看./conf中存在一個(gè)樣例配置文件./conf/zoo_sample.cfg,于是執(zhí)行cp ./conf/zoo_sample.cfg ./conf/zoo.cfg復(fù)制一份./conf/zoo.cfg文件出來(lái),再次執(zhí)行命令啟動(dòng)Zookeeper,結(jié)果如下:
可以看出Zookeeper已經(jīng)啟動(dòng)了,并且是單機(jī)模式啟動(dòng)。
再看看啟動(dòng)日志信息cat zookeeper.out:
zookeeper啟動(dòng),綁定在2181端口,查看一下進(jìn)程是否存在:netstat -lntp | grep 2181,結(jié)果如下:
tcp6 0 0 :::2181 :::* LISTEN 27201/java配置文件解析
tickTime:客戶端與服務(wù)端保持心跳的毫秒數(shù)
initLimit:初始容忍的心跳數(shù)
syncLimit:等待最大容忍的心跳數(shù)
dataDir:存儲(chǔ)快照的目錄,這里默認(rèn)是使用系統(tǒng)臨時(shí)目錄,真實(shí)使用時(shí)建議自定義目錄
clientPort:暴露給客戶端訪問(wèn)的端口
單機(jī)偽集群部署有時(shí)候我們會(huì)在本機(jī)搭建一個(gè)偽集群,用于項(xiàng)目代碼測(cè)試,那么只需要啟動(dòng)三個(gè)不同配置的Zookeeper即可,只要端口不同,即可視為不同的程序。
在./conf目錄下新增zoo1.cfg,zoo2.cfg,zoo3.cfg配置文件,其中dataDir目錄依次都不同,clientPort分別配置為2181,2182,2183。啟動(dòng)Zookeeper時(shí),顯式指定配置文件,如:./bin/zkServer.sh start conf/zoo3.cfg ,依次啟動(dòng)三個(gè)Zookeeper配置文件。。那么最終執(zhí)行netstat -lntp看下端口監(jiān)聽(tīng)情況:
可以看到啟動(dòng)了三個(gè)監(jiān)聽(tīng)不同端口的Zookeeper.
多機(jī)集群部署在真實(shí)生產(chǎn)環(huán)境中,我們一般會(huì)搭建一個(gè)多機(jī)器集群的,目的很明顯,為了提高容錯(cuò)能力。
在三臺(tái)機(jī)器中,每臺(tái)安裝一個(gè)Zookeeper服務(wù),這三臺(tái)機(jī)器形成一個(gè)小規(guī)模的集群。
在每臺(tái)機(jī)器中修改./conf/zoo.cfg配置文件如下:
initLimit=10 // 初始容忍的心跳數(shù) syncLimit=5 // 等待最大容忍的心跳數(shù) dataDir=/home/wwwroot/easywits/tools/zookeeper-3.4.11/data //數(shù)據(jù)存儲(chǔ)目錄 dataLogDir=/home/wwwroot/easywits/tools/zookeeper-3.4.11/logs //數(shù)據(jù)日志文件目錄 clientPort=2181 //zookeeper 監(jiān)聽(tīng)端口 server.1=192.168.2.216:2888:3888 //主機(jī)ip/服務(wù)間心跳連接端口/數(shù)據(jù)端口 server.2=192.168.2.217:2888:3888 server.3=192.168.2.218:2888:3888
分別在每臺(tái)服務(wù)器 數(shù)據(jù)目錄 /home/wwwroot/easywits/tools/zookeeper-3.4.11/data 中新增名為 myid 文本文件,內(nèi)容依次為 0,1,2,這是集群中每臺(tái) Zookeeper服務(wù)的唯一標(biāo)識(shí),不能重復(fù),以第一臺(tái)為例:
echo "0" > /home/wwwroot/easywits/tools/zookeeper-3.4.11/data/myid
啟動(dòng) Zookeeper : ./bin/zkServer.sh start
查看每臺(tái)服務(wù)器中,Zookeeper狀態(tài):./bin/zkServer.sh status,結(jié)果分別如下:
Using config: /home/wwwroot/easywits/tools/zookeeper-3.4.11/bin/../conf/zoo.cfg Mode: follower Using config: /home/wwwroot/easywits/tools/zookeeper-3.4.11/bin/../conf/zoo.cfg Mode: leader Using config: /home/wwwroot/easywits/tools/zookeeper-3.4.11/bin/../conf/zoo.cfg Mode: follower
可以看到啟動(dòng)模式,第一臺(tái)與第三臺(tái)為follower,而第二臺(tái)為leader
注意:Zookeeper集群規(guī)模,機(jī)器數(shù)量只能是奇數(shù)個(gè),在三臺(tái)機(jī)器集群的情況下,最多只能掛掉其中一臺(tái),如果主節(jié)點(diǎn)掛掉,剩下兩臺(tái)服務(wù)會(huì)重新選舉一臺(tái)作為主節(jié)點(diǎn)。
總結(jié)Zookeeper啟動(dòng)失敗,可以在./zookeeper.out文件查看異常日志
每臺(tái)機(jī)器的myid中內(nèi)容為服務(wù)的唯一標(biāo)識(shí),不能重復(fù)
確保每臺(tái)機(jī)器必須能ping通,必要時(shí)請(qǐng)先關(guān)閉防火墻
在阿里云服務(wù)器上,請(qǐng)使用內(nèi)網(wǎng)ip進(jìn)行配置
確保使用的端口未被占用
Zookeeper集群機(jī)器數(shù)量只能是奇數(shù)個(gè),詳見(jiàn) https://www.cnblogs.com/LeeSc...
ps:關(guān)于需要用到的工具,可在公眾號(hào)「張少林同學(xué)」回復(fù)Java工具獲取網(wǎng)盤下載鏈接
最后記錄一波Zookeeper搭建過(guò)程,后續(xù)會(huì)不定期更新原創(chuàng)文章,歡迎關(guān)注公眾號(hào) 「張少林同學(xué)」!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73169.html
摘要:項(xiàng)目地址前言大數(shù)據(jù)技術(shù)棧思維導(dǎo)圖大數(shù)據(jù)常用軟件安裝指南一分布式文件存儲(chǔ)系統(tǒng)分布式計(jì)算框架集群資源管理器單機(jī)偽集群環(huán)境搭建集群環(huán)境搭建常用命令的使用基于搭建高可用集群二簡(jiǎn)介及核心概念環(huán)境下的安裝部署和命令行的基本使用常用操作分區(qū)表和分桶表視圖 項(xiàng)目GitHub地址:https://github.com/heibaiying... 前 言 大數(shù)據(jù)技術(shù)棧思維導(dǎo)圖 大數(shù)據(jù)常用軟件安裝指...
摘要:的設(shè)計(jì)目標(biāo)是將那些復(fù)雜且容易出錯(cuò)的分布式一致性服務(wù)封裝起來(lái),構(gòu)成一個(gè)高效可靠的原語(yǔ)集,并以一系列簡(jiǎn)單易用的接口提供給用戶使用。具有不可分割性即原語(yǔ)的執(zhí)行必須是連續(xù)的,在執(zhí)行過(guò)程中不允許被中斷。 該文已加入開(kāi)源文檔:JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識(shí))。地址:https://github.com/Snailclimb... showImg(https:...
閱讀 2725·2021-11-08 13:16
閱讀 2401·2021-10-18 13:30
閱讀 2272·2021-09-27 13:35
閱讀 2025·2019-08-30 15:55
閱讀 2475·2019-08-30 13:22
閱讀 616·2019-08-30 11:24
閱讀 2106·2019-08-29 12:33
閱讀 1840·2019-08-26 12:10