zookeeper 集群搭建

本文详细介绍了如何在Linux上安装和配置ZooKeeper集群,包括创建用户组、用户,设置数据目录、配置文件,以及启动、重启和停止脚本。还涉及了防火墙规则的配置以允许必要的网络访问。

前言

本文着重介绍简单搭建 ZooKeeper 集群的基本流程,如果您想了解一些基础概念相关的,可以阅读如下文章:

机器准备

my_middleware-dev_10.12.3.40
my_middleware-dev_10.12.3.41
my_middleware-dev_10.12.3.42

安装 zookeeper

cd /data/downloads
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz
tar zxvf apache-zookeeper-3.8.1-bin.tar.gz
mv apache-zookeeper-3.8.1-bin /usr/local/
ln -snf /usr/local/apache-zookeeper-3.8.1-bin /usr/local/zookeeper

创建 zookeeper 专属用户组和用户

groupadd -g 1011 zookeeper
useradd -M -g zookeeper -u 1011 zookeeper  -s /sbin/nologin 

# 创建 zookeeper 需要的一些目录
mkdir -p /data/database/zookeeper
mkdir -p /data/logs/zookeeper
mkdir -p /usr/local/zookeeper/etc

# 创建需要的配置文件
touch /usr/local/zookeeper/etc/zoo.cfg
# 很重要的文件,如果没有这个文件会启动不了
touch /data/database/zookeeper/myid
# {num} 替换成你的序号,比如 echo  1  >  /data/database/zookeeper/myid ;每台服务器是不一样的
echo {num} >  /data/database/zookeeper/myid

# 授权文件和目录
chown -R zookeeper:zookeeper /data/database/zookeeper
chown -R zookeeper:zookeeper /data/logs/zookeeper
chown -R zookeeper:zookeeper /usr/local/zookeeper/etc

zookeeper 配置文件

# 假设是在 10.12.3.40 则对应的机器IP 替换成 0.0.0.0
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/database/zookeeper
clientPort=2181
maxClientCnxns=2000
server.1=0.0.0.0:2888:3888;2181
server.2=10.12.3.41:2888:3888;2181
server.3=10.12.3.42:2888:3888;2181

zookeeper 的启动文件

# 创建启动文件
touch /usr/local/zookeeper/script/start-cluster.sh
chmod +x /usr/local/zookeeper/script/start-cluster.sh
# vim /usr/local/zookeeper/script/start-cluster.sh 写入如下内容

#!/bin/bash
export ZK_HOME="/usr/local/zookeeper"
export ZOO_LOG_DIR="/data/logs/zookeeper"
export JMXPORT="9999" 
export JVMFLAGS="-Dcom.sun.management.jmxremote \
                  -Dcom.sun.management.jmxremote.local.only=false \
                  -Dcom.sun.management.jmxremote.authenticate=false \
                  -Dcom.sun.management.jmxremote.ssl=false -Xms100m -Xmx512m "
$ZK_HOME/bin/zkServer.sh start $ZK_HOME/etc/zoo.cfg

###############################################################################

# 创建重启文件
touch /usr/local/zookeeper/script/restart-cluster.sh
chmod +x /usr/local/zookeeper/script/restart-cluster.sh
# vim /usr/local/zookeeper/script/restart-cluster.sh 写入如下内容

#!/bin/bash
export ZK_HOME="/usr/local/zookeeper"
export ZOO_LOG_DIR="/data/logs/zookeeper"
export JMXPORT="9999" 
export JVMFLAGS="-Dcom.sun.management.jmxremote \
                  -Dcom.sun.management.jmxremote.local.only=false \
                  -Dcom.sun.management.jmxremote.authenticate=false \
                  -Dcom.sun.management.jmxremote.ssl=false -Xms100m -Xmx512m "
$ZK_HOME/bin/zkServer.sh restart $ZK_HOME/etc/zoo.cfg

###############################################################################

# 创建停止文件
touch /usr/local/zookeeper/script/stop-cluster.sh
chmod +x /usr/local/zookeeper/script/stop-cluster.sh
# vim /usr/local/zookeeper/script/stop-cluster.sh 写入如下内容

#!/bin/bash
export ZK_HOME="/usr/local/zookeeper"
$ZK_HOME/bin/zkServer.sh stop $ZK_HOME/etc/zoo.cfg


###############################################################################
# 处理特定用户启动的脚本
###############################################################################
cd /usr/local/zookeeper && touch run.sh && chmod +x run.sh

# vim  run.sh

#!/bin/sh

export ZOOKEEPER_SCRIPT=/usr/local/zookeeper/script

if [ "$1" = "start" ]; then
    sudo -u zookeeper /bin/sh $ZOOKEEPER_SCRIPT/start-cluster.sh
elif [ "$1" = "restart" ]; then
    sudo -u zookeeper /bin/sh $ZOOKEEPER_SCRIPT/restart-cluster.sh
elif [ "$1" = "stop" ]; then
    sudo -u zookeeper /bin/sh $ZOOKEEPER_SCRIPT/stop-cluster.sh
else
    echo "Usage: $0 [start|restart|stop]"
    exit 1
fi

防火墙放行对应的端口策略

iptables -A INPUT -s 10.12.3.0/24 -p tcp -i eth0 -m multiport --dports 2181,2888,3888,9999 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -p tcp -i eth0 -m multiport --dports 2181,2888,3888,9999 -j ACCEPT

# 办公网段开放
iptables -A INPUT -s 10.4.0.0/16 -p tcp -i eth0 -m multiport --dports 2181 -j ACCEPT
iptables -A INPUT -s 10.3.0.0/16 -p tcp -i eth0 -m multiport --dports 2181 -j ACCEPT
# 放行 VPN 网段
iptables -A INPUT -s 192.168.41.0/16 -p tcp -i eth0 -m multiport --dports 2181 -j ACCEPT
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不认输的猴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值