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