一、前言
zookeeper集群中,只有超过半数节点可用才能提供服务,所以节点最好是基数。例如有3个节点,其中一个节点运行出了故障,有两台是正常的,因为超过半数可以提供服务。如果有4个节点,其中有两个节点出故障,剩余2个节点不超过半数,不能提供服务,也就是4个节点也只能处理一个节点故障。
二、部署zookeeper所需要的系统环境
1. 3台机器(可用虚拟机搞或者在同一台机器指定不同端口号)
192.168.198.128
192.168.198.129
192.168.198.130
2. 修改三台主机的/etc/hosts文件,指定主机名与ip的映射
192.168.17.161 server1
192.168.17.162 server2
192.168.17.163 server3
3. zookeeper的运行依赖于jdk,确保机器已经安装了jdk
zookeeper支持运行在jdk1.8、jdk11、jdk12,不支持jdk9和jdk10
jdk的安装可参考在centos8中下载和安装openJDK
4. 关闭防火墙或者设置三台机器的2181、2888、3888端口互通
2181端口是给客户端连接的端口
2888端口是给集群选举用的端口
3888端口是给集群进行通讯同步数据的端口
如果端口不通启动zookeeper时会报“java.net.NoRouteToHostException: No route to host (Host unreachable)”的异常
可以通过systemctl stop firewalld.service关闭防火墙
三、下载和解压3.6.1版本的zookeeper
1.进入准备server1的安装目录 cd /data
2. 下载zookeeper
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
3. 解压下载好的包
tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz
4. 把目录名称改短一些
mv apache-zookeeper-3.6.1-bin zookeeper3.6.1
5. 创建内存快照的存放目录以及事务日志目录
如果有条件的话这两个目录尽量分开存储,zookeeper的增删改会有产生大量的事务日志类似于MySQL的binlog
mkdir -p /data/zookeeper3.6.1/data
mkdir -p /data/zookeeper3.6.1/logs
四、给三台机器配置以下zookeeper环境变量
1. 在/etc/profile文件的末尾添加一下两行配置
export ZOOKEEPER_HOME=/data/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
2. 刷新配置:source /etc/profile
五、修改zookeeper的配置文件
server1:
1. 设置节点的myid
echo "1" > /data/zookeeper3.6.1/data/myid
2. 修改中刚解压好的zookeeper的配置文件/data/zookeeper3.6.1/conf/zoo.cfg
#把示例配置文件的文件修改为zoo.cfg:mv zoo_sample.cfg zoo.cfg
#修改配置:
# 心跳单位,2s
tickTime=2000
# zookeeper初始化的同步超时时间,10个心跳单位,也即20s
initLimit=10
# 普通同步:发送一个请求并得到响应的超时时间,5个心跳单位也即10s
syncLimit=5
# 内存快照数据的存储位置
dataDir=/data/zookeeper3.6.1/data
# 事务日志的存储位置
dataLogDir=/data/zookeeper3.6.1/logs
# 当前zookeeper节点的端口
clientPort=2181
# 单个客户端到集群中单个节点的并发连接数,通过ip判断是否同一个客户端,默认60
maxClientCnxns=1000
# 保留7个内存快照文件在dataDir中,默认保留3个
autopurge.snapRetainCount=7
# 清除快照的定时任务,默认1小时,如果设置为0,标识关闭清除任务
autopurge.purgeInterval=1
#允许客户端连接设置的最小超时时间,默认2个心跳单位
minSessionTimeout=4000
#允许客户端连接设置的最大超时时间,默认是20个心跳单位,也即40s,
maxSessionTimeout=300000
#集群地址配置
server.1=server1:2888:3888
server.2=server2:2888:3888
server.3=server3:2888:3888
3. 修改日志配置,默认会写控制台,修改为每天产生一个日志文件
#修改/data/zookeeper3.6.1/bin/zkEnv.sh文件
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="$ZOOKEEPER_PREFIX/logs"
fi
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
ZOO_LOG4J_PROP="INFO,CONSOLE"
fi
#改成:
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="../logs"
fi
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
fi
#修改/data/zookeeper3.6.1/bin/zkServer.sh的日志配置名称
ZOO_LOG_FILE=zookeeper-$USER-server-$HOSTNAME.log
_ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper-$USER-server-$HOSTNAME.out"
#改为:
ZOO_LOG_FILE=zookeeper.log
_ZOO_DAEMON_OUT="$ZOO_LOG_DIR/zookeeper.out"
#修改/data/zookeeper3.6.1/conf/log4j.properties文件,如下图所示
zookeeper.root.logger=INFO,CONSOLE
zookeeper.log.dir=./
zookeeper.log.file=zookeeper.log
zookeeper.log.maxfilesize=100MB
log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender
#改为:
zookeeper.root.logger=INFO,ROLLINGFILE
zookeeper.log.dir=/data/zookeeper3.6.1/logs
zookeeper.log.file=zookeeper.log
zookeeper.log.maxfilesize=100MB
log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender
4. 修改jvm heap大小
#默认的jvm对内存是1000M,可根据压测情况合理设置堆内存的大小
#可通过修改ZK_SERVER_HEAP:-1024这个参数的方式来调整堆内存的大小
ZK_SERVER_HEAP="${ZK_SERVER_HEAP:-1024}"
export SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS"
六、复制到其他节点,并修改myid
#server1 复制修改好的目录到server2和server3
scp -r /data/zookeeper3.6.1/ root@server2:/data
scp -r /data/zookeeper3.6.1/ root@server3:/data
#server2 把server2中的zookeeper的myid修改为2
echo "2" > /data/zookeeper3.6.1/data/myid
#server3 把server3中的zookeeper的myid修改为3
echo "3" > /data/zookeeper3.6.1/data/myid
七、分别启动zookeeper三个节点
#server1:
cd /data/zookeeper3.6.1/bin
./zkServer.sh start
#server2:
cd /data/zookeeper3.6.1/bin
./zkServer.sh start
#server3:
cd /data/zookeeper3.6.1/bin
./zkServer.sh start
八、启动后验证集群是否已正常
1、在各个节点执行./zkServer.sh status查看启动状态
可以看到Mode: leader或者Mode:followe
2、使用客户端连接创建和查询目录
cd /data/zookeeper3.6.1/bin
./zkCli.sh -server server1:2181
create /zcjtest test01
get /zcjtest
本文详细介绍了在CentOS8系统中部署Zookeeper3.6.1集群的步骤,包括系统环境要求、下载解压、配置环境变量、修改配置文件、设置myid、复制到其他节点、启动验证等环节,强调了防火墙设置和端口开放的重要性。

220

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



