- PostgreSQL高可用实战
- 胡辉等
- 921字
- 2025-02-25 01:37:31
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 地址将始终到达同一服务器,而服务器保持不变。