Ubuntu 14服务器上的HAProxy负载均衡器

时间:2020-01-09 10:38:48  来源:igfitidea点击:

说明

HAProxy是一种轻量级的负载平衡器,可以快速轻松地进行设置。尽管它缺少F5和Citrix等公司的企业平衡器中提供的许多功能,但它仍然是几乎可以在任何Linux发行版上免费使用的强大服务器。我在许多预算较低的项目中使用了需要负载平衡的项目。

顾名思义,所有平衡的流量都通过HAProxy代理。

创建虚拟IP

虚拟IP是用户将用于连接到负载平衡应用程序的IP地址。这是我们将在DNS中注册的地址。在我们的示例中,虚拟IP将分配给HAProxy服务器上唯一的网络接口ETH0。在生产中,将平衡的流量和服务器管理流量分离到不同的网络接口上是明智的。

  • 在文本编辑器中打开网络配置文件。
sudo nano /etc/network/interfaces
  • 在现有的网络接口下,添加一个使用相同名称的新接口,并在其末尾添加一个冒号(:)。例如,我们将虚拟IP添加到的接口名为ETH0。因此,我们的新虚拟接口将被命名为ETH0:1.
# This file describes the network interfaces available on your system
and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
     address 172.30.0.100
     netmask 255.255.255.0
     network 172.30.0.0
     broadcast 172.30.0.255
     gateway 172.30.0.1

# HAProxy Virtual IP 1
auto eth0:1
iface eth0:1 inet static
     address 172.30.0.101
     netmask 255.255.255.0
  • 保存更改并退出文本编辑器。
  • 打开新界面。
ifup eth0:1
  • 使用ifconfig eth0:1验证接口是否已启动。输出应类似于以下示例。
eth0:1     Link encap:Ethernet  HWaddr 00:0c:29:b6:f3:e8
           inet addr:172.30.0.101  Bcast:172.30.0.255  Mask: 255.255.255.0
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

安装HAProxy

HAProxy软件包在Ubuntu 14存储库中可用。可以使用aptitude安装它。

  • 使用具有root特权的帐户登录到服务器。
  • 安装HAProxy。
sudo apt-get install haproxy
  • 要启用HAProxy服务守护程序,请在文本编辑器中打开/ etc / defaults / haproxy。
sudo nano /etc/defaults/haproxy
  • 将"启用"值设置为1.
# Set ENABLED to 1 if you want the init script to start haproxy
ENABLED=1
# Add extra flags here
#EXTRAOPTS="-de -m 16"
  • 保存更改并退出文本编辑器。

第4层平衡(高性能)

第4层负载平衡是平衡Web应用程序的更快方法。简单来说,它接收提交给虚拟IP的请求,并将其转发到支持的服务器(例如,其中一个Web服务器处于平衡状态)。由于仅转发了请求,因此很少进行任何处理。

使用第4层进行平衡的限制是所有后端服务器必须配置相同。否则,用户体验将取决于将用户转发到哪个服务器而有所不同。

  • 在文本编辑器中打开HAProxy配置文件。
sudo nano /etc/haproxy/haproxy.cfg
  • 修改默认值部分下的某些值。更具体地说,我们需要确保将模式设置为tcp。
global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    tcp
        option  tcplog
        option  dontlognull
        contimeout 5000
        clitimeout 50000
        srvtimeout 50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http
  • 为应用程序创建一个新的前端部分。这是我们定义群集的虚拟IP以及要使用的后端服务器群集(在下面定义)的位置。我们可以根据需要为前端命名,只要每个前端都有唯一的名称即可。
global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    tcp
        option  tcplog
        option  dontlognull
        contimeout 5000
        clitimeout 50000
        srvtimeout 50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

::HL::frontend webapp1
::HL::        bind 172.30.0.101:80
::HL::        default_backend webapp1-servers
  • 为刚创建的前端创建一个后端。这是我们定义集群中使用的服务器的地方。我们还在此处设置了平衡算法,以及一些其他可选选项。
global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        user haproxy
        group haproxy
        daemon

defaults
        log     global
        mode    tcp
        option  tcplog
        option  dontlognull
        contimeout 5000
        clitimeout 50000
        srvtimeout 50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

frontend webapp1
        bind 172.30.0.101:80
        default_backend webapp1-servers

::HL::backend webapp1-servers
::HL::        balance roundrobin
::HL::        mode tcp
::HL::        server webserver1 172.30.0.102
::HL::        server webserver2 172.30.0.103
::HL::        server webserver3 172.30.0.104
::HL::        server webserver4 172.30.0.105
  • 保存更改并退出文本编辑器。
  • 启动或者重新启动HAProxy使更改生效。
sudo service haproxy restart