安装zookeeper
1. 下载
- 检查jdk版本, Zookeeper 依赖于 Java8 以上环境
java -version
- 下载zk, 我这里下载的是3.6.4
https://archive.apache.org/dist/zookeeper/
2. 上传, 解压
tar -zxvf apache-zookeeper-3.6.4-bin.tar.gz -C /opt/app/apache-zookeeper-3.6.4
3. 配置 Zookeeper 节点
- 复制zoo_sample.cfg为zoo.cfg, 然后编辑
# tickTime 是一个核心配置参数,定义了 Zookeeper 的基本时间单位。
# 它用于控制和影响其他一些时间相关的配置,例如会话超时、Leader 与 Follower 之间的心跳检测等。
tickTime=2000
# initLimit 指定了 Follower 从服务器在启动时与 Leader 服务器进行数据同步的最大时间。
# 如果从服务器在规定的 initLimit 时间内未完成与 Leader 的同步,则 Zookeeper 会认为该从服务器无法正常加入集群。
# 如果 tickTime=2000 毫秒(2 秒),那么 initLimit=10 就表示允许的初始化同步时间为 10 * 2000 = 20000 毫秒(即 20 秒)。
initLimit=10
# syncLimit 指定了 Leader 和 Follower 之间心跳消息的超时时间。
# 如果一个 Follower 在规定的 syncLimit 时间内无法收到 Leader 的消息,
# Zookeeper 会认为该 Follower 已失效并从集群中剔除。
syncLimit=5
# 在 Zookeeper 中,快照是指当前节点数据的备份。
# Zookeeper 会定期将内存中的数据状态保存为一个快照文件,存储在指定的目录中,
# 以便在服务器重启或崩溃时可以从快照恢复数据。
dataDir=/opt/app/apache-zookeeper-3.6.4/data
# 客户端连接的地址
clientPort=8111
# 每个客户端(根据客户端的 IP 地址区分)对单个 Zookeeper 服务器的最大连接数。
maxClientCnxns=60
# 用于自动清理旧数据的配置参数。它控制 Zookeeper 定期清理旧的快照(snapshot)文件和事务日志的频率
# 默认情况下,autopurge.purgeInterval 为 0,表示不启用自动清理功能。在这里先用默认的。
autopurge.purgeInterval=0
# 集群节点信息
# 8112 端口:用于 Follower 和 Leader 之间的通信。
# 8113 端口:用于 Leader 选举。
server.1=192.168.0.170:8112:8113
server.2=192.168.0.171:8112:8113
server.3=192.168.0.149:8112:8113
# 监控工具
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
4. 创建 myid 文件
- 在每台机器上的zookeeper数据目录下创建myid, 然后执行以下命令
echo "1" > /opt/app/apache-zookeeper-3.6.4/data/myid # 在 192.168.0.170 机器上, 和zoo.cfg中的server.1对应
echo "2" > /opt/app/apache-zookeeper-3.6.4/data/myid # 在 192.168.0.171 机器上, 和zoo.cfg中的server.2对应
echo "3" > /opt/app/apache-zookeeper-3.6.4/data/myid # 在 192.168.0.149 机器上, 和zoo.cfg中的server.3对应
5. 启动参数更改
- 进入bin目录, 更改zkEnv.sh中的启动参数
vim /opt/app/apache-zookeeper-3.6.4/bin/zkEnv.sh
- 更改SERVER_JVMFLAGS, 设置jvm初始化内存与最大堆内存
export SERVER_JVMFLAGS="-Xms4g -Xmx4g"
6. sh文件授权
- 进入bin目录
cd /opt/app/apache-zookeeper-3.6.4/bin
- 授予.sh执行权限
chmod 755 *.sh
7. 启动集群
- 在每台机器上启动zk
/opt/app/apache-zookeeper-3.6.4/bin/zkServer.sh start
- 然后检查每台机器zk状态
/opt/app/apache-zookeeper-3.6.4/bin/zkServer.sh status
- 停止命令如下
/opt/app/apache-zookeeper-3.6.4/bin/zkServer.sh stop
8. 防火墙开启端口
- 开启端口
firewall-cmd --add-port=8111/tcp --permanent
firewall-cmd --add-port=8112/tcp --permanent
firewall-cmd --add-port=8113/tcp --permanent
- 重启防火墙
firewall-cmd --reload
验证集群
- 使用 Zookeeper 客户端连接
/opt/app/apache-zookeeper-3.6.4/bin/zkCli.sh -server ip:port