Zookeeper 学习-高可用测试

Zookeeper 学习-高可用测试

zookeeper在实际环境中,需要考虑节点高可用。当某个节点因维护、不可抗因导致停止,不可访问或使用时,成员中其他节点能接管职责,在很短时间中断时间内或无缝,继续为前端提供服务。

从模拟环境测试结果来看,建议采用5节点zookeeper环境,保证某个leader及follow节点挂起后,zookeeper依然能正常被访问及操作,少量数据同步没丢失。

 

模拟场景及初步结果:

1. 单台机器zookeeper 3节点

1.1. follow node crash -停止follow后,其他节点角色没有变化。zkcli及应用能连接,能查询及修改节点数据。连接到此节点应用报错大概一秒后恢复。日志显示判断加切换大概一秒。

1.2. leader node crash -停止leader后,另一个原follow节点角色变更为leader。zkcli能连接,无法查询及修改节点数据。应用直接报错并无法恢复。日志显示节点角色切换大概一秒。数据同步没丢失。

1.3. 两个 node crash-停止两个后,无法获取任何zookeeper状态。zkcli及应用都无法直接报错并无法恢复。

2. 单台机器zookeeper 5节点

2.1. 一个follow node crash -停止follow后,其他节点角色没有变化。zkcli及应用能连接,能查询及修改节点数据。连接到此节点应用报错大概一秒后恢复。日志显示判断加切换大概一秒。

2.2. 一个leader node crash -停止leader后,另一个原follow节点角色变更为leader。zkcli及应用能连接,能查询及修改节点数据。应用报错大概一秒后恢复。日志显示节点角色切换大概一秒。数据同步没丢失。

2.3. 两个 node crash - 同时停止任意两个节点后,另一个原follow节点角色变更为leader。zkcli及应用能连接,能查询及修改节点数据。应用报错大概一秒后恢复。日志显示节点角色切换大概一秒。数据同步没丢失。

2.4. 三个 node crash - 同时停止任意三个节点后,另一个原follow节点角色变更为leader。zkcli能连接,无法查询及修改节点数据。应用直接报错并无法恢复。日志显示节点角色切换大概一秒。

3.跨云zookeeper 5节点(aliyun,huaweicloud,ctyun)

测试结果与单台机器zookeeper 5节点测试一样

3.1. 一个follow node crash

3.2. 一个leader node crash

3.3. 两个 node crash

3.4. 三个 node crash

 

测试大致步骤

1.zookeeper所有节点正常启动

2.启动五个应用(watch)代码,模拟应用连接zookeeper,每隔五秒轮询及修改节点数据

  连接字符串包括所有zookeeper节点地址

3.另开zkCli手动查询及修改节点数据

  连接字符串包括所有zookeeper节点地址

4.强制停止zookeeper进程,使用kill -9 <zookeeper_pid>命令

5.使用stat指令检查zookeeper模式角色

6.检查五个应用日志,是否正常连接,轮询及修改节点数据

7.zkCli手动查询及修改节点数据

  连接字符串包括所有zookeeper节点地址

8.重复以上步骤

 

注意:

1.模拟过程并没有考虑leader节点恢复。如果原leader节点恢复,希望能以follow方式加入,避免新一轮选举。

2.模拟过程并没有考虑大并发连接,数据量仅20KB左右。下一步尝试模拟400MB左右,大概500个应用连接,数据同步10MB左右。

3.模拟过程并没有考虑脑裂场景。下一步尝试模拟脑裂场景。

 

单台服务器模拟5节点脚本

zoo1.cfg

dataDir=/oss/scripts/zk-cluster/data1
clientPort=12181

server.1=localhost:13888:13999
server.2=localhost:23888:23999
server.3=localhost:33888:33999
server.4=localhost:43888:43999
server.5=localhost:53888:53999
4lw.commands.whitelist=*

 

zoo2.cfg

dataDir=/oss/scripts/zk-cluster/data2
clientPort=22181

server.1=localhost:13888:13999
server.2=localhost:23888:23999
server.3=localhost:33888:33999
server.4=localhost:43888:43999
server.5=localhost:53888:53999
4lw.commands.whitelist=*

 

zoo3.cfg

dataDir=/oss/scripts/zk-cluster/data3
clientPort=32181

server.1=localhost:13888:13999
server.2=localhost:23888:23999
server.3=localhost:33888:33999
server.4=localhost:43888:43999
server.5=localhost:53888:53999
4lw.commands.whitelist=*

zoo4.cfg

dataDir=/oss/scripts/zk-cluster/data4
clientPort=42181

server.1=localhost:13888:13999
server.2=localhost:23888:23999
server.3=localhost:33888:33999
server.4=localhost:43888:43999
server.5=localhost:53888:53999
4lw.commands.whitelist=*

zoo5.cfg

dataDir=/oss/scripts/zk-cluster/data5
clientPort=52181

server.1=localhost:13888:13999
server.2=localhost:23888:23999
server.3=localhost:33888:33999
server.4=localhost:43888:43999
server.5=localhost:53888:53999
4lw.commands.whitelist=*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值