迁移背景
因环境迁移,需对已有Zookeeper进行环境迁移,考虑当前Zookeeper为单节点规格,可靠性存在缺陷,将利用此次迁移升级为三节点的集群版本
迁移思路
将三台新节点与旧的一台节点组成一个集群,然后停掉旧节点。
迁移步骤
一、安装部署
a. 安装Zookeeper服务,安装命令参考如下:
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
mv apache-zookeeper-3.7.0-bin /usr/local/zookeeper
apt install openjdk-8-jre-headless -y //安装Java
echo "ZOO_LOG_DIR=/data/zookeeper/logs" > /user/local/zookeeper/conf/zookeeper-env.sh //定义日志目录
mkdir -p /data/zookeeper/data //创建zookeeper数据目录
b.依次在四台节点上创建myid文件
echo "1" > /data/zookeeper/data/myid //新节点1
echo "2" > /data/zookeeper/data/myid //新节点2
echo "3" > /data/zookeeper/data/myid //新节点3
echo "4" > /data/zookeeper/data/myid //旧节点
c.依次在四个节点上的zookeeper/config目录下,创建或调整zoo.cfg文件,内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
clientPort=2181
server.1=x.x.x.x:2888:3888
server.2=x.x.x.x:2888:3888
server.3=x.x.x.x:2888:3888
server.4=x.x.x.x:2888:3888
// server.1~3为新节点,server.4为旧节点
二、重启&启动节点
注:首先重启旧节点,然后根据myid从小到大依次启动三个新节点,确保旧节点为leader
【知识点】
1、zookeeper选举是依据当前集群可用节点的myid的大小,最大者为leader。
2、数据同步是由leader向follower节点单向同步,所以第一次启动,务必确保旧节点为leader,不然会导致集群数据丢失
3、节点重启顺序遵循myid先小后大,先follower后leader,myid最的节点如果最后重启,会无法加入集群。因为 zookeeper myid大的节点可以主动连接myid小的节点,但myid小但节点无法主动连接myid大的节点
4、zookeeper集群可以支持不同版本节点
三、旧节点退出
在旧节点上执行echo mntr|nc localhost 2181 命令,确认zk_followers 和 zk_synced_followers两个参数是否都是3,如果是没问题 ,停止旧节点zookeeper服务,依次删除三个新节点zoo.cfg文件中的server.4配置,根据myid由小到大,依次重启三个节点。
常用命令
echo mntr|nc localhost 2181 //查看集群情况,请在leader上查看,主要关注zk_followers和zk_synced_followers
./zkServer.sh start | stop | restart | status //分别是zookeeper启动、停止、重启、状态
集群模式的迁移
集群迁移比单点迁移集群更加简单和平滑,安装部署问题不再重复,参考上,主要赘述步骤。
1、新节点配置myid和zoo.cfg,myid顺延已有id,加入集群
2、集群旧节点修改zoo.cfg,将新的节点加入配置,按照myid从小到大,先follower后leader的原则,依次重启
3、确认leader选举到新节点,依次修改新节点zoo.cfg配置,将旧节点server信息删除,然后依次重启新节点
确认集群状态没有异常后,停机旧节点