配置Balancer-Manager
Apache HTTP Server 还提供了一个内置的 Balancer-Manager 应用程序,用于轻松管理和监控负载均衡器。
在 /etc/httpd/conf.d 中添加以下配置文件。
[root@proxy-01 ~]# vi /etc/httpd/conf.d/lbmanager.conf
添加以下指令以启用 Balancer-Manager 。
<location "/balancer-manager"> SetHandler balancer-manager allow from all </location>
重启 httpd.service 。
[root@proxy-01 ~]# systemctl restart httpd.service
从客户端浏览器浏览 URL http://proxy-01.example.com/balancer-manager。
Balancer-Manager 已配置并可以使用。
测试环境
在本文中,我们使用了三台虚拟机。
服务器1
主机名:proxy-01.example.com
IP: 192.168.1.100/24
用途: 反向代理, 负载均衡器
服务器2
主机名:web-01.example.com
IP: 192.168.1.101/24
用途: web服务器
服务器3
主机名:web-02.example.com
IP: 192.168.1.102/24
用途: web服务器
我们已经将 web-01.example.com 和 web-02.example.com 配置为 Web 服务器页。
现在,我们将使用 mod_proxy 和 Apache HTTP 服务器将 proxy-01.example.com 配置为负载均衡器。
配置反向代理和 HTTP 负载均衡器:
Apache HTTP Server 需要 mod_proxy 模块来配置和充当负载均衡器。
mod_proxy 模块包含在 httpd 包中,因此它会在 CentOS 7 平台上与 Apache HTTP Server 一起自动安装。
使用以下命令检查 mod_proxy 是否可用
[root@proxy-01 ~]# httpd -M | grep proxy proxy_module (shared) proxy_ajp_module (shared) proxy_balancer_module (shared) proxy_connect_module (shared) proxy_express_module (shared) proxy_fcgi_module (shared) proxy_fdpass_module (shared) proxy_ftp_module (shared) proxy_http_module (shared) proxy_scgi_module (shared) proxy_wstunnel_module (shared)
在 /etc/httpd/conf.d/ 中添加配置文件。
[root@proxy-01 ~]# vi /etc/httpd/conf.d/proxy.conf
其中添加以下反向代理配置。
<proxy balancer://appset> BalancerMember http://web-01.example.com BalancerMember http://web-02.example.com ProxySet lbmethod=bytraffic </proxy> ProxyPass "/app" "balancer://appset/" ProxyPassReverse "/app" "balancer://appset/"
重启 httpd.service 。
[root@proxy-01 ~]# systemctl restart httpd.service
使用浏览器打开: http://proxy-01.example.com/app。
页面请求已转发到 web-01.example.com 或者 web-02.example.com
刷新页面,将转发到另一台web服务器上。
我们在 Apache HTTP 服务器中配置了一个简单的反向代理,即两个 Web 服务器之间的负载平衡。
mod_proxy 有很多配置选项,我们可以创建相对高级的配置,例如热备用、热备用和故障转移集。
完整的文档可在 Apache 网站上找到。
安装 Apache HTTP 服务器:
登录到 proxy-01.example.com。
使用 yum 命令安装 Apache HTTP Server。
[root@proxy-01 ~]# yum install -y httpd
启动并启用 httpd.service 。
[root@proxy-01 ~]# systemctl start httpd.service [root@proxy-01 ~]# systemctl enable httpd.service Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
在 Linux 防火墙中允许 HTTP 服务。
[root@proxy-01 ~]# firewall-cmd --permanent --add-service=http success [root@proxy-01 ~]# firewall-cmd --reload success
使用浏览器打开: http://proxy-01.example.com, 可以看到 Apache HTTP Server 正在运行并显示默认测试页面。
保护 Balancer-Manager:
Balancer-Manager 是一个用于监控和管理 Apache HTTP 负载均衡器的简单应用程序。
因此,它也缺少任何隐式用户身份验证。
但是,我们可以配置基本 HTTP 身份验证来限制未经授权的访问。
创建一个密码文件并其中添加一个用户。
[root@proxy-01 ~]# htpasswd -c /etc/httpd/htpasswd JackLiu New password: Re-type new password: Adding password for user JackLiu
修改 /etc/httpd/conf.d/lbmanager.conf 实现基本的 HTTP 认证。
[root@proxy-01 ~]# vi /etc/httpd/conf.d/lbmanager.conf
更新后的配置应该如下:
<location "/balancer-manager"> SetHandler balancer-manager AuthType "basic" AuthName "balancer-manager" AuthUserFile /etc/httpd/htpasswd Require valid-user </location>
重启 httpd.service 。
[root@proxy-01 ~]# systemctl restart httpd.service
再次打开 http://proxy-01.example.com/balancer-manager。
现在,它要求用户登录。
在本文中,我们将 Apache 配置为 CentOS 7 服务器上的反向代理和 HTTP 负载均衡器。