pfsense Web服务器负载平衡配置示例

在pfsense的网关和服务器中有两种类型的负载平衡功能。网关负载平衡可以通过多个WAN连接分发Internet绑定的流量。服务器负载平衡管理传入流量,因此它利用多个内部服务器进行负载分配和冗余,服务器负载平衡允许流量在多个内部服务器之间分配,它最常用于Web服务器和SMTP服务器。下面我们就以实例来介绍服务器负载平衡的设置。

下面介绍如何通过pfsense2.32配置Web服务器的负载平衡。

网络环境

服务器负载平衡示例网络环境

上图为示例网络环境。它由单个防火墙组成,使用其WAN IP地址池,DMZ段上有两个Web服务器。

配置地址池

  • 导航到 Services > Load Balancer
  • 单击Pools 标签
  • 单击  添加一个新的地址池
  • 如图所示,使用以下设置:
    Name: WebServers
    Mode: Load Balance
    Description: Web server Pool
    Port: 80
    Retry: 5
    Pool Members: 添加两个Web服务器 (10.6.0.11 和10.6.0.12
  • 单击Save

地址池配置

配置虚拟服务器

虚拟服务器配置

  • 单击Virtual Servers标签
  • 单击  添加一个新的虚拟服务器
  • 如图所示,使用以下设置:
    Name: WebVirtualServer
    Description: Web Server
    IP Address: The firewall’s WAN IP address, 198.51.100.6
    Port: 80
    Virtual Server Pool:
    WebServers
    Fall Back Pool: None
  • 单击 Submit(提交)
  • 单击 Apply Changes(应用更改)

注意

在这个示例中,如果两个池服务器都关闭,则虚拟服务器无法访问。 如果没有配置虚拟服务器,防火墙将会起作用。 如果防火墙上的某些应用绑定到80端口,那么客户端就会直达绑定了这个端口的应用。 这可能包括通过端口80访问内置Web GUI,因此应该在System > Advanced Admin Access 选项卡上禁用或采用其他端口。

配置防火墙规则

防火墙规则必须配置为允许访问池中的服务器。 规则必须允许流量使用内部IP地址和端口,并且对虚拟服务器配置中使用的外部IP地址和端口不需要任何规则限制。

创建一个包含池中所有服务器的别名,因此可以使用单个防火墙规则进行访问。

  • 导航到Firewall > Aliases
  • 单击  添加 一个别名
  • 如图所示,使用以下设置:
    Name: www_servers
    Type: Hosts
    Hosts: 两个Web服务器IP地址: 10.6.0.11 和 10.6.0.12
  • 单击 Save
  • 单击 Apply Changes(应用更改)

图中的“Name”显示了用于此示例配置的别名,其中包含两个Web服务器。

Web 服务器别名设置

下一步,用这个别名创建一个防火墙规则: 导航到Firewall > Rules ,切换到外部连接访问的接口(例如WAN), 单击  在顶部添加一条新规则,设置如下:

Interface: WAN
Protocol: TCP
Source: any
Destination Type:
Single Host or Alias
Destination Address:
www_servers
Destination Port Range:
HTTP
Description: Allow to Web Server
  • 单击 Save
  • 单击 Apply Changes(应用更改)

下图为Web服务器设置的防火墙规则,未显示的选项保留默认值。

为Web服务器添加防火墙规则

列表中显示的规则。

Web 服务器防火墙规则

查看负载平衡状态

现在已经配置了负载平衡器,要查看其状态,请浏览到Status > Load Balancer,然后单击“Virtual Servers”选项卡。此页面显示整个服务器的状态,通常列为“Active(联机”或“Down(脱机”。

Pools选项卡显示池的每个成员的单独状态(如图池状态)。如果服务器处于联机状态,服务器的行为绿色,如果服务器处于脱机状态,则为红色。

此外,池中的每个服务器都有一个复选框。 已检查的服务器在池中处于活动状态,池中已禁用未选中的服务器,与在池编辑页面上启用和禁用列表之间移动的服务器相同。 要禁用服务器:取消选中它,然后单击保存。

池状态

如果在其中一个服务器上停止了Web服务器服务,或者如果使用ICMP监视器将服务器完全从网络中删除,则状态将更新为“脱机”,并将服务器从池中删除。

验证负载平衡

为了验证负载平衡, curl 是确保Web浏览器缓存和持久连接不影响测试结果的最佳选择。curl 可以从 curl官方网站下载,有各种操作系统的版本。 要使用它,只需运行以下命令:

curl http://mysite

在该命令中,将198.51.100.6替换为站点的IP地址或主机名。 这必须从网络外部进行测试(例如,从WAN上的远程网络或客户端)。 例如,在外网用curl进行测试:

# curl http://198.51.100.6 This is server www2 - 10.6.0.12# curl http://198.51.100.6 This is server www1 - 10.6.0.11

测试负载平衡时,设置每个服务器返回指定其主机名、IP地址或两者,因此明确哪个服务器响应该请求。 如果未启用粘性连接,则不同的服务器将响应每个请求。

故障排除

不能连接到负载平衡

不能连接到负载平衡器通常是使用测试方法不当造成的,这通常是HTTP特有的。 Web浏览器通常会保持与Web服务器建立的连接,并且点击刷新会重新使用现有的连接。 单个连接将永远不会更改为另一个平衡服务器。 另一个常见的问题是网络浏览器缓存,浏览器只从缓存读取数据,未真正再次刷新页面。 最好使用诸如curl等命令行工具来测试,因为它确保测试不受Web浏览器测试中固有问题的影响。curl没有缓存,并在每次运行时都会重新建立与服务器的新连接。

如果启用了粘性连接,请确保从多个源IP地址执行测试。来自单个源IP地址的测试将转到单个服务器,除非连接尝试之间经过了较长的时间。

关闭服务器未标记为脱机

如果服务器关闭但没有标记为脱机,那是因为负载平衡守护程序执行的监视信号仍然处于启动状态。 如果使用TCP监视器,TCP端口必须仍然接受连接。 该端口上的服务可以以多种方式断开,仍然可以回复TCP连接。 对于ICMP监视器,这个问题更加严重,因为服务器可以挂起或故障,没有任何监听服务,仍然可以回答ping。

在线服务器未标记为在线

如果服务器在线,但没有标记为在线,那是因为从负载平衡守护程序监视器的角度来看,它不是联机的。 服务器必须在所使用的TCP端口上回答或响应来自最靠近服务器的防火墙接口IP地址的ping。

例如,如果服务器在LAN上,则服务器必须应答从防火墙的LAN IP地址发起的请求。 要验证ICMP监视器,请导航到到Diagnostics > Ping,并使用服务器所在的接口Ping服务器IP地址。

对于TCP监视器,请使用“Diagnostics > Test Port”,并选择防火墙的LAN接口作为源,将Web服务器的IP地址和端口作为目标。

另一种测试方法是使用防火墙的shell提示符,使用console或ssh菜单选项8nc命令:

# nc -vz 10.6.0.12 80nc: connect to 10.6.0.12 port 80 (tcp) failed: Operation timed out

上面是一个失败的例子。

下面是一个成功连接的例子:

# nc -vz 10.6.0.12 80Connection to 10.6.0.12 80 port [tcp/http] succeeded!

如果连接失败,请在Web服务器上进一步进行故障排除。

与池服务器在同一子网中的客户端无法访问虚拟服务器

与池服务器在同一子网中的客户端系统将无法使用此负载平衡方法正确连接。 relayd将连接转发到具有客户端源地址的Web服务器。然后,服务器将尝试直接响应客户端。如果服务器具有到客户端的直接路径,例如通过同一子网中的本地连接的NIC,它将不会正常通过防火墙回流,客户端将从服务器的本地IP地址收到回复,而不会在relayd中收到该IP地址。然后,由于从客户端的角度看,服务器IP地址不正确,连接被丢弃为无效。

这样做的一个方法是使用手动出站NAT和制定手动出站NAT规则,以便从LAN子网到达Web服务器的内部接口(LAN)的流量转换为LAN的接口地址。这样,流量似乎源于防火墙,服务器将响应到防火墙,然后防火墙将该流量中继到客户端使用的预期地址。原始的客户端源IP地址在该过程中丢失,最佳的解决方案是将服务器移动到不同的网段。

2017-09-20

时间: 2024-10-22 18:46:03

pfsense Web服务器负载平衡配置示例的相关文章

HAProxy+Keepalived实现Web服务器负载均衡

2014年03月31日  HAProxy  暂无评论  被围观 12,941次+ 说明: 操作系统:CentOS 5.X 64位 Web服务器:192.168.21.127.192.168.21.128 站点:bbs.osyunwei.com和sns.osyunwei.com部署在两台Web服务器上 实现目的: 增加两台服务器(主主模式),通过HAProxy+Keepalived实现Web服务器负载均衡 架构规划: HAProxy服务器:192.168.21.129.192.168.21.130

LVS详解及基于LVS实现web服务器负载均衡

前言 LVS(Linux Virtual Server)Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.通过LVS提供的负载均衡技术和Linux操作系统可实现一个高性能.高可用的服务器群集,从而以低成本实现最优的服务性能. 集群基础 集群简介 集群(Cluster)是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用

高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式

通过<高性能Web服务器Nginx的配置与部署研究——(11)应用模块之Memcached模块的两大应用场景>一文,我们知道Nginx从Memcached读取数据的方式,如果命中,那么效率是相当高的.那么: 1. 如果不命中呢? 我们可以到相应的数据服务器上读取数据,然后将它缓存到Nginx服务器上,然后再将该数据返回给客户端.这样,对于该资源,只有穿透 Memcached的第一次请求是需要到数据服务器读取的,之后在缓存过期时间之内的所有请求,都是读取Nginx本地的.不过Nginx的 pro

LAMP平台基于NFS实现web服务器负载均衡

前言 随着访问量的逐渐增大,一台web服务器可能已经无法满足需求,这就需要增加web服务器的数量了,于是问题就来了:如何保证两台服务器数据同步呢?本文将讲解如何基于NFS实现web服务器的负载均衡及数据同步. NFS服务介绍 NFS(Network File System)网络文件系统,允许一个系统通过网络共享目录和文件,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件.NFS本身没有提供数据传输的功能,必须借助于远程过程调用(RPC)协议来实现数据的传输. 配置文件 NFS

公司网络web服务器负载均衡解决方案

公司网络web服务器负载均衡解决方案 随着公司产品业务的推广发展壮大,对服务器的硬件性能.相应速度.服务稳定性.数据可靠性的要求越来越高.今后服务器的负载将难以承受所有的访问.从公司的实际情况,运营成本网络安全性考虑,排除使用价格昂贵的大型服务器.以及部署价格高昂的专用负载均衡设备. DNS轮询负载均衡解决方案虽然成本低廉但是安全性能不是很好,加上公司产品的特殊性需要用户验证的体系,在会话保持方面是一大缺陷,会话保持,如果是需要身份验证的网站,在不修改软件构架的情况下,这点是比较致命的,因为DN

Web服务器负载均衡的几种方案 : DNS轮询

本篇主要讲一下最简单的方案——DNS轮询. DNS轮询 大多域名注册商都支持多条A记录 的解析,其实这就是DNS轮询 ,DNS 服务器 将解析请求按照A记录 的顺序,逐一分配到不同的IP上,这样就完成了简单的负载均衡 . 优点 基本上无成本,因为往往域名注册商的这种解析都是免费的: 部署方便,除了网络拓扑的简单扩增,新增的Web服务器只要增加一个公网IP即可. 缺点 健康检查,如果某台服务器宕机,DNS服务器是无法知晓的,仍旧会将访问分配到此服务器.修改DNS记录全部生效起码要3-4小时,甚至更

华为MSTP负载均衡配置示例

8.6.7   MSTP负载均衡配置示例 本示例拓扑结构如图8-38所示,SwitchA.SwitchB.SwitchC和SwitchD都运行MSTP.它们彼此相连形成了一个环网,因为在SwitchA与SwitchB之间,以及SwitchC与SwitchD之间都存在冗余链路.为实现VLAN2-VLAN10和VLAN11-VLAN20的流量负载分担,本示例采用MSTP协议配置了两个MSTI,即MSTI1和MSTI2. 图8-38  MSTP配置示例 1.    配置思路分析 (1)在四台交换机创建

高性能Web服务器Nginx的配置与部署研究(1)Nginx简介及入门示例

概述 从这篇博文起,将带领读者们一起领略Nginx的强大. Nginx 是做什么用的?我相信很多朋友都已经使用过,如果你没有,那么你一定知道以下这些名称之一:Apache,Lighttpd,Tomcat,Jetty. 它们占据了目前Web服务器的几乎全部江山,其中 Apache 是知名度最高的,同时也是最为重量级的.Lighttpd.Tomcat 和 Jetty 相对轻量级,其中 Jetty.Tomcat 多用于作为Java服务器容器. Nginx 是一个基于 BSD-like 协议.开源.高性

七、Web服务器Apache的配置和管理

万维网Web,是在Internet上以超文本为基础形成的信息网.用户通过浏览器可以访问Web服务器上的信息资源,目前在Linux操作系统上最常用的Web服务器软件是Apache.Apache是一种开源的HTTP服务器软件,可以在包括UNIX.Linux以及Windows在内的大多数主流计算机操作系统中运行. 7.1.Apache简介 Apache是一款开源软件,所以得到了开源社区支持,不断开发出新的功能特性,并修补了原来的缺陷 .经过多年来不断的完善,如今的Apache已经是最流行的Web服务器