浅谈高可用测试

前言

 

现今的互联网产品愈来愈注重可靠性,尤为是在生产环境中使用的系统,对高可用性都有必定的要求。而做为产品的提供方,在交付产品以前,也会对高可用进行验收测试。近期跟进过两个产品曾有高可用测试的需求,在此简单的总结分享下。mysql

 

在介绍产品以前,先简单的介绍下高可用和高可用测试:sql

 

  • 高可用:指的是系统如何保证比较高的服务可用率。在系统的某个部分由于各类缘由而失效时,能保证系统总体的服务正常运行。
  • 高可用测试:经过模拟系统出现异常的状况,验证系统是否能正常提供服务(或降级提供服务),并验证系统在异常恢复后,可否恢复至异常出现以前的运行状态。

 

产品A:云计算PAAS层组件

 

产品A为云计算的PAAS层组件,各服务部署在云主机以及物理机上,大体架构以下:docker

 

 

 

从产品架构来看,对A产品作高可用测试,须要分别确保LVS集群和Tengine集群的高可用。所以,须要根据LVS集群和Tengine集群的原理以及运行特性,分别制定高可用测试方案网络

 

LVS运行物理机上,OSPF协议实现多节点互备,所以设计高可用测试方案以下:架构

 

 

 

  • 从网络方面验证高可用,配置iptables规则实现端口丢包,模拟网络不可用的状况
  • 在进程方面验证高可用,分别使用stop、kill -九、kill -19模拟进程中止、崩溃、假死时的状况
  • 在机器方面验证高可用,经过关机、重启模拟物理机宕机时的状况

 

Tengine运行在云主机上,经过LVS的健康检查实现服务保证,所以设计高可用测试方案以下:测试

 

 

 

 

产品B:数据可视化产品

 

产品B为数据可视化产品,采用物理机+docker容易进行私有化部署,大体架构以下:云计算

 

 

 

从产品架构来看,对B产品作高可用测试,主要分为功能容器不可用、基础设施容器不可用、节点网络异常、机器异常状况下的高可用:设计

 

 

  • 因为功能容器无状态,所以对功能容器作高可用测试时只须要模拟容器不可用的状况便可。
  • 而基础设施容器和功能容器不一样,其中mysql等容器涉及到数据写入,所以在作高可用测试时须要考虑异常发生时的主从切换,以及异常恢复后的主从同步。
  • 节点网络异常和物理机异常会影响到节点上的全部服务,所以也要验证节点出现网络异常和物理机异常以及异常恢复后的数据一致性。
相关文章
相关标签/搜索