虚拟IP地址(Virtual IP Address,VIP)是实现HA(高可用)系统的一种方案,高可用的目的是通过技术手段避免因为系统出现故障而导致停止对外服务,一般实现方式是部署备用服务器,在主服务器出现故障时接管业务。虚拟 IP 地址用于向客户端提供一个固定的“虚拟”访问地址,以避免后端服务器发生切换时对客户端造成影响。
虚拟IP地址的实现原理包括如下三部分。
● Master选举:在集群创建或Master出现故障时,集群通过选举协议得到一个Master作为对外服务的节点。
● 配置虚拟IP地址:HA软件将虚拟IP地址配置到Master节点的网卡上。
● ARP广播:主动对外广播ARP消息,声明虚拟IP地址对应的MAC地址为Master的网卡MAC地址。
基于Keepalived的高可用架构图如图2-3所示。
图2-3 基于Keepalived的高可用架构图
Keepalived 的设计是为了管理虚拟 IP 地址,它运行在 LVS(Linux Virtual Server,Linux虚拟服务器)之上,实现了一组检查器,以根据其运行状况动态,自适应地维护和管理负载均衡的服务器池。另外,虚拟路由器冗余协议(VRRP)可以实现高可用性,它的主要功能是实现真实的故障隔离及负载均衡器间的失败切换,提高系统的可用性。
Keepalived 通过选举(看服务器设置的权重)挑选出一台热备服务器作为 Master 机器,Master机器会被分配到一个指定的虚拟IP地址,外部程序可通过该IP地址访问这台服务器。如果这台服务器出现故障(如断网、重启,或者本机器上的Keepalived宕机等),则Keepalived会在其他备份机器中重选(还是看服务器设置的权重)一台做 Master机器并分配同样的虚拟IP地址,充当前一台Master机器的角色。
Keepalived在CentOS标准软件包存储库中可用,使用yum命令行工具进行安装。
通过从官网得知,当前最新版本为 v2.1.5,如果想使用更新版本,则需通过源代码进行编译。
Keepalived的配置文件位于/etc/keepalived/keepalived.conf下。
在开始配置之前,假设已经准备好了4台服务器,HAProxy与PgBouncer部署配置如表2-2所示。
表2-2 HAProxy与PgBouncer部署配置
● LB1和LB2之间浮动的VIP:192.168.0.99。
● PostgreSQL(端口5432)主备安装与配置完成。
● PgBouncer(端口6432)已分别在PG1和PG2上安装、配置。
● HAProxy分别在LB1和LB2上安装、配置。
● Keepalived 分别在LB1和LB2上安装、配置。
● LB1(主节点)的Keepalived配置。
● LB2(备节点)的Keepalived配置。
至此,一个基本的整合了PgBouncer、HAProxy和Keepalived的PostgreSQL高可用集群搭建完毕。