如何为共享 Web 流量设置 HAproxy 负载均衡服务器


本文旨在准备网站的高可用性。那些希望其网站对客户或用户始终可用的人也可以使用它,并使用高可用性服务器并在其服务器之间共享。它是一个免费的开源应用程序,用作 TCP/HTTP 负载均衡器,它将 Web 流量分发到多台服务器,并提高 Web 服务器的性能和可靠性。

安装

假设负载均衡器 HA 代理服务器 IP 地址为 http://192.167.57.150

HAproxy 服务器详细信息

操作系统:Centos 6.7,IP 地址:192.168.57.150

WebServer1

操作系统:Centos 6.7,IP 地址:192.168.57.147

WebServer2

操作系统:Centos 6.7,IP 地址:192.168.57.148

我们需要在两台 Web 服务器(即 192.168.57.151 和 192.168.57.152)上安装 Apache。

# yum install http*

安装后,请从 Web 浏览器访问 Apache http://your-server-ip-address

安装 HAProxy 服务器

# yum install haproxy openssl-devel

打开主机文件并在所有 3 台服务器(HAproxy 负载均衡器、webserver1、webserver2)中添加以下行

192.168.87.150    haproxy.demo.com    haproxy

192.168.87.151    webserv1.demo.com    haproxy
192.168.87.152    webserv2.demo.com    haproxy
# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.87.150    haserver.cgi.com    haserver
192.168.87.151    ha2.cgi.com ha2
192.168.87.152    ha1.cgi.com ha1

现在,您需要启用 HAproxy 日志以识别未来调试的问题

# vi /etc/haproxy/haproxy.cfg

添加以下行以启用日志记录

log 127.0.0.1 local Needed to enable the UDp SYSLOG reception in /etc/rsyslog.conf
# vi /etc/rsyslog.conf
#### MODULES ####

$ModLoad imuxsock # provides support for local system logging (e.g. Via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
#$ModLoad immark # provides --MARK-- message capability

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP SYSLOG reception
#$ModLoad imtcp
#$InputTCPServerRun 514

现在在 /etc/rsyslog.d/ 文件夹中创建一个 haproxy.conf 以创建日志文件

# vi /etc/rsyslog.d/haproxy.conf

添加以下行以创建文件

local.* /var/log/haproxy.log

重新启动 rsyslog 服务以更新我们所做的更改

# service rsyslog restart

配置 HAproxy 全局设置

we needed to setup the glogal setting in /etc/haproxy/haproxy.cfg
# vi /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
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

在发生故障的情况下,我们必须提供两台 Web 服务器作为前端和后端服务器的详细信息。

frontend LB
   bind 192.168.87.150:80
   reqadd X-Forwarded-Proto: http
   default_backend LB

backend LB 192.168.87.150:80
   mode http
   stats enable
   stats hide-version
   stats uri /stats
   stats realm Haproxy Statistics
   stats auth haproxy:redhat            # Credentials for HAProxy Statistic report page.
   balance roundrobin                   # Load balancing will work in round-robin process.
   option httpchk
   option httpclose
   option forwardfor
   cookie LB insert
   server ha2 192.168.87.151:80 cookie ha1 check           # backend server.
   server ha1 192.168.87.152:80 cookie ha2 check           # backend server.

我们需要重新启动服务并使更改生效。

# service haproxy restart

要自动启动服务,请使用以下命令

# chkconfig haproxy on

检查自动启动 -

# chkconfig --list haproxy

服务重新启动后,我们就可以在 http://192.168.87.150:/stats 上访问负载均衡器。

为了测试 HAproxy 负载均衡器,我们必须在两台 Web 服务器中创建一个包含以下代码的 index.html 文件。

在 webserver1 中创建一个包含以下代码的 index.html 文件。

<html>
<head>
   <title>HAProxy Test Page</title>
</head>
   <body>
      <!-- Main content -->
      <h1>My HAProxy Test Page Server 1 </h1>
   </body>
</html>

在 webserver2 中创建一个包含以下代码的 index.html 文件。

<html>
<head>
   <title>HAProxy Test Page</title>
</head>
   <body>
      <!-- Main content -->
      <h1>My HAProxy Test Page Server 2 </h1>
   </body>
</html>

现在访问 **haproxy** 服务器 IP http://192.168.57.150

默认情况下,您可以看到 webserver 1 的页面

Webserver1

现在,通过转到 webserver 1 并停止 HTTPd 服务器来测试负载均衡

# service httpd stop

然后,访问 **haproxy** 服务器 IP,http://192.168.57.150

现在,您将自动看到 webserver2 的网页


Webserver2

要进行验证,您可以访问 HAproxy 负载均衡器统计信息页面 http://192.168.87.150/stats


HAproxy

结论

配置后,即使其中一台服务器关闭或不可用,您也应该能够无中断地访问您的网站。同样,我们也可以为 Apache 设置 HAproxy。您还可以观察到,通过配置上述内容,Webserver1 在 HAproxy 负载均衡器统计信息页面中不可访问或已关闭。您还可以根据需要添加任意数量的服务器。

更新于: 2020年1月20日

782 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始
广告