【本文正在参加炫“库”行动-人大金仓有奖征文】
https://marketing.csdn.net/p/98bd30353e7cb998b6070a89e8b91edb
数据库集群的高可用性是指集群内一个服务器发生如网络故障、硬件故障、数据库进程宕机等异常情况时,其他的服务器能够尽快地对外提供服务,减少停机时间。即高可用集群实现了自动侦测故障、自动切换/故障转移和自动恢复的功能。目前常见的高可用方案包括:共享存储,双机高可用,主从高可用等。
共享存储:指多个数据库资源共享存储,其中一个数据库为主,其它的为备用数据库,当主数据库故障时,由资源转移功能进行应用的切换,以继续提供服务。
双机高可用:指使用两台服务器,互相备份,共同执行同一服务,一台服务器作为主库,另一台服务器作为备库,当主库故障后,备库作为读写库,原主库恢复后作为备库。
主从高可用:指使用两台或两台以上服务器,一台服务器作为主库,剩下的服务器作为备库;主库故障后,剩余备库经过竞选后,其中一台服务器升主,备库升为主库,原主库恢复后作为备库。
人大金仓KES也是采用以上的架构实现集群的高可用。上述的几种架构中,当正在提供服务的机器发生故障时,通过对故障的自动处理来保证集群的高可用性。因此,对于高可用产品来说,提前模拟出各种各样的故障,针对故障给与解决方案,就显得尤为重要,并且可以更进一步地保证系统的可靠性与可用性。KES的高可用集群使用Chaosblade作为故障场景的模拟工具,来测试和验证集群高可用性的各项功能。
ChaosBlade是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,并结合了集团各业务的最佳创意和实践,提供了丰富的故障场景实现。Chaosblade 的客户端工具是 blade,下载或编译后可直接使用,且使用简单、扩展性强。
KES集群使用Chaosblade提供的命令模拟状态变化类、网络类、资源耗尽类等故障。
状态变化类故障指:进程hang住,进程被杀死等。
网络类故障指:网络中断,网络丢包,网络延迟,端口占用等。
资源耗尽类故障指:CPU利用率高,磁盘满,内存使用率高等。
下面以具体的测试用例,说明基于Chaosblade模拟的故障进行集群高可用的测试。
场景:高并发业务背景下,一主两备集群,主库存在节点网络异常,集群可自动故障转移与恢复。
使用到的Chaosblade命令:
./blade create network loss --percent 100 --interface xxx --timeout xxx
此命令表示:创建网络中断故障,即让机器的整个网卡不可访问,不可访问的时间为xxx秒。xxx秒后,故障自动销毁。若在timeout时间内故障未自动销毁,可使用下面的命令,手动将其销毁。
./blade destroy uid
其中uid是故障创建成功返回的结果中uid的值。
场景步骤:
- 搭建一主两备的集群,集群采用默认的参数配置;
- 业务通过连接vip执行多表并发insert语句;
- 使用Chaosblade模拟主机网络中断故障,命令如下:
./blade create network loss --percent 100 --interface ens192 --timeout 120
- 主机网络恢复后,集群状态恢复正常后,停止业务;
- 检查业务执行情况;
- 检查集群主备机之间数据的一致性。
测试结果:
- 当主机发生网络故障后,备机上的监控程序检测到与主机连接异常,并尝试多次重新连接主机,此时业务中断;
- 所有备机确定与主机已失联;
- 通过竞选规则,在备机中选出新主;
- 备机成为集群的新主后,业务恢复;
- 网络故障超时后,主机网络恢复,新主去恢复原主机;
- 同时作为新主的备机,让其他的备机重新加入集群,集群状态恢复正常;
- 集群状态正常后停止业务,查看集群主备之间的数据是一致的。
上述测试结果表明:使用Chaosblade模拟网络中断故障后,KES集群能够自动监测故障,并进行故障的转移,主备切换,自动恢复集群及业务,并保证主备的数据一致性。
【本文正在参加炫“库”行动-人大金仓有奖征文】
https://marketing.csdn.net/p/98bd30353e7cb998b6070a89e8b91edb