ZooKeeper學習筆記一:叢集搭建

Grey Zeng 發表於 2021-06-05
ZooKeeper

作者: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

[[email protected] ~]# 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節點

[[email protected] ~]# 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