赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
由于clickhouse集群可视化ckman需求,需要将Zookeeper3.4.6版本升级到3.6.2
提示:以下是本篇文章正文内容,下面案例可供参考
下载地址:https://archive.apache.org/dist/zookeeper/apache-zookeeper-3.6.2-bin.tar.gz
tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz -C /opt/
cp /opt/zookeeper-3.6.2/conf/zoo_sample.cfg /opt/zookeeper-3.6.2/conf/zoo.cfg
mkdir /data01/zookeeper-3.6.2/dataLogDir
mkdir /data01/zookeeper-3.6.2/dataDir
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
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单独部署一套集群,不要和其他业务公用。
添加admin 一行数据
vim /etc/sudoers
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
admin ALL=(ALL) NOPASSWD: ALL
日志:/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
vim /etc/profile
export ZK_HOME=/opt/zookeeper-3.6.2
export PATH=$PATH:$ZK_HOME/bin
source /etc/profile
命令行模式
[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
查看zookeeper状态,先从follower开始升级,最后升级leader。
zkServer.sh status
cd /opt/zookeeper-3.4.6/bin
./zkServer.sh stop
./zkServer.sh status
手动启动ZooKeeper,确认是否存在任何错误信息。可以在命令行中输入’./zkServer.sh start-foreground’,这将以前台模式启动ZooKeeper,并将所有日志输出到终端上,以便更好地调试。
zkServer.sh start-foreground
观察启动日志加载的环境变量是否是3.6.2,如果不是,需要重新登录服务器,因为环境变量在当前窗口未生效。
如果前者测试启动无误,可以正常启动
zkServer.sh start
zkServer.sh status
数据没变,则说明升级成功!
[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
设置开机自启
systemctl daemon-reload
systemctl enable zookeeper
systemctl start zookeeper
开启端口
firewall-cmd --zone=public --add-port=2181/tcp --permanent
升级过程中如果出现问题,无法解决,需要执行回滚操作。
以下步骤为逐一操作某一台服务(先停止,再启动)!!!
先从follower开始降级,最后降级leader。
zkServer.sh stop
zkServer.sh status
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.保证数据质量和集群可用性
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。