前言
本文着重介绍简单搭建 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

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

被折叠的 条评论
为什么被折叠?



