在 RHEL 8 上安装 Apache Web 服务器
在本文中,我们需要两台 Web 服务器和一台 HAProxy 负载平衡服务器。
但是,我们没有三台机器,因此,我们在同一个 HAProxy 服务器上配置两个 Apache 虚拟主机,然后为它们设置 HTTP 负载均衡器。
使用 dnf 命令在 RHEL 服务器上安装 Apache Web 服务器。
# dnf install -y @httpd
为 Apache 虚拟主机创建“文档根”目录。
# mkdir /var/www/host-{80,8080}
为 Apache 虚拟主机生成 index.html(默认网页)。
# vi /var/www/host-80/index.html
其中添加以下 HTML 代码。
<HTML> <HEAD> <TITLE>TEST PAGE AT HOST-80</TITLE> <BODY> <H1>TEST PAGE AT VIRTUAL HOST RUNNING AT PORT 80</H1> </BODY> </HTML>
同样,对于第二个虚拟主机。
# vi /var/www/host-8080/index.html
添加以下 HTML 代码。
<HTML> <HEAD> <TITLE>TEST PAGE AT HOST-8080</TITLE> <BODY> <H1>TEST PAGE AT VIRTUAL HOST RUNNING AT PORT 8080</H1> </BODY> </HTML>
在 Apache Web 服务器中添加虚拟主机配置。
# vi /etc/httpd/conf.d/test.conf
在此文件中添加以下指令。
Listen 80 Listen 8080 <VirtualHost 192.168.1.238:80> ServerName haproxy-01.onitroad.com DocumentRoot "/var/www/host-80" </VirtualHost> <VirtualHost 192.168.1.238:8080> ServerName haproxy-01.onitroad.com DocumentRoot "/var/www/host-8080" </VirtualHost>
Apache Web 服务器使用端口 80/tcp 和 8080/tcp ,因此,我们必须在 Linux 防火墙中允许这些网络端口。
# firewall-cmd --permanent --add-port={80,8080}/tcp success # firewall-cmd --reload success
启用并启动 Apache Web 服务器。
# systemctl enable --now httpd.service Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service -> /usr/lib/systemd/system/httpd.service.
使用 curl 命令验证 Apache 虚拟主机。
# curl http://haproxy-01.onitroad.com:80 <HTML> <HEAD> <TITLE>TEST PAGE AT HOST-80</TITLE> <BODY> <H1>TEST PAGE AT VIRTUAL HOST RUNNING AT PORT 80</H1> </BODY> </HTML> # curl http://haproxy-01.onitroad.com:8080 <HTML> <HEAD> <TITLE>TEST PAGE AT HOST-8080</TITLE> <BODY> <H1>TEST PAGE AT VIRTUAL HOST RUNNING AT PORT 8080</H1> </BODY> </HTML>
如果我们得到上述输出,则 Apache 虚拟主机配置成功。
在 RHEL 8 上安装 HAProxy 负载均衡器
我们可以使用 dnf 命令从 Red Hat 订阅管理存储库安装 HAProxy。
# dnf install -y haproxy Updating Subscription Management repositories.
HAProxy 负载均衡器安装在 Linux 服务器上。
HAProxy 是一个可靠、高性能的 TCP/HTTP 负载均衡器。
HAProxy 是免费的开源软件,可为基于 TCP 和 HTTP 的应用程序提供高可用性负载平衡器和代理服务器,将请求传播到多个服务器。
在这里,我们将学习如何在 RHEL 8 上安装 HAProxy 负载均衡器。
在 RHEL 8 中配置 HAProxy 日志
现在我们需要配置 HAProxy 日志。
此日志对于 Linux 服务器上的 HAProxy 故障排除非常有帮助。
在 vim 文本编辑器中打开 rsyslog 配置文件。
# vi /etc/rsyslog.conf
找到并取消注释此文件中的以下两行。
module(load="imudp") # needs to be done just once input(type="imudp" port="514")
创建用于设置 HAProxy 日志文件位置的 rsyslog 配置文件。
# vi /etc/rsyslog.d/haproxy.conf
在此文件中添加以下指令。
# HAProxy Logging local2.* /var/log/haproxy.log
重新启动 rsyslog 服务以加载更改。
# systemctl restart rsyslog.service
在 HAProxy 中配置 HTTP 负载均衡器
在 vim 文本编辑器中打开 HAProxy 配置文件。
# vi /etc/haproxy/haproxy.cfg
在此文件的末尾添加以下指令。
# HAProxy Load Balancer for Apache Web Server frontend http-loadbalancer bind 192.168.1.238:9000 default_backend web-servers backend web-servers mode http balance roundrobin stats enable stats auth onitroad:JackLi@1234 server webserver-01 192.168.1.238:80 check server webserver-02 192.168.1.238:8080 check
在上面的配置中,我们设置了一个名为 http-loadbalancer 的 HAProxy 负载均衡器,运行在网络端口 9000/tcp 上。
我们的 HTTP 负载平衡器将在两个 Web 服务器之间执行循环负载平衡。
例如:webserver-01 和 webserver-02 。
在这里,我们使用了 Apache 虚拟主机,因此我们使用不同端口的相同 IP 地址。
如果在不同的机器上运行服务,我们还可以使用 Web 服务器的 IP 地址或者主机名。
我们必须在 Linux 防火墙中允许服务端口 9000/tcp,才能通过计算机网络访问它。
# firewall-cmd --permanent --add-port=9000/tcp success # firewall-cmd --reload success
确保我们已正确完成上述配置。
此后,启用并启动 HAProxy 服务。
# systemctl enable --now haproxy.service Created symlink /etc/systemd/system/multi-user.target.wants/haproxy.service -> /usr/lib/systemd/system/haproxy.service.
执行 curl 命令多次访问 HAProxy 负载均衡器。
# curl http://haproxy-01.onitroad.com:9000 <HTML> <HEAD> <TITLE>TEST PAGE AT HOST-80</TITLE> <BODY> <H1>TEST PAGE AT VIRTUAL HOST RUNNING AT PORT 80</H1> </BODY> </HTML> # curl http://haproxy-01.onitroad.com:9000 <HTML> <HEAD> <TITLE>TEST PAGE AT HOST-8080</TITLE> <BODY> <H1>TEST PAGE AT VIRTUAL HOST RUNNING AT PORT 8080</H1> </BODY> </HTML> # curl http://haproxy-01.onitroad.com:9000 <HTML> <HEAD> <TITLE>TEST PAGE AT HOST-80</TITLE> <BODY> <H1>TEST PAGE AT VIRTUAL HOST RUNNING AT PORT 80</H1> </BODY> </HTML>
我们可以看到 HAProxy 负载平衡器以循环方式在两个 Web 服务器之间轮换服务请求。
但是,我们可以在 /var/log/haproxy.log 文件中查看 HAProxy 统计信息和日志。
但我们也可以通过网络浏览器查看 Haproxy 集成统计报告。
为此,我们可以在 Web 浏览器中打开 http://haproxy-01.onitroad.com:9000/haproxy?stats。