欢迎,来自IP地址为:44.200.122.214 的朋友
HAProxy 是一款稳定、高效的 TCP/HTTP 负载均衡器,本教将演示如何在 CentOS 8 系统安装和配置 HAProxy。
一、什么是 HAProxy
HAProxy 是一款开源软件,用于为基于 TCP/HTTP 应用提供高可靠的负责均衡功能,而所谓的负责均衡就是可以将请求分发到不同的服务器来进行处理。HAProxy 是由 C 语言开发,天生具有速度与性能上的优势。由于出色的性能,HAProxy 被 众多知名网站使用。
二、HAProxy 的特性
- 四层(TCP)与七层(HTTP)的多层次负载均衡
- URL 重定向
- 传输流量控制
- SSL/TLS 终结
- Gzip 压缩
- 代理协议支持
- 连接及 HTTP 消息日志功能
- 支持 HTTP/2
- 多线程
- Hitless 重载
- gRPC支持
- Lua和SPOE支持
- API支持
三、演示环境
本次示例将使用一台服务器,使用 CentOS 8 系统,安装 HAProxy 负载均衡器,并安装 Nginx 服务器作为后端实际业务应用服务器,Nginx 添加两台虚拟服务器,模拟两个不同的业务服务器,由 HAProxy 服务器实现这两台服务器的业务负载均衡。
- 操作系统:CentOS 8.3
- IP 地址:172.16.200.1
四、安装 Nginx 服务器
由于是演示环境,并不需要安装最新版的 Nginx 服务器,使用 CentOS 8 软件库的默认发行版即可:
# dnf install nginx -y
安装成功之后,将”/etc/nginx/nginx.conf”配置文件中”server{}”配置块全部删除,并在”/etc/nginx/conf.d/”目录添加两个配置文件”host-8001.conf”和”host-8002.conf”,内容分别如下:
//hont-8001.conf server { listen 8001; server_name localhost; location / { root /usr/share/nginx/host-8001; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } //hont-8002.conf server { listen 8002; server_name localhost; location / { root /usr/share/nginx/host-8002; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
根据以上配置文件,使用如下命令添加对应目录和页面文件:
# mkdir -p /usr/share/nginx/host-{8001,8002} # vi /usr/share/nginx/host-8001/index.html # vi /usr/share/nginx/host-8002/index.html
页面文件的内容分别为:
//host-8001 index.html <HTML> <HEAD> <TITLE>PAGE AT HOST-8001</TITLE> <BODY> <H1>PAGE AT VIRTUAL HOST RUNNING AT PORT 8001</H1> </BODY> </HTML> //host-8002 index.html <HTML> <HEAD> <TITLE>PAGE AT HOST-8002</TITLE> <BODY> <H1>PAGE AT VIRTUAL HOST RUNNING AT PORT 8002</H1> </BODY> </HTML>
全部完成后,使用如下命令启动 Nginx 服务器,并使用”curl”命令进行验证:
# systemctl enable --now nginx # curl http://localhost:8001 # curl http://localhost:8002
至此,两台虚拟 HTTP 业务服务器就搭建完成,之后将进行 HAProxy 负载均衡器的安装。
五、安装 HAProxy 负载均衡器
HAProxy 也是 CentOS 8 软件库的标准软件,可以直接使用”dnf”命令安装预编译版本:
# dnf install haproxy -y
六、配置 HAProxy 负载均衡器
开始使用 HAProxy 之前,我们首先为其配置系统日志,这样将对于之后的故障处理非常有用,否则在系统遇到问题时将会无从下手。
编辑 rsyslog 的配置文件”/etc/rsyslog.conf”,取消注释如下两行即可:
module(load="imudp") # needs to be done just once input(type="imudp" port="514")
然后添加 HAProxy 的日志配置文件”/etc/rsyslog.d/haproxy.conf”,内容如下:
# HAProxy Logging local2.* /var/log/haproxy.log
最后,重启日志服务让配置生效:
# systemctl restart rsyslog.service
现在,将配置 HTTP 负载均衡器,两台 HTTP 服务器分别侦听本机的 8001 和 8002 端口,而负载均衡器将侦听主机的 80 端口模拟实现 HTTP 服务器功能。编辑配置文件”/etc/haproxy/haproxy.cfg”,添加如下内容:
# HAProxy Load Balancer for Web Server frontend http-loadbalancer bind 172.16.200.1:80 default_backend web-servers backend web-servers mode http balance roundrobin stats enable stats auth daehub:admin@daehub server webserver-01 127.0.0.1:8001 check server webserver-02 127.0.0.1:8002 check
打开防火墙并启用负载均衡器:
# firewall-cmd --add-service=http --zone=public --permanent # firewall-cmd --reload # systemctl enable --now haproxy
打开浏览器,访问”http://172.16.200.1″,不断刷新页面,就会发现页面内容在交替展示,说明 HAProxy 已经启用。
HAProxy 还提供了一个信息页面,用于显示其状态及统计信息,使用浏览器访问”http://172.16.200.1/haproxy?stats”,输入用户名 daehub 和密码 admin@daehub(配置文件中已经设定),就会见到如下内容:
至此,HAProxy 实现的 HTTP 负载均衡器就全部搭建完成。