设置高可用性负载平衡器(具有故障转移和会话支持)使用Perlbal / Heartbeat在Debian蚀刻

设置高可用性负载平衡器(具有故障转移和会话支持)在Debian Etch上使用Perlbal / Heartbeat

版本1.0
作者:Falko Timme

本文介绍如何在Debian Etch上使用Perlbal和心跳在主动/被动配置中设置双节点负载均衡器。 负载均衡器位于用户和两个(或多个)后端Apache Web服务器之间,该服务器拥有相同的内容。 负载平衡器不仅将请求分发到两个后端Apache服务器,还检查后端服务器的运行状况。 如果其中一个关闭,所有请求将自动重定向到其余的后端服务器。 除此之外,两个负载平衡器节点使用心跳监视彼此,并且如果主器件失败,则从器件成为主器件,这意味着用户不会注意到任何服务中断。 Perlbal是会话感知的,这意味着您可以使用任何使用会话(如论坛,购物车等)的Web应用程序。

我不会保证这将为您工作!

1初步说明

在本教程中,我将使用以下主机:

  • 负载均衡器1: lb1.example.com ,IP地址: 192.168.0.100
  • 负载平衡器2: lb2.example.com ,IP地址: 192.168.0.101
  • Web服务器1: http1.example.com ,IP地址: 192.168.0.102
  • Web Server 2: http2.example.com ,IP地址: 192.168.0.103
  • 我们还需要一个浮动在lb1lb2之间的虚拟IP地址: 192.168.0.99

这是一个小图,显示我们的设置:

    shared IP=192.168.0.99
 192.168.0.100  192.168.0.101 192.168.0.102 192.168.0.103
 -------+------------+--------------+-----------+----------
        |            |              |           |
     +--+--+      +--+--+      +----+----+ +----+----+
     | lb1 |      | lb2 |      |  http1  | |  http2  |
     +-----+      +-----+      +---------+ +---------+
     Perlbal      Perlbal      2 web servers (Apache)
     heartbeat    heartbeat

共享(虚拟)IP地址没有问题,只要您在自己的LAN中,您可以根据需要分配IP地址。 但是,如果要将此设置与公共IP地址配合使用,则需要找到一个主机,您可以在同一子网中租用两台服务器(负载均衡器节点); 然后,您可以在此子网中使用可用的IP地址作为虚拟IP地址。

http1http2是标准的Debian Etch Apache安装文件,根文件root / var / www (此默认vhost的配置存储在/ etc / apache2 / sites-available / default中 )。 如果您的文档根不同,您可能需要调整本指南。

2准备后端Web服务器

我们将配置Perlbal作为一个透明的代理,即它会将一个称为X-Forwarded-For的字段中的原始用户的IP地址传递给后台的Web服务器。 当然,后端Web服务器应该将原始用户的IP地址记录在其访问日志中,而不是我们的负载平衡器的IP地址。 因此,我们必须修改/etc/apache2/apache2.conf中的LogFormat行,并用%{X-Forwarded-For} i替换%h

http1 / http2:

vi /etc/apache2/apache2.conf
[...]
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
[...]

之后我们重新启动Apache:

/etc/init.d/apache2 restart

我们已经完成了后台服务器; 其余的配置发生在两个负载平衡器节点上。

3安装Perlbal

Perlbal不可用作Debian Etch的软件包,但是我们可以通过Perl shell进行安装。 在我们这样做之前,我们安装了一些先决条件:

lb1 / lb2:

apt-get install build-essential unzip lynx ncftp perl

之后我们调用Perl shell如下:

perl -MCPAN -e shell

在Perl shell上,我们运行以下三个命令来安装Perlbal:

force install HTTP::Date
install IO::AIO
force install Perlbal

类型

q

离开Perl shell。

4配置负载平衡器

Perlbal希望在文件/etc/perlbal/perlbal.conf中配置 ,我们创建如下:

lb1 / lb2:

mkdir /etc/perlbal
vi /etc/perlbal/perlbal.conf
CREATE POOL webfarm
  POOL webfarm ADD 192.168.0.102:80
  POOL webfarm ADD 192.168.0.103:80

CREATE SERVICE balancer
  SET listen          = 192.168.0.99:80
  SET role            = reverse_proxy
  SET pool            = webfarm
  SET persist_client  = on
  SET persist_backend = on
  SET verify_backend  = on
ENABLE balancer

您不会在互联网上找到有关Perlbal配置的许多文档,因此了解Perlbal配置选项的最佳方式是从http://code.google.com/p/perlbal/downloads/下载最新的Perlbal版本列表 (例如http://perlbal.googlecode.com/files/Perlbal-1.70.tar.gz )。 解压缩它,然后查看conf /doc /子目录中的文件。 您将在其中找到一些配置示例和配置选项列表。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏