跳转到主要内容

【未完成】Pacemaker 实现 HAProxy+MySQL 高可用负载均衡

假设我们有一个 3 节点 MySQL 集群,显然我们需要有一个负载均衡/反向代理服务,来将访问路由到可用的节点上。

传统上我们通常使用一个单独的节点来部署 HAProxy,访问该节点的 IP 就行了。

但要是部署 HAProxy 的节点挂了呢?
这就叫 SPOF,Single Point of Failure 单点故障。显然 HAProxy 也是需要高可用的。

我想,我们可以在每一个 MySQL 节点上都部署一个 HAProxy 然后由 Pacemaker 提供 VIP(虚拟 IP) 来管理要路由到哪一个 HAProxy 上。
这样我们就可以保证只要有 MySQL 节点存活,就始终可以访问。
当然这就要求 MySQL 节点有多余的性能可以部署 HAProxy,亦或是单独用一组节点部署 HAProxy。

名词解释

什么是 Pacemaker 堆栈

Pacemaker 是一个高可用性集群资源管理器。Pacemaker 的核心是一个分布式有限状态机,能够协调一组机器之间相互关联的服务的启动和恢复。
Pacemaker 支持多种资源代理标准(LSB 初始化脚本、OCF 资源代理、systemd 单元文件等)来管理任何服务,并且可以对它们之间的复杂关系(托管、排序等)进行建模。
Pacemaker 支持高级服务配置,例如依赖资源组、必须在多台机器上处于活动状态的克隆资源、可以在两个不同角色之间切换的资源以及容器化服务。

Pacemaker 堆栈包括以下组件:

名称

功能

libQB

 libqb 是一个库,其主要目的是为客户端/服务器应用程序提供高性能、可重用的功能,包括高性能日志记录、跟踪、IPC 和轮询。

Corosync 消息层组件,管理成员关系、消息与仲裁,为高可用环境中提供通讯服务,位于高可用集群架构的底层,为各节点之间提供心跳信息
Resource agents  资源代理,在节点上接收CRM的调度,一般通过脚本对资源进行管理
Fencing agents 关闭不稳定或无答复的节点,以保障集群的其它资源,其主要功能是消除脑裂
Pacemaker 资源管理器,负责启停服务,位于集群架构中资源管理、资源代理层

这里有一点点迷惑,Pacemaker 堆栈是一组组件,其中包括 Pacemaker 本身。
在过去,Pacemaker 还支持 Corosync 1(有或没有 CMAN)以及 Heartbeat。
不同的发行版支持不同的集群层,需要不同的设置。我们将 Pacemaker 和集群层的每个组合称为“堆栈”。
真心希望 clusterlabs 能给它改个名字。

详情见:https://clusterlabs.org/components.html

什么是 HAProxy

HAProxy 是一种免费、非常快速且可靠的反向代理,可为基于 TCP 和 HTTP 的应用程序提供高可用性、负载均衡和代理。


待续

主要参考