怎样在 CentOS 8 上安装 HAProxy

在本教程中,我们将向您展示怎样在 CentOS 8 上安装 HAProxy。对于那些不知道的人,HAProxy 是一个免费的 HTTP/TCP 高可用性负载均衡器和代理服务器。 它在多个服务器之间传播请求,以缓解单个服务器故障导致的问题。 HA 代理被许多知名网站使用,包括 GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、 Twitter和 Tuenti,并用于 Amazon Web Services 的 OpsWorks 产品中。

本文假设您至少具有 Linux 的基本知识,知道怎样使用 shell,并且最重要的是,您在自己的 VPS 上托管您的站点。 安装非常简单,假设您在 root 帐户中运行,否则您可能需要添加 ‘sudo‘ 到获得 root 权限的命令。 我将向您展示在 CentOS 8 上的分步安装 HAProxy。

在 CentOS 8 上安装 HAProxy

步骤 1. 首先,让我们先确保您的系统是最新的。

sudo clean all
sudo dnf update

步骤 2. 在 CentOS 8 上安装 HAProxy。

HAProxy 在默认 CentOS 8 上可用,现在使用以下 dnf安装HAProxy的命令:

sudo dnf install haproxy

步骤 3. 配置 HAProxy。

我们将创建一个配置文件 /etc/haproxy/haproxy.cfg 包含必要的设置和配置:

sudo nano /etc/haproxy/haproxy.cfg

Enter 将以下内容写入文件:

global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats
    ssl-default-bind-ciphers PROFILE=SYSTEM
    ssl-default-server-ciphers PROFILE=SYSTEM
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
frontend main
    bind *:5000
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js
    use_backend static          if url_static
    default_backend             app
backend static
    balance     roundrobin
    server      static 127.0.0.1:4331 check
backend app
    balance     roundrobin
    server  app1 127.0.0.1:5001 check
    server  app2 127.0.0.1:5002 check
    server  app3 127.0.0.1:5003 check
    server  app4 127.0.0.1:5004 check

您可以查看配置详细信息,更多信息请检查此 网址. 配置 HAProxy 后,就可以启动服务了:

sudo systemctl start haproxy
sudo systemctl enable haproxy

步骤 4. 配置防火墙。

我们将 HAProxy 添加到 CentOS 8 防火墙并使用以下命令更新规则:

sudo firewall-cmd --add-port=8088/tcp --permanent
sudo firewall-cmd --reload

步骤 5. 配置 HAProxy 日志记录。

配置 HAProxy 标准日志记录编辑 /etc/rsyslog.conf 并在端口 514 上启用 UDP Syslog 接收:

sudo nano /etc/rsyslog.conf
...
# Provides UDP syslog reception
# for parameters see https://www.rsyslog.com/doc/imudp.html
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")
...
*.info;mail.none;authpriv.none;cron.none,local2.none /var/log/messages
local2.* /var/log/haproxy.log
...

然后,保存配置文件并运行以下命令以检查任何错误:

rsyslogd -N1
sudo systemctl restart rsyslog haproxy

步骤 6. 配置 Apache X-Forwarded-For 登录后端服务器。

现在我们登录后端服务器并配置 Apache 记录 X-Forwarded-For 标头。 我们正在更改的默认行是:

...
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
...

编辑此行,使其看起来像:

...
LogFormat ""%{X-Forwarded-For}i" %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
...

Save 文件并重新启动 Apache:

apachectl configtest
sudo systemctl restart httpd

步骤 7. 测试 HAProxy 负载均衡器。

要验证 HAProxy 是否能够对 HTTP 请求进行负载平衡,请导航到浏览器,然后使用主机名或 IP 地址访问 HAProxy。

恭喜! 您已成功安装 HAProxy。 感谢您使用本教程在 CentOS 8 系统上安装 HAProxy。 如需更多帮助或有用信息,我们建议您查看 HAProxy 官方网站.