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
相关推荐
xqlily2 分钟前
Linux操作系统之Ubuntu
linux·运维·ubuntu
阿部多瑞 ABU7 分钟前
《基于国产Linux的机房终端安全重构方案》
linux·安全
翰林小院24 分钟前
【大数据专栏】流式处理框架-Apache Fink
大数据·flink
倔强的石头10640 分钟前
【Linux指南】Makefile入门:从概念到基础语法
linux·运维·服务器
ajassi20001 小时前
linux C 语言开发 (七) 文件 IO 和标准 IO
linux·运维·服务器
程序猿编码1 小时前
基于 Linux 内核模块的字符设备 FIFO 驱动设计与实现解析(C/C++代码实现)
linux·c语言·c++·内核模块·fifo·字符设备
一只游鱼1 小时前
Zookeeper介绍与部署(Linux)
linux·运维·服务器·zookeeper
孟意昶1 小时前
Spark专题-第一部分:Spark 核心概述(2)-Spark 应用核心组件剖析
大数据·spark·big data
wheeldown2 小时前
【Linux】 存储分级的秘密
linux·运维·服务器
天天进步20152 小时前
掌握React状态管理:Redux Toolkit vs Zustand vs Context API
linux·运维·react.js