错误判断传入流量可能会使您的 Web 服务器过载。 像 HAProxy(高可用性代理)这样的负载均衡器可以帮助缓解这个问题。 负载平衡器的主要工作是通过最小化响应时间、优化资源使用和提高多服务器配置的性能来平衡服务器上的负载。
HAProxy 是一种开源软件,广泛用作高可用性负载均衡器和代理 TCP 和 HTTP 连接。 附带说明一下,该软件有一个付费版本,称为 HAProxy Enterprise,具有高级功能和支持。 本文将介绍在 CentOS 7 上安装和配置开源版本的 HAProxy。
在 CentOS 7 上安装 HAProxy
注意:今天的安装将作为 根用户 在非托管服务器上,这意味着 没有控制面板.
安装 HAProxy
安装相对容易。 下面的 yum 命令将安装必要的软件包以及 HAProxy。
yum install haproxy
输出的结尾将如下所示。
Running transaction Installing : haproxy-1.5.18-9.el7.x86_64 1/1 Verifying : haproxy-1.5.18-9.el7.x86_64 1/1 Installed: haproxy.x86_64 0:1.5.18-9.el7
接下来,我们必须在每次重新启动服务器时验证 HAProxy 是否启动。 我们可以使用下面的 chkconfig 命令来完成。
chkconfig haproxy on
该命令的输出会让您知道为 HAProxy 服务创建了一个符号链接(symlink)。 符号链接是一种有助于链接到服务器上特定文件或文件夹的功能。
Note: Forwarding request to 'systemctl enable haproxy.service'. Created symlink from /etc/systemd/system/multi-user.target.wants/haproxy.service to /usr/lib/systemd/system/haproxy.service.
现在我们将确保我们允许 HAProxy 服务通过我们的防火墙运行。 第一个命令将启用防火墙中的 http 服务器。
firewall-cmd --permanent --zone=public --add-service=http
下一个将在防火墙中永久打开端口 8181。
firewall-cmd --permanent --zone=public --add-port=8181/tcp
最后一个将重新加载防火墙。
firewall-cmd --reload
它们都将具有相同的输出,如下所示。
success
启动服务
让我们启动服务并确保它正在运行。 在终端中输入以下命令。
systemctl start haproxy && systemctl status haproxy
输出将如下所示,确认服务已启动并正在运行。
● haproxy.service - HAProxy Load Balancer Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2021-04-27 18:28:06 EDT; 38s ago Main PID: 86812 (haproxy-systemd) CGroup: /system.slice/haproxy.service ├─86812 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid ├─86813 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds └─86815 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
您已在服务器上成功安装 HAProxy。 让我们继续配置负载均衡器。
配置 HAProxy 负载均衡器
使用 HAProxy 的负载平衡可以通过第 4 层或第 7 层实现。了解这两个选项之间的差异将帮助您以最佳方式为您的服务器利用负载平衡。
第 4 层负载均衡器
第 4 层负载均衡器最常用于简单数据包负载均衡。 这种类型的负载平衡在传输级别运行(并且不检查文件的内容),因此通过第 4 层负载平衡器的所有流量都根据请求的网络信息进行管理。 应用程序端口或 TCP 协议将是此类信息的一个示例。 数据可以快速移动,因为它在发送或接收时没有经过检查或加密。 如果您想使用第 4 层负载平衡,让我们看看您的 HAProxy 配置文件应该是什么样子。
配置第 4 层
首先,使用您喜欢的文本编辑器修改现有的配置文件。 我们用了 我们 对于这个例子。
vi /etc/haproxy/haproxy.cfg
打开后在配置文件的末尾追加以下几行。 确保将示例中的 IP 地址替换为相应站点配置部分中服务器中的 IP 地址,并将 server1 和 server2 替换为正确的服务器名称。 从端口 80 上的 IP 地址 209.59.154.63 发送的任何请求都将重定向到 209.59.154.64 或 209.59.176.93。
global log 127.0.0.1 local0 log 127.0.0.1 local1 debug maxconn 45000 # Total Max Connections. daemon nbproc 1 # Number of processing cores. defaults timeout server 86400000 timeout connect 86400000 timeout client 86400000 timeout queue 1000s # [HTTP Site Configuration] listen http_web 209.59.154.63:80 mode http balance roundrobin # Load Balancing algorithm option httpchk option forwardfor server server1 209.59.154.64:80 weight 1 maxconn 512 check server server2 209.59.176.93:80 weight 1 maxconn 512 check # [HTTPS Site Configuration] listen https_web 209.59.154.63:443 mode tcp balance source# Load Balancing algorithm reqadd X-Forwarded-Proto: http server server1 209.59.154.64::443 weight 1 maxconn 512 check server server2 209.59.176.93:443 weight 1 maxconn 512 check
上面的代码包括 HTTP 和 HTTPS 配置,允许 HAProxy 处理来自任一协议的请求。 使用端口 80 的请求将使用 HTTP,使用端口 443 的请求将使用 HTTPS。 此外,您可以根据系统可以使用的内核数量以及是否需要 http 或 tcp 模式来修改 nbproc 和 mode 值。
让我们看看第 7 层负载均衡是如何工作的以及如何配置它。
七层负载均衡
第 7 层是您要创建高可用性应用程序交付网络时使用的应用程序层。 与第 4 层不同,它可以检查正在发送或请求的内容。这种类型的检查在高级应用层称为负载平衡。 用户可以在您的网站上打开会话并请求特定类型的内容(如图像或视频)或下订单。 第 7 层将根据该用户的请求类型将流量路由到高度优化的后端服务器,存储请求的图像或视频。
配置第 7 层
我们将再次使用 我们 文本编辑器打开配置文件。
vi /etc/haproxy/haproxy.cfg
注意:确保删除我们在第 4 层示例中添加的先前附加的代码。
在进行以下更改后,添加以下代码以配置第 7 层负载均衡:
- 更新相应的服务器名称以代替 host1、host2 和 host3。
- 将 IP 地址更新为来自您服务器的 IP 地址(就像在第 4 层配置中一样)。
- 这 ACL 定义哪些连接应该通过负载均衡器,所以改变 ACL 到将为负载均衡器提供服务的 URL。 在这个例子中,它是任何以 /test 开头的路径的连接。
- 改变 use_backend 到将提供数据的后端服务器。 这 use_backend 表示所有匹配的 URL ACL 行 URL 应由名为 test_back 的后端服务器提供。
- 这 后端 http_back 定义您的多服务器配置,这与我们在第 4 层中所做的相同,将处理一般请求。
- 这 后端 test_back 将处理与 domain.com/test 的连接。
frontend http_front bind *:80 stats uri /haproxy?stats acl url_test path_beg /test use_backend test_back if url_test default_backend http_back backend http_back balance roundrobin server host1 209.59.154.63:80 check server host2 209.59.154.64:80 check backend test_back server host3 209.59.176.93:80 check
重启HAProxy
配置第 4 层或第 7 层后,使用以下命令重新启动 HAProxy。
systemctl restart haproxy
成功重启将导致没有输出,这意味着 HAProxy 已启动并运行您刚刚实施的更改。
结论
现在您已经了解了 CentOS 7 上 HAProxy 的安装基础知识。HAProxy 可以用于各种 Linux 发行版,例如 Ubuntu 或 Debian。 HAProxy 的付费版本确实提供了高级功能和支持,但开源版本允许您完成大多数任务。 如果您的在线业务开始因流量增加而苦恼,HAProxy 是您的完美解决方案!
从今天开始使用 Liquid Web VPS 服务器,被评为最快的 VPS Cloud 观众.