zookeep集群至少需要三台才能实现高可用

安装JDK

  • 三台都需要 10.11.19.1 10.11.19.6 10.11.19.7
# mkdir /usr/java
# tar xf jdk-8u221-linux-x64.tar.gz -C /usr/java
# ln -s /usr/java/jdk1.8.0_221 /usr/java/jdk
# vi /etc/profile

export JAVA_HOME=/usr/java/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

# source /etc/profile
# java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

安装zookeeper

  • 三台都需要 10.11.19.1 10.11.19.6 10.11.19.7
cd /opt
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
tar -xvf zookeeper-3.4.12.tar.gz
mkdir -p /data/zookeeper
mkdir -p /data/zookeeper/log

我的zookeeper配置

  • 10.11.19.1 10.11.19.6 10.11.19.7
# cat /opt/zookeeper-3.4.12/conf/zoo.cfg
tickTime=2000
dataDir=/data/zookeeper
dataLogDir=/data/zookeeper/log
clientPort=2181
initLimit=5
syncLimit=2
maxClientCnxns=60

server.1=10.11.19.1:2888:3888
server.2=10.11.19.6:2888:3888
server.3=10.11.19.7:2888:3888
  • 10.11.19.1
cat /data/zookeeper/myid
1
  • 10.11.19.6
cat /data/zookeeper/myid
2
  • 10.11.19.7
cat /data/zookeeper/myid
3

zookeeper启动

ansible zookeeper -m shell -a "/opt/zookeeper-3.4.12/bin/ start"
  • 使用去检测zk状态
/opt/zookeeper-3.4.12/bin/

zk有三个端口,注意如果开了防火墙,要放行端口: 3个端口的作用 1、2181:对cline端提供服务 2、3888:选举leader使用 3、2888:集群内机器通讯使用(Leader监听此端口)

zookeeper停止

ansible zookeeper -m shell -a "/opt/zookeeper-3.4.12/bin/ stop"

为保证万一,把整个zk集群全部按照顺序重启了一遍 三个几点依次都用去连了一下,状态都是OK的 重新启动kafka,就OK啦

  • 之前已有zookep集群了,这里可以参考 伪集群搭建

zookeeper 集群使用 Raft 选举模式,故至少要三个节点(生产中应部署在三个不同的服务器实例上,这里用于演示就不那么做了)。

# 复制三分节点配置
cp config/zookeeper.properties config/zookeeper.2181.properties
cp config/zookeeper.properties config/zookeeper.2182.properties
cp config/zookeeper.properties config/zookeeper.2183.properties

修改配置 config/zookeeper.2181.properties

# the directory where the snapshot is stored.
dataDir=/tmp/zookeeper/2181
# the port at which the clients will connect
clientPort=2181
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=0
tickTime=2000
initLimit=10
syncLimit=5
server.1=localhost:12888:13888
server.2=localhost:22888:23888
server.3=localhost:32888:33888

config/zookeeper.2182.properties 修改clientPort=2182 dataDir=/tmp/zookeeper/2182 其他一致 config/zookeeper.2183.properties 修改clientPort=2183 dataDir=/tmp/zookeeper/2183 其他一致

主要是修改服务端口clientPort和数据目录dataDir,其他参数表征如下: tickTime=2000为zk的基本时间单元,毫秒 initLimit=10Leader-Follower初始通信时限(tickTime*10) syncLimit=5Leader-Follower同步通信时限(tickTime*5) server.实例集群标识=实例地址:数据通信端口:选举通信端口

为实例添加集群标识

echo 1 >> /tmp/zookeeper/2181/myid
echo 2 >> /tmp/zookeeper/2182/myid
echo 3 >> /tmp/zookeeper/2183/myid

启动集群服务

bin/ config/zookeeper.2181.properties
bin/ config/zookeeper.2182.properties
bin/ config/zookeeper.2183.properties