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
相关推荐
fantasy5_55 分钟前
Linux 动态进度条实战:从零掌握开发工具与核心原理
linux·运维·服务器
weixin_4624462314 分钟前
exo + tinygrad:Linux 节点设备能力自动探测(NVIDIA / AMD / CPU 安全兜底)
linux·运维·python·安全
..过云雨25 分钟前
17-2.【Linux系统编程】线程同步详解 - 条件变量的理解及应用
linux·c++·人工智能·后端
Miqiuha1 小时前
生成唯一id
分布式
oMcLin1 小时前
CentOS 7 频繁出现 “Connection Refused” 错误的原因分析与解决
linux·运维·centos
极客小云1 小时前
【突发公共事件智能分析新范式:基于PERSIA框架与大模型的知识图谱构建实践】
大数据·人工智能·知识图谱
饭九钦vlog2 小时前
银河麒麟修复openssh升级脚本
linux·运维
航Hang*2 小时前
第1章:初识Linux系统——第13节:总复习②
linux·笔记·学习·centos
Amy_au2 小时前
Linux week 01
linux·运维·服务器
Jinkxs2 小时前
Elasticsearch - 解决 Elasticsearch 内存占用过高的问题
大数据·elasticsearch·搜索引擎