作者:Grey
原文地址:ZooKeeper學習筆記一:叢集搭建
說明
單機版的zk安裝和執行參考:https://zookeeper.apache.org/doc/r3.6.3/zookeeperStarted.html
單機版的zk只適合用於測試或者開發環境,不適合用於生產環境。
本文主要介紹zk的叢集搭建。
環境
- CentOS 7
- ZooKeeper 3.6.3
準備工作
第一步,準備四個Linux例項,zk01~zk04,我的四個例項的ip分別是:
- zk01:192.168.205.145
- zk02:192.168.205.146
- zk03:192.168.205.147
- zk04:192.168.205.148
第二步,在四個例項中都安裝好jdk1.8。
安裝與配置
我們只需要在一臺例項上安裝並配置好zk,然後把安裝檔案和配置檔案scp到其他例項即可
在zk01中,下載並解壓zk安裝包:
cd /usr/local
## 下載zk3.6.3版本
wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
## 解壓
tar -xf apache-zookeeper-3.6.3-bin.tar.gz
## 重新命名
mv apache-zookeeper-3.6.3-bin zookeeper
加入環境變數
vi /etc/profile
在末尾加入:
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
執行
source /etc/profile
修改zk配置檔案:
# 把預設的zoo_sample.cfg拷貝一份zoo.cfg出來
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
修改zoo.cfg配置檔案中的如下配置
dataDir=/data/zookeeper
增加如下配置到zoo.cfg中
server.1=192.168.205.145:2888:3888
server.2=192.168.205.146:2888:3888
server.3=192.168.205.147:2888:3888
server.4=192.168.205.148:2888:3888
建立zk01的dataDir目錄
mkdir -p /data/zookeeper
在dataDir目錄下建立一個myid檔案,並寫入1
echo 1 > /data/zookeeper/myid
至此,zk01例項已經完全配置好了,現在將zk01例項上的一些安裝檔案和配置檔案拷貝到zk02~zk04上,
拷貝zk01上的profile檔案到zk02~zk04三個節點
## 拷貝到zk02,過程中會讓你輸入yes,以及zk02的密碼
scp /etc/profile 192.168.205.146:/etc
## 拷貝到zk03
scp /etc/profile 192.168.205.147:/etc
## 拷貝到zk04
scp /etc/profile 192.168.205.148:/etc
拷貝zk01的dataDir目錄到zk02~zk04三個節點,在zk01上執行:
scp -r /data/ 192.168.205.146:/
scp -r /data/ 192.168.205.147:/
scp -r /data/ 192.168.205.148:/
拷貝zk01的zookeeper程式到zk02~zk04三個節點, 在zk01上執行:
scp -r /usr/local/zookeeper 192.168.205.146:/usr/local/
scp -r /usr/local/zookeeper 192.168.205.147:/usr/local/
scp -r /usr/local/zookeeper 192.168.205.148:/usr/local/
至此,zk02zk04都準備好了相關檔案,現在連線zk02zk04,在zk02~zk04上分別執行如下操作
source /etc/profile
將zk02,zk03,zk04的myid檔案,修改成對應的值
vi /data/zookeeper/myid
zk02的/data/zookeeper/myid修改成2
zk03的/data/zookeeper/myid修改成3
zk04的/data/zookeeper/myid修改成4
配置防火牆
firewall-cmd --zone=public --add-port=3888/tcp --permanent
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --reload
啟動
在zk01~zk04上分別執行:
zkServer.sh start-foreground
檢視leader和follower
[root@zk01 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
說明此節點是follower節點
[root@zk03 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
在任意節點通過zk客戶端執行:
create /abc
set /abc "hello world"
其他節點都可以檢視到
[zk: localhost:2181(CONNECTED) 0] get /abc
hello world