Zookeeper3.4.6版本升级到3.6.2版本安装与配置

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

由于clickhouse集群可视化ckman需求,需要将Zookeeper3.4.6版本升级到3.6.2


提示:以下是本篇文章正文内容,下面案例可供参考

一、ZK下载与安装(zk每个节点)

1.下载zk安装包

下载地址:https://archive.apache.org/dist/zookeeper/apache-zookeeper-3.6.2-bin.tar.gz

2.解压安装包

tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz -C /opt/

3.复制ZK配置文件

cp /opt/zookeeper-3.6.2/conf/zoo_sample.cfg /opt/zookeeper-3.6.2/conf/zoo.cfg

4.创建log文件目录和ZK信息目录

mkdir /data01/zookeeper-3.6.2/dataLogDir
mkdir /data01/zookeeper-3.6.2/dataDir

5.创建myid文件【由于是版本升级,该步骤省略】

dn01服务器 
vim /data01/zookeeper-3.4.6/dataDir/myid
1
dn02服务器 
vim /data01/zookeeper-3.4.6/dataDir/myid
2
dn03服务器 
vim /data01/zookeeper-3.4.6/dataDir/myid
3

6.修改ZK配置文件(如果zk升级升级不到ckman,此步骤可以忽略prometheus相关配置)

vim /opt/zookeeper-3.6.2/conf/zoo.cfg

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/data01/zookeeper-3.6.2/dataDir
dataLogDir=/data01/zookeeper-3.6.2/dataLogDir
forceSync=no
# the port at which the clients will connect
clientPort=2181
server.1=dn01:2888:3888
server.2=dn02:2888:3888
server.3=dn03:2888:3888
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#暴露给promethues的监控端口
metricsProvider.httpPort=7000
metricsProvider.exportJvmInfo=true
admin.enableServer=true
#暴露给四字命令如mntr等的监控端口,3.5.0以上版本支持
admin.serverPort=8080 

部分注释:

tickTime:ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime

initLimit:Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在

initLimit 时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,F在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了。

syncLimit:在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。注意:不要把这个参数设置得过大,否则可能会掩盖一些问题。

dataDir:存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里

dataLogDir:事务日志输出目录。

clientPort:客户端连接server的端口,即对外服务端口

server.1=dn01:2888:3888:这里的1是一个数字,与myid文件中的id是一致的。右边可以配置两个端口,第一个端口用于F和L之间的数据同步和其它通信,第二个端口用于Leader选举过程中投票通信。

zookeeper集群是clickhouse实现分布式集群的重要组件,需要提前搭建好。由于clickhouse数据量极大,避免给zookeeper带来太大的压力,最好给clickhouse单独部署一套集群,不要和其他业务公用。

7.增加用户权限(如果zk升级,不安装ckman,此步骤可以忽略)

添加admin 一行数据
vim /etc/sudoers

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL
admin   ALL=(ALL)       NOPASSWD: ALL

8.拷贝ZK3.4.6元数据信息至ZK3.6.2元数据目录下

日志:/data01/zookeeper-3.4.6/dataLogDir 根据选择性拷贝或者不拷贝即可;
主要是拷贝/data01/zookeeper-3.4.6/dataDir目录信息;
特别注意myid与server id与老版本保持一致,dataDir与dataLogDir与老版本保持一致。

cp -r /data01/zookeeper-3.4.6/dataDir /data01/zookeeper-3.6.2/dataDir
cp -r /data01/zookeeper-3.4.6/dataLogDir /data01/zookeeper-3.6.2/dataLogDir

二 配置环境变量及启动ZK

1.配置ZK环境变量

vim /etc/profile

export ZK_HOME=/opt/zookeeper-3.6.2
export PATH=$PATH:$ZK_HOME/bin

2.环境变量生效

source /etc/profile

3.进一步验证ZK可用性(如果坚信自己安装无误,此步骤可省略)

命令行模式

[root@dn01 ~]# zkCli.sh

新增目录

[zk: localhost:2181(CONNECTED) 0] create /test
Created /test

获取指定路径上的数据

[zk: localhost:2181(CONNECTED) 0] get /test
null

删除指定路径上的数据

[zk: localhost:2181(CONNECTED) 1] delete /test
[zk: localhost:2181(CONNECTED) 2] get /test
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /test

4.割接ZK版本(逐一操作升级)

查看zookeeper状态,先从follower开始升级,最后升级leader。

zkServer.sh status

1)停止老版本服务并查看zk状态

cd  /opt/zookeeper-3.4.6/bin
./zkServer.sh stop
./zkServer.sh status

2)启动ZK测试新版本服务

手动启动ZooKeeper,确认是否存在任何错误信息。可以在命令行中输入’./zkServer.sh start-foreground’,这将以前台模式启动ZooKeeper,并将所有日志输出到终端上,以便更好地调试。

zkServer.sh start-foreground

观察启动日志加载的环境变量是否是3.6.2,如果不是,需要重新登录服务器,因为环境变量在当前窗口未生效。

3)正常启动ZK新版本服务

如果前者测试启动无误,可以正常启动

zkServer.sh start

4)查看ZK状态

zkServer.sh status

5)查看ZK升级后数据是否还在

  数据没变,则说明升级成功!

5.编写 zookeeper.service 文件便于ZK自启动(根据个人需求,否则可以忽略此步骤)

[Unit]
Description=zookeeper.service
After=network.target
 
[Service]
Type=forking
Environment=ZOO_LOG_DIR=/data01/zookeeper-3.6.2/dataLogDir/
Environment=JAVA_HOME=/usr/java/jdk1.8
ExecStart=/opt/zookeeper-3.4.6/bin/zkServer.sh start
ExecStop=//opt/zookeeper-3.4.6/bin/zkServer.sh stop
ExecReload=/opt/zookeeper-3.4.6/bin/zkServer.sh restart
PIDFile=/data01/zookeeper-3.6.2/dataDir/zookeeper_server.pid
User=root
 
[Install]
WantedBy=multi-user.target

6.设置ZK开机自启动(接步骤6,根据个人需求,否则可以忽略此步骤)

设置开机自启

 systemctl daemon-reload
 systemctl enable zookeeper
 systemctl start zookeeper

开启端口

firewall-cmd --zone=public --add-port=2181/tcp --permanent

三 回滚

升级过程中如果出现问题,无法解决,需要执行回滚操作。
以下步骤为逐一操作某一台服务(先停止,再启动)!!!

1.停止当前3.6.2版本ZK进程(逐一操作降级)

先从follower开始降级,最后降级leader。

zkServer.sh stop
zkServer.sh status

2.启动3.4.6版本zk及配置zk环境变量(逐一启动)

vim /etc/profile

export ZK_HOME=/opt/zookeeper-3.4.6
export PATH=$PATH:$ZK_HOME/bin

source /etc/profile

cd  /opt/zookeeper-3.4.6/bin
./zkServer.sh start
./zkServer.sh status

查看启动状态,如果正常。总结升级失败原因,再计划下次升级。


总结

1.升级过程一定要保持myid与zookeeper_server.pid一致
2.升级过程一定要保持dataDir,dataLogDir与原版本一致
3.保证数据质量和集群可用性

Zookeeper是一个开源的分布式协调服务,它为分布式应用提供一致性服务。Zookeeper版本升级通常是为了引入新特性、提高性能、修复已知问题或提高安全性。版本升级需要谨慎进行,因为不当的升级可能会导致服务不可用。以下是一般的升级步骤: 1. **环境准备**:确保新的Zookeeper版本的兼容性,检查是否有依赖的库或服务需要更新。 2. **升级计划**:制定详细的升级计划,包括升级的时间窗口,以及升级失败时的回滚计划。 3. **数据备份**:在升级前,需要对Zookeeper的数据进行备份,以防升级过程中出现数据丢失的情况。 4. **逐步升级**:对于集群环境,通常建议采用逐步升级的方式,即先升级少数节点,验证升级是否成功后,再继续升级其他节点。 5. **修改配置文件**:根据新版本的配置要求,修改Zookeeper的配置文件,如`zoo.cfg`。 6. **停止服务**:按照正确的顺序和方法停止旧版本Zookeeper服务。 7. **安装新版本**:在各个节点上安装新版本Zookeeper。 8. **启动服务**:启动新版本Zookeeper服务,并检查服务是否正常运行。 9. **监控和验证**:在升级后监控Zookeeper集群的状态,验证新版本的功能是否正常,性能是否有预期的提升。 10. **后续处理**:如果一切正常,则可以继续其他节点的升级;如果有问题,根据备份进行回滚到旧版本
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值