配置环境

我们有两个 Apache Web 服务器 webserver-01.onitroad.com 和 webserver-02.onitroad.com,
我们想为它们配置一个 HTTP 负载均衡器,例如:haproxy-01.onitroad.com。

主机名haproxy-01.onitroad.comwebserver-01.onitroad.comwebserver-02.onitroad.com
IP 地址192.168.1.100/24192.168.1.101/24192.168.1.102/24
操作系统CentOS 7CentOS 7CentOS 7
Web Servernginxnginx
在 CentOS 7 中使用HAProxy配置 HTTP 负载均衡器

负载平衡(Load balancing)是指在一组后端服务器(也称为服务器群或者服务器池)之间有效地分配传入网络流量。
负载平衡改善了跨多个计算资源的工作负载分布。
使用具有负载平衡的多个组件而不是单个组件可以通过冗余来提高可靠性和可用性。

负载均衡器是执行负载均衡的设备。
硬件和软件负载平衡器可能具有多种特殊功能。
负载均衡器的基本特性是能够根据调度算法将传入请求分发到集群中的多个后端服务器上。

在这篇文章中,我们将使用 HAProxy配置一个 HTTP 负载均衡器,以在两个 Web 服务器之间分配 HTTP 工作负载。

测试 HAProxy 配置

在浏览器中打开 haproxy-01.onitroad.com

我们可能会观察到 HTTP 请求已由 webserver-01.onitroad.com 提供服务。
它表明我们的负载均衡器已将请求转发到此服务器。

按 F5 刷新网页。

因为,我们已经在 HAProxy 中配置了循环负载均衡。
因此,它将下一个请求转发到另一台web服务器。
我们可以多次刷新网页查看转发情况。

查看HAProxy的详细统计信息。
浏览到 http://haproxy-01.onitroad.com/haproxy?stats 。

我们已经成功配置了一个带有 HAProxy 的 HTTP 负载均衡器。

on  It Road.com

在 CentOS 7 上配置 HAProxy

首先使用浏览器打开两个web服务器的web页面。
http://webserver-01.onitroad.com
http://webserver-02.onitroad.com
确保我们的网络服务器配置正确且可浏览。

当我们使用负载平衡器访问时,我在两台服务器上设置了不同的页index,以区分服务器。

登录到 haproxy-01.onitroad.com 并安装 HAProxy。

[root@haproxy-01 ~]# yum install -y haproxy

HAProxy 已安装。

现在配置 rsyslog 来处理 HAProxy 日志。

[root@haproxy-01 ~]# vi /etc/rsyslog.conf

搜索并取消注释以下行。

$ModLoad imudp
$UDPServerRun 514

在同一文件中添加以下指令。

# HAProxy Logging
local2.*        /var/log/haproxy.log

保存设置并退出。

重新启动 rsyslog 服务使更改生效。

[root@haproxy-01 ~]# systemctl restart rsyslog.service

现在根据我们的环境配置 HAProxy 设置。

[root@haproxy-01 ~]# vi /etc/haproxy/haproxy.cfg

在此文件中添加以下指令。

# HAProxy Load Balancer for Apache Web Server
frontend http-balancer
 bind 192.168.1.100:80
 default_backend web-servers
backend web-servers
 mode http
 balance roundrobin
 stats enable
 stats auth admin:123
 server webserver-01 192.168.1.101:80 check
 server webserver-02 192.168.1.102:80 check

保存设置并退出。

启动并启用 haproxy 服务。

[root@haproxy-01 ~]# systemctl start haproxy ; systemctl enable haproxy
ln -s '/usr/lib/systemd/system/haproxy.service' '/etc/systemd/system/multi-user.target.wants/haproxy.service'

允许 HTTP 服务通过 Linux 防火墙。

[root@haproxy-01 ~]# firewall-cmd --permanent --add-service=http
success
[root@haproxy-01 ~]# firewall-cmd --reload
success
日期:2020-09-17 00:16:38 来源:oir作者:oir