zookeeper-3.6.4集群搭建

1、上传zookeeper安装包并解压

上传路径:/opt/software/

解压路径:/opt/module/

2、创建数据目录及日志目录

bash 复制代码
#数据目录:/data/zookeeper/data/
#3台机器创建存储目录:
sudo mkdir -p /data/zookeeper/data
bash 复制代码
#日志目录:/data/log/zookeeper
#3台机器创建日志目录:
sudo mkdir -p /data/log/zookeeper
sudo chown -R bigdata:bigdata /data/zookeeper/

3、修改配置

解压一份 zookeeper 安装包,修改其配置文件 zoo.cfg,内容如下。之后将目录分发到其他服务器上

bash 复制代码
sudo chown -R bigdata:bigdata /opt/module/apache-zookeeper-3.6.4-bin/
cd /opt/module/apache-zookeeper-3.6.4-bin/conf
cp zoo_sample.cfg zoo.cfg 
bash 复制代码
dataDir=/data/zookeeper/data/
dataLogDir=/data/log/zookeeper/
clientPort=2181
tickTime=5000
initLimit=10
syncLimit=10
maxClientCnxns=256
minSessionTimeout=86400000
maxSessionTimeout=86400000
autopurge.purgeInterval=24
autopurge.snapRetainCount=5
quorum.auth.enableSasl=false
quorum.cnxn.threads.size=20
server.2=node2:3181:4181
server.3=node3:3181:4181
server.4=node4:3181:4181

添加java环境变量

bash 复制代码
vim /opt/module/apache-zookeeper-3.6.4-bin/bin/zkEnv.sh
bash 复制代码
JAVA_HOME="/usr/java/jdk1.8.0_212"

4、标识节点

分别在3个节点的 dataDir 目录下新建 myid 文件,并写入对应的节点标识。Zookeeper 集群通过 myid 文件识别集群节点,并通过上文配置的节点通信端口和选举端口来进行节点通信,选举出 Leader 节点。

创建并写入节点标识到 myid 文件:
node2服务器

bash 复制代码
echo "2" > /data/zookeeper/data/myid

node3服务器

bash 复制代码
echo "3" > /data/zookeeper/data/myid

node4服务器

bash 复制代码
echo "4" > /data/zookeeper/data/myid

5、配置zookeeper数据输出路径

修改log4j.properties的zookeeper.log.dir=. 发现不生效
需修改bin/zkEnv.sh

bash 复制代码
#ZOO_LOG_DIR="$ZOOKEEPER_PREFIX/logs"
ZOO_LOG_DIR="/data/log/zookeeper"

6 启动集群验证

分别在3台主机上,执行如下命令启动服务:

bash 复制代码
/opt/module/apache-zookeeper-3.6.4-bin/bin/zkServer.sh start

启动后使用zkServer.sh status查看集群各个节点状态,其中有一个节点是leader,有两个节点是follower,证明zookeeper集群是部署成功的

7、使用systemctl管理zookeeper集群

在node2添加文件 zookeeper.service

bash 复制代码
sudo vim /usr/lib/systemd/system/zookeeper.service
bash 复制代码
[Unit]
Description=Zookeeper
After=network.target remote-fs.target

[Service]
Type=forking
ExecStart=/opt/module/apache-zookeeper-3.6.4-bin/bin/zkServer.sh start
ExecStop=/opt/module/apache-zookeeper-3.6.4-bin/bin/zkServer.sh stop
ExecReload=/opt/module/apache-zookeeper-3.6.4-bin/bin/zkServer.sh restart
User=bigdata
Group=bigdata
Restart=always
SuccessExitStatus=0 143

[Install]
WantedBy=default.target

分发到其他节点

启动、关闭验证是否配置成功

bash 复制代码
sudo systemctl start zookeeper
sudo systemctl stop zookeeper
sudo systemctl status zookeeper
sudo systemctl enable zookeeper

8、在主节点创建一个集群启停脚本

bash 复制代码
sudo vim /opt/bash/zookeeper.sh
bash 复制代码
#!/bin/bash
# zookeeper节点列表
# 在这里修改为自己的实际节点IP地址
nodes=(node2 node3 node4)

# 循环遍历所有节点执行相同的命令
cmd=$1
if [ "$cmd" != "" ];then
       if [[ "start" == "$cmd" ]] || [[ "stop" == "$cmd" ]] || [[ "restart" == "$cmd" ]] || [[ "status" == "$cmd" ]] ;then
              for host in ${nodes[@]} ; do
                  echo "=================== $host =================="
                  ssh $host "sudo systemctl $cmd zookeeper"
                  echo "$cmd Zookeeper on $host success..."
              done
        else
               echo "  输入的参数不对"
               echo "  start   启动zookeeper集群"     
               echo "  stop    停止zookeeper集群"
               echo "  restart 重启zookeeper集群"
               echo "  status  查看zookeeper集群"
       fi
else
       echo "请传入一个参数(start|stop|restart|status)"
fi

添加执行权限

bash 复制代码
chmod +x /opt/bash/zookeeper.sh

脚本使用方式

bash 复制代码
/opt/bash/zookeeper.sh start/stop/status/restart
相关推荐
程序员-Benothing6 小时前
Vim编辑器从入门到精通:模式、快捷键、配置、插件
linux·运维·服务器
Leo.yuan6 小时前
2026年实时数据同步工具怎么选?GoldenGate、Striim、SeaTunnel、FineDataLink 5.0横评
大数据
sm_926787056 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
龙亘川6 小时前
AI 协同赋能城市治理:支撑政协数字化履职的技术路径探析
大数据·人工智能·智慧城市·开源软件·数据可视化
‎ദ്ദിᵔ.˛.ᵔ₎7 小时前
linux 进程信号 (上)
linux·服务器
逸模7 小时前
BIM在连锁餐饮装修中的应用:不只是画三维图
大数据·数据库·人工智能·物联网·建模
15Moonlight7 小时前
Linux网络(02):Socket 编程 UDP
linux·网络·udp
此时不提桶,更待何时7 小时前
06-18-A-RabbitMQ消息特性与消费机制详解
分布式·rabbitmq
liliangcsdn7 小时前
Deepseek R1与V4 Pro参数量对比
大数据
wuminyu7 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++