Keepalived + Haproxy + PXC 理论篇
最终模型:
-
将Kp1 + Kp2 分别和Ha1和Ha2部署在一起,同时绑定VIP ip,对外提供访问,同时监控本机的Haproxy的可用性
-
通过Ha1 + Ha2 为PXC提供负载均衡,分发请求到后端某台PXC,同时检测后端的PXC数据库可用性
-
PXC 多主复制提供读写能力
Haproxy 反向代理
工作在7层模型上,可以分析数据包中的应用层协议,并按规则进行负载
默认使用 tcp 协议
haproxy 可以通过一个统一的端口对外提供服务,然后内部进行分发。
程序进行访问时,不再访问具体的MySQL,而是访问haproxy服务器的ip及端口。
Haproxy 接收到请求时,根据相应的策略进行转发。有轮询、加权、随机等等
同时还根据具体时间间隔对后端服务进行有效性检测,当MySQL集群有哪一台机器不再工作了,则会将其从可用列表中踢出,然后不再转发请求到该节点
Keepalived
- 对 realserver 进行健康状况检查,对4、5、7层进行健康检查
- 对负载均衡调度器实现高可用,防止单点故障
Keepalived 实现故障转移的功能是通过 VRRP 协议。在Keepalived正常工作时,master会不断发送心跳信息给backup。当backup一段时间收不到master的心跳信息,就会认为master宕了,会接管master的请求,继续对外提供服务。当master恢复,backup会自动让出资源给master,再次成为backup。
这里Keepalived 用来保障 Haproxy 高可用,避免单点故障