ZooKeeper集羣的搭建

  • ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。
  • ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。
  • ZooKeeper包含一個簡單的原語集,提供Java和C的接口。
  • ZooKeeper代碼版本中,提供了分佈式獨享鎖、選舉、隊列的接口,代碼在zookeeper-3.4.13\src\recipes。其中分佈鎖和隊列有Java和C兩個版本,選舉只有Java版本。今天我們在linux上來搭建一個zookeeper集羣服務。

一、工具準備

(1)虛擬機準備(包括VMware Workstation Pro以及ios鏡像)
百度網盤下載地址:鏈接:https://pan.baidu.com/s/15EFffIGMTBIZqCqu9fTwRQ 提取碼:hr6t
(2)JDK,這個下載地址就不提供了,都懂得
(3)zookeeper,官網下載地址:https://www.apache.org/dyn/closer.cgi/zookeeper/
當前使用的JDK和zookeeper的版本

二、安裝虛擬機

這個網上教程有很多,暫時不提供,回頭有時間了,可以寫一個博客

三、安裝jdk

(1)把下載好的jdk壓縮包放在/usr/local/src目錄下,我這裏下載的是jdk1.8
tar -xvf jdk-8u191-linux-x64.tar.gz
(2)解壓後刪除壓縮包
rm jdk-8u191-linux-x64.tar.gz
(3)配置環境變量,編輯/etc/profile文件
vim /etc/profile
(4)在/etc/profile文件末尾行添加

JAVA_HOME=/usr/local/src/jdk1.8.0_191
JAVA_BIN=/usr/local/src/jdk1.8.0_191/bin
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

(5)保存退出後,使配置文件生效
source /etc/profile
(6)檢驗jdk是否安裝成功,查詢版本號
java -version

四、安裝ZooKeeper

(1)將下載好的zookeeper壓縮包放在/usr/local/src目錄下,並解壓
tar -xvf zookeeper-3.4.13.tar.gz
(2)刪除壓縮包
rm zookeeper-3.4.13.tar.gz
(3)在/usr/local/src/zookeeper-3.4.13目錄下新增data目錄和log目錄
mkdir data
mkdir log
(4)可以看到當前zookeeper目錄如下
在這裏插入圖片描述
(5)進入data目錄,新增myid文件,並且內容填寫爲1(內容1對應zoo.cfg中配置的server.1範圍:1~255之間的整數,在集羣中必須唯一)
cd data
vim myid
(6)進入配置目錄,並複製zoo_sample.cfg文件爲zoo.cfg
cd ../conf
cp zoo_sample.cfg zoo.cfg
(7)編輯zoo.cfg文件,我編輯好的是這樣的

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/src/zookeeper-3.4.13/data
dataLogDir=/usr/local/src/zookeeper-3.4.13/log
clientPort=2181
server.1=192.168.156.32:2888:3888
server.2=192.168.156.206:2888:3888
server.3=192.168.156.46:2888:3888	

(8)查看防火牆狀態
firewall-cmd --state
如果看到的是running,說明防火牆是開啓的,則關閉防火牆
(9)關閉防火牆
systemctl stop firewalld.service

systemctl start firewalld.service              啓動防火牆
systemctl restart firewalld.service            重啓防火牆
firewall-cmd --reload                          輸入命令重新載入
firewall-cmd --zone=public --add-port=8080/tcp --permanent      開啓8080端口

–zone=public:表示作用域爲公共的;
–add-port=8080/tcp:添加tcp協議的端口8080;
–permanent:永久生效,如果沒有此參數,則只能維持當前服務生命週期內,重新啓動後失效;

(10)至此,一臺zookeeper已經安裝好了,爲了方便可以另外克隆兩臺虛擬機,並分別修改myid文件內容爲2,3,這樣就有了三臺安裝了zookeeper虛擬機了。我的三臺虛擬機的地址分別是上面配置的地址

server.1=192.168.156.32:2888:3888
server.2=192.168.156.206:2888:3888
server.3=192.168.156.46:2888:3888	

其中myid中的1,2,3分別對應server.1,server.2,server.3中的1,2,3
至此,zookeeper集羣便是搭建好了。
(11)啓動,停止,重啓服務

sh bin/zkServer.sh start				#啓動ZK服務
sh bin/zkServer.sh stop				    #停止ZK服務
sh bin/zkServer.sh restart			    #重啓ZK服務

(12)檢查服務
jps
可以看到一個進程QuorumPeerMain,他就是zookeeper進程,表示zookeeper啓動正常
(13)查看集羣狀態
sh bin/zkServer.sh status
在這裏插入圖片描述
在這裏插入圖片描述
(14)客戶端訪問
./zkCli.sh -server 192.168.156.32:2181
在這裏插入圖片描述
(15)常見問題:
It is probably not running
原因:很可能是由於防火牆沒有關閉或者myid文件沒有修改

至此,我們的zookeeper集羣搭建完畢,可以愉快的玩耍了!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章