CentOS7+MySQL/MariaDB+Galera+HAProxy+Keepalived构建高可用数据库集群
方案优势:Galera能够实现MySQL/MariaDB数据库的主主复制和多主复制等模式,这些复制模式都是同步进行的,同步时间非常短
每一个节点都可以同时写入和读取,当某一节点发生故障时,可自动从集群中自动剔除
HAProxy能提供负载均衡和故障判断等功能解决服务器系统存在的单点故障
Keepalived能提供客户端连接数据库时使用的虚拟IP地址(VIP)
关于HAProxy的负载均衡算法
轮询方式(roundrobin):不适合用于backend为web服务器的情况,因为session、cookie会话保持会出现轮询导致的随机切换,是处理速度最快的算法,但最大服务器数量不能超过4095
原地址方式(source):适合于backend为web服务器的情况,能够实现session、cookie会话保持
最少连接算法(leastconn):适合于服务器配置相同或者相近的情况,能最大限度的将工作负载平均分配到每一台服务器上,它适用于session较长的连接,如SQL、LDAP、TSE等,但不适合于session较短的连接,例如它不适合于http连接
权重算法(static-rr),根据服务器的权重(weights)轮流使用每一个服务器,有计划(根据权重)的去轮询,此种方式将占用较少的CPU资源,大约降低1%
除此之外还有可以根据请求的URI和请求的URI参数的uri算法和uri-param算法以及根据HTTP header内容决定是否轮询的hdr算法,还有rdp-cookie算法可以根据cookie决定请求发往那一台服务器。
测试结果
当其中的一个节点发生宕机或事故导致数据库关闭或网络中断时,haproxy的状态能及时的显示后端节点的连接状态并将错误的节点从服务器资源池中移除,当网络或宕机恢复时,只有数据库启动成功后才能使得haproxy的状态显示正常。
目前此方案已经应用于OpenStack云平台开发环境,提供active-active高可用服务。
存在或已知问题
采用MySQL/MariaDB+Galera方案的数据库集群将仅对Innodb有效,而且不再支持查询缓存
关于CentOS7 的时间同步问题,时间同步服务已经由ntpd更新为chrony,可用yum info chrony查看chrony的简介以及用man查看chrony的用法
关于CentOS7 的日志服务问题,日志服务已经由syslog更新(CentOS6开始)为journald(rsyslogd) ,其配置文件变为/etc/rsyslog.conf
在
页:
[1]