高可用集群

应用系统高可用

--------------------------


建设应用系统高可用方案。

当系统服务出现故障或者服务器出现故障时候,自动从主服务切换至备服务,并预警告知人工干预修复,保证产能不受影响。


数据库高可用

建设数据库高可用方案。数据库发生宕机或者意外中断等故障时候,能尽快恢复系统应用可用,尽可能减少产线停机时间,保证产能不会因为单节点数据库的故障而中断;同时,因故障引起数据库切换,切换前后数据内容保证一致,不会因为数据缺失或者数据不一致而影响生产。

利用Nginx+MHA实现应用服务和Mysql数据库的高可用,提升数据安全性,提升系统稳定性和防灾能力。


Nginx实现应用服务

Nginx在服务器集群中起到一个代理服务器的角色(即反向代理),避免单独一个服务器压力过大,将来客户端请求转发给不同的服务器;并通过IP_HASH负载均衡策略指定负载均衡器按照基于客户端IP的分配方式,确保相同的客户端的请求一直发送到相同的服务器,以保证session会话完整不丢失。


MHA实现Mysql数据库高可用

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案。由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且能在最大程度上保证数据的一致性,以达到真正高可用。




整体架构图

--------------------------



   

MHA实现Mysql数据库高可用

-----------------------------------------


Mysql-Master开启Binary Log二进制日志。

Mysql-Master在每个事务更新数据完成之前,将事务写入二进制日志。且在事务写入二进制日志完成后,Mysql-Master通知存储引擎提交事务。


Mysql-Slave复制Mysql-Master的Binary Log日期,并完成数据一致性处理

  1. Mysql-Slave开始一个工作线程--I/O线程。并在Mysql-Master上建立连接。

  2. binlog dump process从Mysql-Master的二进制日志中读取事件。

  3. I/O线程将这些事件写入中继日志。

  4. SQL线程从中继日志读取事件,并重放其中的事件而更新Mysql-Slave的数据,使其与Mysql-Master中的数据一致。


故障或异常切换流程

------------------------------


2-01.jpg