技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录

下次自动登录
现在的位置: 首页Linux>正文
Linux系统下安装部署最新版3节点ZooKeeper集群环境
2025年10月13日 Linux 暂无评论 ⁄ 被围观 26次+

1、ZooKeeper介绍

1.1、ZooKeeper 在 Java 版本 1.8 或更高版本中运行(JDK 8 LTS、JDK 11 LTS、JDK 12 - 不支持 Java 9 和 10),它作为 ZooKeeper 服务器的集合运行,三个 ZooKeeper 服务器是一个整体的最小推荐大小,我们还建议它们在不同的机器上运行。

1.2、ZooKeeper 集群强烈建议使用奇数台机器,例如,在四台机器上,ZooKeeper 只能处理一台机器的故障;如果两台机器发生故障,则其余两台机器不构成多数。但是,如果有五台机器,ZooKeeper 可以处理两台机器的故障。容错集群设置至少需要三台服务器。

1.3、通常三台服务器对于生产安装来说绰绰有余,但为了在维护期间获得最大的可靠性,您可能希望安装五台服务器。

1.4、官方网站:

https://zookeeper.apache.org/

1.5、下载地址:

目前最新版本

https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.9.4/apache-zookeeper-3.9.4-bin.tar.gz

1.6、说明文档:

https://zookeeper.apache.org/doc/current/zookeeperAdmin.html

2、部署zookeeper集群,这里使用三台服务器组成集群模式。

操作系统:AnolisOS

ip地址:192.168.21.201,192.168.21.202,192.168.21.203

zookeeper默认使用2181端口,集群模式还会用到2888、3888端口,建议zookeeper部署在内网环境中,服务器上关闭防火墙、关闭SELINUX。

分别在三台服务器上操作。

2.1、安装Java

ZooKeeper依赖Java才能运行,首先安装Java环境,我们使用Java 25版本

Linux系统下安装Java JDK:https://www.osyunwei.com/archives/16760.html

2.2、安装ZooKeeper

mkdir -p /data/server/zookeeper #创建安装目录

mkdir -p /data/server/zookeeper/data #创建数据目录

mkdir -p /data/server/zookeeper/logs #创建日志目录

下载目录:/usr/local/src/apache-zookeeper-3.9.4-bin.tar.gz

cd /usr/local/src/

tar zxvf apache-zookeeper-3.9.4-bin.tar.gz -C /data/server/zookeeper --strip-components 1

#拷贝配置文件

cp /data/server/zookeeper/conf/zoo_sample.cfg /data/server/zookeeper/conf/zoo.cfg

vi /data/server/zookeeper/conf/zoo.cfg #修改添加,注意端口等参数不要重复添加,否则启动失败

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/server/zookeeper/data #数据目录

dataLogDir=/data/server/zookeeper/logs #日志目录

clientPort=2181

admin.enableServer=false #禁用内置的 AdminServer(Web UI 管理页面)

#需要开启添加下面的参数

#admin.enableServer=true

#admin.serverPort=8080 #默认是8080端口

#禁用所有 four letter word 命令

4lw.commands.whitelist=

#或者只允许特定的命令

#4lw.commands.whitelist=stat, ruok, conf

#添加zookeeper节点

#服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)

#本机的地址也可以写成server.1=0.0.0.0:2888:3888

server.1=192.168.21.201:2888:3888

server.2=192.168.21.202:2888:3888

server.3=192.168.21.203:2888:3888

#保留最近的 3 个快照和日志文件,并每隔 24 小时自动清理一次

autopurge.snapRetainCount=3

autopurge.purgeInterval=24

:wq! #保存退出

#添加myid文件,每个节点的内容不同,分别对应server.1的这个数字1,server.2的这个数字2,server.3的这个数字3

echo "1" >/data/server/zookeeper/data/myid #192.168.21.201设置为1

echo "2" >/data/server/zookeeper/data/myid #192.168.21.202设置为2

echo "3" >/data/server/zookeeper/data/myid #192.168.21.203设置为3

:wq! #保存退出

vi /etc/profile #配置环境变量

#set zookeeper environment

export ZOOKEEPER_HOME=/data/server/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

:wq! #保存退出

source /etc/profile #使配置立即生效

启动命令:/data/server/zookeeper/bin/zkServer.sh start

停止命令:/data/server/zookeeper/bin/zkServer.sh stop

重启命令:/data/server/zookeeper/bin/zkServer.sh restart

状态查看命令:/data/server/zookeeper/bin/zkServer.sh status

#创建系统服务

vi /etc/systemd/system/zookeeper.service

[Unit]

Description=Apache ZooKeeper Server

After=network.target

[Service]

Type=forking

User=root

Group=root

Environment="JAVA_HOME=/data/server/java/jdk-25+36"

WorkingDirectory=/data/server/zookeeper

ExecStart=/data/server/zookeeper/bin/zkServer.sh start

ExecStop=/data/server/zookeeper/bin/zkServer.sh stop

ExecReload=/data/server/zookeeper/bin/zkServer.sh restart

Restart=on-failure

RestartSec=10

[Install]

WantedBy=multi-user.target

:wq! #保存退出

#重载并启用

systemctl daemon-reload

systemctl enable --now zookeeper

systemctl restart zookeeper

#验证

systemctl status zookeeper

/data/server/zookeeper/bin/zkServer.sh status

2.3设置ZooKeeper访问权限,只允许指定ip访问ZooKeeper服务

设置ZooKeeper访问权限,只允许指定ip访问ZooKeeper服务

低版本ZooKeeper 的 ip:ACL 只能针对单个 IP 地址,比如 ip:192.168.21.100:cdrwa,不支持 ip:192.168.21.0/24这种 CIDR 网段写法!​

设置白名单ip网络段(zk版本要求3.5以上,一定要将127.0.0.1添加到ip白名单过滤)

#登录ZooKeeper控制台

/data/server/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181

getAcl / #查看当前权限

setAcl / ip:127.0.0.1:cdrwa #允许本机

setAcl / ip:192.168.21.201:cdrwa #允许某个内网 IP

setAcl / ip:192.168.21.202:cdrwa #允许另一个内网 IP

setAcl / ip:192.168.21.0/24:cdrwa #允许一个网段

#可以写在一起

setAcl / ip:127.0.0.1:cdrwa,ip:192.168.21.201:cdrwa,ip:192.168.21.202:cdrwa,ip:192.168.21.203:cdrwa,ip:192.168.21.0/24:cdrwa

#验证

/data/server/zookeeper/bin/zkCli.sh -server 192.168.21.201:2181

getAcl / #查看当前权限

注意:

1、设置 IP 白名单时,一定要包含本机 IP 127.0.0.1,确保本机可以访问和修改

2、ZooKeeper 的 setAcl 是覆盖式的!后续添加白名单时,必须把之前所有的 IP 都重新写一遍,否则之前设置的会被覆盖掉

3、如果想恢复为“所有 IP 都可以访问”,可以执行以下命令setAcl / world:anyone:cdrwa

4、ZooKeeper 中通过 setAcl设置的 ACL(访问控制列表)规则是 ​持久化存储在 ZooKeeper 内部数据中的

5、重启 ZooKeeper 服务后,你之前通过 setAcl设置的 ACL 规则(比如 IP 白名单)仍然会保留,不需要重新添加。​

至此,Linux系统下安装部署最新版3节点ZooKeeper集群环境完成。

     

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2025 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接
陕ICP备11001040号-3