Zookeeper - [04] 分布式安装部署

 

一、集群规划

序号 主机名 JDK Zookeeper
1 node01
2 node02
3 node03

 

 

二、安装部署

 

1、将zookeeper安装包解压到合适的目录,如/opt/module/目录下

tar -zxvf zookeeper-x.x.x.tar.gz -C /opt/module/

2、创建data目录,并创建myid文件

cd /opt/module/apache-zookeeper-3.5.7-bin
mkdir -p data
echo 1 > data/myid

myid中只填编号

主机名 node01 node02 node03
myid 1 2 3

3、配置myid文件

# 备份zoo_sample.cfg
cd /opt/module/apache-zookeeper-3.5.7-bin/conf
cp -a zoo_sample.cfg zoo.cfg

# 配置数据存储路径以及cluster部分
vi zoo.cfg

...
# 数据存储路径
dataDir=/opt/module/zookeeper-x.x.x/data
...
####################cluster#####################
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888

cluster部分解读:server.A=B:C:D

A:这个是一个数字,表示这是第几号服务器。集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里有且只有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个Server。

B:是这个server.A对应的节点的地址;

C:是这个节点Follower与集群中的Leader服务器交换信息的端口;

4、分别启动zookeeper服务

[root@node01 zookeeper-x.x.x]# bin/zkServer.sh start
[root@node02 zookeeper-x.x.x]# bin/zkServer.sh start
[root@node03 zookeeper-x.x.x]# bin/zkServer.sh start

5、查看状态

[root@node01 zookeeper-x.x.x]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-x.x.x/bin/../conf/zoo.cfg
Mode: follower
[root@node02 zookeeper-x.x.x]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-x.x.x/bin/../conf/zoo.cfg
Mode: follower
[root@node03 zookeeper-x.x.x]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-x.x.x/bin/../conf/zoo.cfg
Mode: leader

 

三、群起脚本

脚本使用前提

1、配置三个zookeeper节点之间的ssh免密(点此查看配置方法

2、配置三个zookeeper节点的/etc/hosts文件

3、群起脚本可以放在master节点,也可以三个节点上都放一份。

脚本内容如下

#!/bin/bash

# 定义ZooKeeper服务器列表
SERVERS=("ctos79-01" "ctos79-02" "ctos79-03")

# 定义ZooKeeper安装路径
INSTALL_PATH="/opt/module/apache-zookeeper-3.5.7-bin/bin"

# 定义操作函数
function zk_operation() {
    operation=$1

    # 遍历所有服务器
    for server in "${SERVERS[@]}"; do
        echo "在 ${server} 上执行 $operation 操作..."
        ssh ${server} "source /etc/profile; ${INSTALL_PATH}/zkServer.sh $operation"
        if [ $? -eq 0 ]; then
            echo "[$server] ZooKeeper $operation 成功."
        else
            echo "[$server] ZooKeeper $operation 失败,请检查错误."
        fi
    done
}

# 主控制逻辑
case "$1" in
    "status")
        zk_operation "status"
        ;;
    "start")
        zk_operation "start"
        ;;
    "stop")
        zk_operation "stop"
        ;;
    "restart")
        zk_operation "restart"
        ;;
    *)
        echo "Usage: $0 {status|start|stop|restart}"
        exit 1
        ;;
esac

exit 0

脚本使用:以脚本名称 zkCluster.sh为例

# 查看zookeeper集群状态
sh zkCluster.sh status
# 关闭zookeeper集群
sh zkCluster.sh stop
# 启动zookeeper集群
sh zkCluster.sh start|restart

 

 

 

— 要养成终生学习的习惯 —

posted @ 2023-06-01 09:33  HOUHUILIN  阅读(17)  评论(0编辑  收藏  举报