在openbsd上实现负载均衡

| | 评论 (0) | 引用通告 (0)

负载均衡需要有的特性如下:

  • 支持多服务器的服务池和轮询策略
  • 支持自身HA
  • 支持会话同步,在单机失效的情况下操持会话连接

我使用了VirtualBox建议模拟环境。我只是说明它的配置,不会有OpenBSD自身的安装和系统配置。

网络规划如下:

  • 外网网段:192.168.1.xxx
  • PFSYNC网段:10.10.9.xxx
  • 内网网段:10.10.10.xxx

整体拓扑如下:

Lbsample.Png
这里我们可以看到以下关键字,请自行google之,或到OpenBSD FAQ中了解:

  • CARP(Common Access Redundancy Protocol )
  • pf(packet fileter)
  • Load Balance

我们对LB1机器的三个网卡配置如下:
/etc/hostname.pcn0
inet 192.168.1.101 255.255.255.0 192.168.1.255
/etc/hostname.pcn1
inet 10.10.10.101 255.255.255.0 10.10.10.255
/etc/hostname.pcn2
inet 10.10.9.101 255.255.255.0 10.10.9.255
相应的LB2也是对应的配置,只是ip不相同

后端服务器网络配置的重点是将它们的网关配置成为LB的后端CARP虚似IP。
/etc/mygate
10.10.10.100

在LB1和LB2上配置CARP。LB会有两个虚似IP,一个是对外提供服务的VIP,一个是内部用于后端服务器的网关IP。它们都使用CARP来虚似,好在一个机器出现问题后由第二台机器接管它的服务。

先增加外网VIP的CARP接口:
LB1上增加carp0接口:
/etc/hostname.carp0
inet 192.168.1.100 255.255.255.0 192.168.1.255 vhid 1 pass yourpasswd carpdev pcn2 advskew 10
LB2上也增加carp0接口:
/etc/hostname.carp0
inet 192.168.1.100 255.255.255.0 192.168.1.255 vhid 1 pass yourpasswd carpdev pcn2 advskew 20

再增加内网网关的CARP接口:
LB1上增加carp1接口:
/etc/hostname.carp1
inet 10.10.10.100 255.255.255.0 10.10.10.255 vhid 1 pass yourpasswd carpdev pcn2 advskew 10
LB2上也增加carp1接口:
/etc/hostname.carp1
inet 10.10.10.100 255.255.255.0 10.10.10.255 vhid 1 pass yourpasswd carpdev pcn2 advskew 20

以上carp的配置中advskew设置出了优先级别。数字越小的,获得优先级别越高,也就是最先能成为Master。

我们要使用pf来做轮询,以下配置在LB1和LB2上都相同:

在/etc/pf.conf中加入论询:
ext_if="pcn0"

sync_if="pcn2"

web_servers = "{ 10.10.10.11, 10.10.10.12, 10.10.10.13 }"
rdr on $ext_if proto tcp from any to any port 80 -> $web_servers round-robin sticky-address
pass on $sync_if proto pfsync

为了在carp生效后,一台机器失效让另一台机器接手服务时把当前的网络连接接手过去,我们需要把pf的状态表进行同步,这是通过pfsync完成的:
为LB1和LB2增加一个做sync的接口,在/etc/hostname.pfsync0中加入
up syncif pcn2

ok了。试试罢。 :)

引用通告 (0)

下面所列出的是引用这篇文章: 在openbsd上实现负载均衡 的Blog链接.

这篇文章的引用通告URL: http://mt.opensource.org.cn/cgi-bin/mt/mt-tb.fcgi/30

发表评论

关于这篇文章

本页包含由 HD 发表于 October 16, 2007 10:53 AM 的单篇文章.

django的几种运行方法性能对比 是本Blog内的上一篇文章.

在OSX下配置DNS服务器 是本Blog内的下一篇文章.

您可以在 主页 上查找最近发表的内容,也可以查看列出在 存档页 上的所有内容.

Powered by Movable Type 5.01