欢迎,来自IP地址为:35.170.64.36 的朋友



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 负载均衡器就全部搭建完成。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注