如何在Debian 10上安装和配置HAProxy(Buster)

时间:2020-02-23 14:32:41  来源:igfitidea点击:

本教程将讨论如何在Debian 10 Buster上安装和配置Haproxy Load Balancer。
HAProxy是一个开源,可靠,高性能的TCP/HTTP负载均衡器和代理服务器,在Linux,FreeBSD和Solaris上运行。
HAProxy是用C编写的,它为在多个服务器上运行的TCP和基于HTTP的应用程序提供了高可用性负载平衡器。

在我的设置中,我将有两个后端的Web应用程序,并配置HAProxy以将余额流量加载到这些HTTP服务器。
使用的服务器如下图所示。

|||
| --- - | --- |
|服务器|服务|
| 192.168.10.10 | haproxy |
| 192.168.10.11 | Apache Web服务器1 |
| 192.168.10.12 | Apache Web服务器2 |

第1步:更新Debian系统

更新将用于最新可用软件包的所有服务器。

sudo apt update && sudo apt -y upgrade
sudo reboot

第2步:配置Apache后端服务器

对于此演示,我们将使用Apache Web服务器作为Haproxy Frontend代理的后端。
我将使用以下命令在我的两个Debian 10服务器上安装Apache。

在Server1上

sudo apt update
sudo apt -y install apache2
echo "<H1>Hello from Server1</H1>" | sudo tee /var/www/html/index.html

在Server2上

sudo apt update
sudo apt -y install apache2
echo "<H1>Hello from Server2</H1>" | sudo tee /var/www/html/index.html

我们可以尝试访问Server1和Server2 Web URL并查看响应。

第3步:在Debian 10上安装Haproxy(Buster)

要在Debian 10上安装HAProxy(Buster),请在终端上运行以下命令。

sudo apt -y install haproxy

配置haproxy。

$sudo nano /etc/haproxy/haproxy.cfg
# Add to the end
# Define frontend
frontend apache_front
        # Frontend listen port - 80
        bind *:80
        # Set the default backend
        default_backend    apache_backend_servers
        # Enable send X-Forwarded-For header
        option             forwardfor
  
# Define backend
backend apache_backend_servers                                                                                                                     
        # Use roundrobin to balance traffic
        balance            roundrobin
        # Define the backend servers
        server             backend01 192.168.10.11:80 check
        server             backend02 192.168.10.12:80 check

重新启动Haproxy服务

sudo systemctl restart haproxy

验证配置是否正常工作以访问前端HAProxy服务器。

再次重新加载页面,我们应该从Server2获取响应。

对于TCP后端,配置将如下所示。

frontend rserve_frontend
    bind *:80
    mode tcp
    option tcplog
    timeout client  1m
    default_backend rserve_backend
backend rserve_backend
    mode tcp
    option tcplog
    option log-health-checks
    option redispatch
    log global
    balance roundrobin
    timeout connect 10s
    timeout server 1m   
    server rserve1 <rserve hostname1>:6311 check
    server rserve2 <rserve hostname2>:6311 check
    server rserve2 <rserve hostname3>:6311 check

配置SSL.

结合证书和私钥。

cat fullchain.pem privkey.pem > haproxy.pem

然后配置HAProxy以在前端使用SSL证书。

frontend apache-frontend
        bind *:80
        bind *:443 ssl crt /etc/letsencrypt/live/webapp.theitroad.com/haproxy.pem