本文翻译自Howtoforge上的一篇文章 How To Use pfSense To Load Balance Your Web Servers。注意pfSense的负载均衡有两种:一是设置多个WAN做双线负载均衡,二是本文的为LAN内的web服务器做inbound-loadbalancer

这篇howto中展示了怎么使用pfSense 2.0 为你的多个web服务器配置负载均衡(load balancer)。这里假定在你的网络环境中已经拥有了一个pfSense服务器和2个以上的apache服务器,并且具有一定的pfSense知识。(参考图解pfSense软路由系统的使用(NAT功能

1. 前提

  • 一个安装好的pfSense 2.0 机器(如果它是你的外围防火墙,建议安装在物理机上)
  • 至少2个apache服务器(可以是虚拟机)
  • 确保在apache服务器之间代码文件是同步的(rsync、cororsync或其它可以保持web服务器间文件更新)

2. 配置pfSense

pfSense可以使用负载均衡的功能让特定的请求压力由多台服务器分担,这对于有多台应用的服务器很有帮助,因为你可以把负载压力分散到其它节点上而不是死磕一个节点。

2.1 Monitor

我们正式开始。首先点击Services -> Load Balancers,然后选择Monitor标签。

点击右边的+加号来添加一条记录,输入monitor的名字Name和描述Description(在这个示例名字和描述我都使用ApacheClusterMon),把类型Type设置成HTTP,主机地址Host设置一个还未使用的IP(后面我们将在这个IP上建立虚拟IP,这个虚拟IP会被分配到故障转移failover节点上,注:也有文章说把它设成WAN IP),HTTP Code保存默认的200 OK,然后点击Save保存并且使修改生效Apply Changesimage1.jpg image2.jpg

2.2 Pool

接着建立服务器池server pool。点击Pools标签的+按钮来添加一个池。

在该示例我指定ApacheSrvPool为服务池名称,设置ModeLoad Balance,端口80(。这个端口时你后端服务器的监听端口,你当然可以设定其它应用的其它端口,不一定非是web)。为这个池设定上一步创建的ApacheClusterMon,依次将你的所有web服务器IP添加到这个池中Add to pool,保存并应用。 image3.jpg image4.jpg

2.3 Virtual Server

最后一步,选择Virtual Servers标签页,点击+来添加一条记录。填写名称ApacheClusterVirtualServer、描述和IP地址,这个IP地址与第1步中说的未使用的IP相同,端口80,所有发送到这个WAN IP:port的连接都会被转发到服务器池中。虚拟服务器池Virtual Server Poll选择上一步创建的。提交并应用。 image5.jpg image6.jpg

搞定!最后不要忘记为虚拟服务器IP和池添加防火墙规则。