基础设施和数据冗余
服务高可用性,需确保基础架构冗余,服务应有最新数据冗余,在主服务故障时接管。
故障检测和纠错机制
实时检测影响可用性的主系统,重视任何部分发生的故障,要求框架能在发生故障的系统上采取纠错,将故障移到备用系统。
故障转移机制
将发生故障的服务转移到备用服务,故障转移机制须能识别最合适的备用服务,并升级为主服务。
应用程序/用户重定向机制
DNS映射或虚拟IP组件,提供重定向机制。
MySQL HA
将3个节点设成主从模式,使用MySQL半同步复制,作为基础架构提供数据冗余机制。
异步复制
主库将已提交事务写入binlog后,返回成功给应用,该模式不保证已提交事务传递到各个slave,并被成功应用。
全同步复制模式
当主库提交一个事务,会等待事务被传递到所有slave上,且所有slave应用该事务,主库得到反馈后,返回事务成功通知。
半同步复制/Semisynchronous Replication
异步模式不等主库事务在slave落盘,不能保证数据安全性。
全同步模式等待所有slave,确认已提交事务被成功应用,导致事务处理延时。
Semisynchronous采用较折中方案,确保已提交事务至少在两台机器上落盘,然后,给客户端返回事务成功。
Corosync和Pacemaker提供故障检测,纠正和故障转移机制。
Corosync
Corosync集群引擎是能在应用程序中实现高可用性。
Pacemaker
开源高可用性集群堆栈,ClusterLabs堆栈适合小型和大型部署的群集服务。
使用Corosync、Pacemaker、DRBD、ScanCore实现集群。
DNS映射或虚拟IP组件,提供应用程序和用户重定向。
总结
Corosync
Corosync为节点提供通信,保证节点间消息传递的可靠。
形成节点的集群环,通过集群成员资格跟踪,决定加入和离开集群的节点。
Corosync与pacemaker合作,对节点可用性进行沟通,以便pacemaker做出恰当决策。
Pacemaker
集群资源管理器(CRM), pacemaker通过corosync接口检测和处理节点级故障,确保MySQL在集群上高可用。
通过与资源代理(RA)合作,检测和处理MySQL故障。
Pacemaker通过启动、停止、监视、提升、降级操作,配置管理MySQL资源。
Resource Agent
资源代理充当MySQL和Pacemaker间的接口。
实现启动、停止、升级、降级、监视pacemaker调用操作。
Percona实现Percona Replication Manager(PRM)全功能资源代理。
PRM:https://github.com/Percona-Lab/pacemaker-replication-agents/blob/master/agents/mysql_prm_gtid
https://github.com/Scalegrid/percona-pacemaker-agents/blob/master/agents/mysql_prm_semisync
DNS映射(DNS Mapping Component)
客户端使用主DNS名称连接MySQL服务器。
通过管理DNS名称到当前主服务器IP地址映射,可确保客户端不必更改其连接描述符或属性,完成一个故障转移。
高可用性
服务在一段时间内,运行的时间百分比。
通常表示为一系列9,如下显示一年内的停机时间和可用性。
可用性 % 停机时间
90%(“ 一个9 ”) 36.53天
99%(“ 两个9 ”) 3.65天
99.9%(“ 三个9 ”) 8.77小时
99.99%(“ 四个9 ”) 52.60分钟
99.999%(“ 五个9 ”) 5.26分钟
99.9999%(“ 六个9 ”) 31.56秒
若服务无法承受每年超过几分钟的停机时间,说明该服务需具有99.999%的高可用性。