PostgreSQL高可用实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2.2 安装HAProxy

HAProxy始终提供3个有效的稳定发行版本(LTS,即长期支持,是Long Term Support的缩写),即两个正在开发中的最新版本和一个仍在接收重要更新的历史版本。

通过访问其官网可以得知,1.8、2.0和2.2是目前3个有效的稳定发行版本,如表2-1所示。

表2-1 HAProxy版本信息表

1.通过yum直接安装发行版

运行yum list haproxy 命令可以得知,目前安装标准库的版本为1.5.18,已经不再维护。

2.通过源代码安装

接下来,安装标准库中当前最新稳定版本2.2,因此需要通过源代码安装。首先,检查是否具备下载和编译程序的先决条件。

确定是否具备编译HAProxy的最小依赖环境。

使用以下命令下载源代码。

下载完成后,使用以下命令解压文件。

进入源代码目录。

编译程序。

最后,安装HAProxy。

3.配置HAProxy

现在已成功安装HAProxy,但仍需要进行配置才能使其运行。

1)配置负载均衡

创建新文件/usr/local/etc/haproxy/haproxy.cfg,并将以下内容添加到文件中。

第一部分是全局和默认配置块。

第二部分是统计信息的配置块,此处可选,如果不需要统计信息,则可以通过 7000端口访问。

第三部分是核心配置块,假设 PostgreSQL 集群是使用内置的流复制模式配置的,包含一个master和两个slaves。

2)参数解释

bind参数:与HTTP负载均衡不同,HAProxy对数据库没有特定的“模式”,因此使用TCP方式。侦听地址可以根据需要设置,此处设置为*:5000。

option pgsql-check user optima参数:运行状况检测可以根据需要选择不同的软件(如Patroni、Xinetd等),此处使用了PostgreSQL内置的pgsql-check。

balance参数:负载平衡算法,在后端部分中配置服务器,允许HAProxy根据可用的轮询算法将这些服务器用于负载均衡。

平衡算法用于确定每个连接转移到后端的哪个服务器,包括如下选项。

roundrobin(轮询):根据权重依次使用每个服务器。当服务器的处理时间保持均匀分布时,这是最流畅、最公平的算法。该算法是动态的,可以动态调整服务器权重。

leastconn(最少连接优先):选择连接数最少的服务器。在具有相同负载的服务器之间执行。建议在较长的会话(例如LDAP、SQL、TSE等)中使用此算法,不适用于较短的会话(例如HTTP)。

first(第一):具有可用连接插槽的第一台服务器接收连接。从最低的数字标识符到最高的数字标识符之间选择服务器。服务器达到其maxconn值后,将使用下一台服务器。

source(源):对源IP地址进行散列处理,然后除以运行中服务器的总权重,以指定将接收请求的服务器。这样,相同的客户端 IP 地址将始终到达同一服务器,而服务器保持不变。