本文主要介紹zk的安裝,和簡單的集群化部署,以能正常啟動為結果導向。
1 環境介紹
操作系統:centos7
下載地址 https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso (在阿里雲鏡像 https://opsx.alibaba.com/mirror 中找的)
zk版本: 3.4.10
下載地址:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/
(使用前確認jdk已經正確安裝)
2 安裝wget(如果以安裝 跳過該步驟)
2.1 查看wget 命令是否安裝
rpm -qa | grep wget 查找某軟件包是否安裝,用 rpm -qa | grep "軟件或者包的名字"。
2.2 安裝wget
yum –y install wget
3 安裝zk
3.1 下載
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
3.2 解壓
tar -zxvf zookeeper-3.4.10.tar.gz
3.3 移動目錄到usr/local下面
mv ./zookeeper-3.4.10 /usr/local
4 單機部署多個zk實例(偽分布式)
這里部署3個實例
4.1 進入zk文件夾下的conf的文件
cd ./zookeeper-3.4.10/conf/
4.2 打開 zoo_sample.cfg 文件,我們先認識一下這個文件
這里先關注兩個參數
dataDir:用於存放zk數據的文件夾。
clientPort:服務的監聽端口。
4.2 把zoo_sample.cfg 文件復制一份叫 zoo1.cfg,作為實例1的配置
4.2.1 復制 cp zoo_sample.cfg zoo1.cfg
4.2.2 修改 zoo1.cfg 的 dataDir 存放的位置(不是必須),文件夾先建好
4.2.3 在最后添加集群信息
server.[myid] = hostname:節點同步數據端口:zk選舉接口
myid 和hostname后面會配置
4.3 從zoo1.cfg 復制出兩份zoo2.cfg 和zoo3.cfg 分別作為實例2 和實例3的配置
修改zoo2.cfg 的dataDir 和 clientPort
修改 zoo3.cfg 的dataDir 和 clientPort
總結:zoo1,cfg zoo2.cfg zoo3.cfg 三分文件 除了端口和文件目錄外 其他都一致
4.4 配置myid信息
4.4.1 進入dataDir 所配置的目錄 ,應該有3個文件夾
4.4.2 分別進入這三個文件夾 創建myid文件
cd zk1
touch myid
4.4.3 分別給這3個myid文件寫入1,2,3 即在4.2.3中配置的server后面的id
用如下命令分別寫入
echo 1 >> ./zk1/myid
echo 2 >> ./zk2/myid
echo 3 >> ./zk3/myid
4.5 修改你所在機器的hostname,這里我需要改成master
有兩種修改方式 , 一種是臨時修改,機器重啟后會自動還原, 一種是永久修改。我這里用臨時修改。
#hostname master
· 然后重新連接就能看到hostname 被修改成功了
5 啟動,查看
進入到bin目錄
啟動三個實例
# ./zkServer.sh start ../conf/zoo1.cfg
# ./zkServer.sh start ../conf/zoo2.cfg
# ./zkServer.sh start ../conf/zoo3.cfg
當存在實例沒有啟動的時候,你查看已啟動的狀態會出現如下異常
查看狀態的命令 即把 啟動命令中的start換成status
當3個實例全部啟動后,使用jps命令查看是否啟動
jps 要做安裝jdk后才能使用,當看到出現3個QuorumPeerMain的時候表示成功
全部啟動成功后,然后查看實例的狀態 這里我查看實例3的狀態
# ./zkServer.sh status ../conf/zoo3.cfg
這里可以看到 實例3 是個follower ,實例1和實例2中有一個master.
6 真分布式
即把上面的三個實例分布在不同的機器上,然后分別配置自己的zoo.cfg文件和myid ,然后分別啟動即可
7 總結
在配置過程中,要注意3個實例的端口號不能沖突,myid文件必須在各種的數據目錄下面,myid的內容必須和你配置的集群信息相同
當3個實例全部啟動后,查看狀態的時候,出現Error contacting service.It is probably not running ,可能原因是防火牆沒有關閉。可以嘗試關閉防火牆
同時可以在bin目錄下的zookeeper.out文件中查看出錯的具體原因。
一個集群有N個節點,必須保證有N/2 +1個幾點正常,集群才能正常工作,推薦集群節點總是為基數