pfSense高可用性集群设置指南

发布时间:2020-07-10 00:53:10 作者:鐵血男兒
来源:网络 阅读:11242

HA(High Available),高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。


只有两个节点的高可用集群又称为双机热备,即使用两台服务器互相备份。当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的 情况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更高级的功能, 更能满足用户不断出现的需求变化。


本指南以pfsense2.33来进行高可用性的配置示例。


高可用性集群配置的三个要点:

通过配置,两个节点充当“主动/被动”集群,一个节点用作主节点,另一个辅助节点用作备份角色,如果主节点出现故障,辅助节点则根据需要接管。


下面分以下几个章节展开介绍:

高可用性集群的组成

虽然经常错误地称为“CARP群集”,但是运行pfSense软件的两个或多个冗余防火墙更适合称为“高可用性集群”或“HA集群”,因为CARP只是用于实现高可用性的几种技术之一,未来的CARP可以变换为不同的冗余协议。


最常见的高可用性(HA)集群配置只包含两个节点。在集群中可以有更多的节点,但是它们并没有更多的意义。本指南假设两个pfsense节点正在使用,一个充当主节点,另一个作为辅助节点。


重要的是我们区分HA(IP地址冗余,配置同步和状态表同步)的三个功能,因为这些任务发生在不同的地方。防火墙在同步接口上执行配置同步和状态同步,直接在防火墙单元之间进行通信。防火墙在CARP VIP的每个接口上发送CARP心跳。故障转移指令不会发生在同步接口上,而是发生在每个支持CARP的接口上。

pfSense高可用性集群设置指南

高可用性集群示例

IP地址冗余 (CARP)

为了通过集群连接以在故障切换期间无缝连接,到集群的流量必须使用冗余IP地址。通用地址冗余协议(CARP)通常用于完成这个任务。


CARP类型虚拟IP地址(VIP)在集群的节点之间共享。一个节点是主站并接收IP地址的流量,其他节点维护备份状态并监视心跳,以查看如果前一个主站失败,是否需要承担主机角色。由于一次只有一个群成员正在使用IP地址,因此CARP VIP没有IP地址冲突。


为了使故障转移正常工作,重要的是到达集群的入站流量将被发送到CARP VIP,并且从CARP VIP发送流量。入站流量包括路由上行流量,×××,NAT,本地客户端网关和DNS请求。出站流量包括出站NAT和×××。如果流量直接寻址到节点,而不是CARP VIP,则该流量将不会被其他节点获取。


CARP的工作类似于VRRP和HSRP,甚至在某些情况下可能会发生冲突。心跳在包含CARP VIP的每个接口上发送,每个接口每个VIP心跳一次。在偏离和基准的默认值下,VIP会每秒钟发送一次心跳。偏离确定在给定时间点哪个节点是主节点。无论哪个节点发送心跳,最快的都是主角色。较高的偏离值会导致以更多的延迟发送心跳,因此,如果网络或其他问题导致心跳延迟或丢失,则具有较低偏离值的节点将成为主机。


注意

不要使用CARP VIP访问防火墙GUI,SSH或其他管理机制。 出于管理目的,只能使用每个单独节点的接口上的实际IP地址,而不是VIP。不然可能不确定哪个节点被访问。


pfSense XML-RPC配置同步

为了使维护实际上相同的防火墙节点变得更加容易,可以使用XML-RPC进行配置同步。启用XML-RPC同步后,支持区域的设置将被复制到辅助设备,并在每次配置更改后激活。 XMLRPC同步是可选的,但是如果没有它,维护集群就会困难的多。


某些区域无法同步,例如接口配置,可以同步的部分包括:防火墙规则、别名、用户、证书、×××、DHCP、路由、网关等。作为一般规则,特定于硬件或特定安装的项目(例如 System > General 或 System > Advanced下的接口或值)不同步。支持的区域列表可能会根据使用的pfSense的版本而有所不同。有关要同步的区域的列表,请参阅XMLRPC部分中System > High Avail Sync的复选框。大多数插件不能同步,但有些插件包含有自己的同步设置。


配置同步应使用Sync接口,或者如果没有专用的Sync接口,请使用为pfsync配置的相同接口。


在双节点集群中,只能在主节点上启用XML-RPC设置,辅助节点必须禁用这些设置。


要使XML-RPC运行,两个节点都必须在相同的端口和协议上运行GUI,例如:端口443上的HTTPS,这是默认设置。无法禁用管理员帐户,并且两个节点必须具有相同的管理员帐户密码。


状态表同步(pfsync)

pfsync启用群节点之间的防火墙状态表的同步。对主节点状态表的更改通过Sync接口发送到辅助防火墙,反之亦然。当pfsync处于活动状态并正确配置时,如果主节点发生故障,则备份节点将接管,并且客户端将不会注意到这种切换。


pfsync默认使用多播,也可以定义IP地址来强制单播更新用于只有两个防火墙的环境,组播无法正常运行。任何活动接口都可用于发送pfsync更新,但是使用专用接口更有利安全性和性能提升。 pfsync不支持任何身份验证方法,因此如果使用专用接口以外的任何方式,任何具有本地网络访问权限的用户都可以将状态插入到状态表中。在不注重安全的低吞吐量环境中,可以使用LAN接口。这种状态同步所需的带宽将从一个环境变化到另一个环境,但是可能达到防火墙吞吐量的10%,具体取决于网络中的状态插入和删除速率。


故障切换仍然可以在没有pfsync的情况下运行,但不能无缝连接。没有pfsync,如果一个节点失败,另一个接管,用户连接将被丢弃。用户可以立即通过其他节点重新连接,但在转换期间它们将被中断。根据特定环境中的使用情况,这可能会被忽视,也有可能是一个简短的中断。


当使用pfsync时,必须在参与状态同步的所有节点(包括辅助节点)上启用pfsync设置,否则它将无法正常运行。


高可用性先决条件

在实现冗余配置之前,必须满足一些先决条件。

本指南假定:


注意

不要将两个单元的LAN端口连接到同一个LAN交换机,应该在基本设置被应用到每个节点后才连接, 否则将出现IP地址冲突,导致不能单独与每个节点进行通信。


确定同步接口

本指南假定每个集群节点上的一个接口专用于同步任务。 这通常被称为“同步”接口,它被防火墙用于配置同步和pfsync状态同步。 可以使用任何可用的接口。 在本指南中,OPT4接口(igb5)将用于同步流量。

注意

有人称之为“CARP”接口,这是错误的,且非常容易误导。 CARP心跳在每个接口上发生CARP VIP。CARP流量和故障切换操作不使用Sync接口。


接口分配

必须在所有节点上以相同的顺序对接口进行分配。 如果接口未对齐,则配置同步和其他任务将无法正常运行。 如果对接口分配进行了任何调整,则它们必须在两个节点上相同地进行复制。 

pfSense高可用性集群设置指南

接口分配示意图

IP地址要求

高可用性集群在每个子网中需要三个IP地址以及用于同步接口的单独的未使用的子网。  每个节点使用一个IP地址,加上一个共享的CARP VIP地址进行故障切换。 同步接口每个节点只需要一个IP地址。


本指南使用的IP地址如下表所示,你可以根据需要换成自己的IP地址。

WAN IP地址分配
IP 地址用途
198.51.100.200/24CARP共享IP地址
198.51.100.201/24主节点 WAN IP 地址
198.51.100.202/24辅助节点WAN IP地址

LAN IP 地址分配
IP 地址用途
192.168.1.1/24CARP共享IP地址
192.168.1.2/24主节点 LAN IP 地址
192.168.1.3/24辅助节点LAN IP地址

同步IP地址分配
IP 地址用途
172.16.1.2/24主节点同步IP地址 
172.16.1.3/24辅助节点同步IP地址


单地址CARP

在技术上可以将具有CARP VIP的接口配置为给定子网中的唯一IP地址,但是我们不建议使用这种类型的配置。 当广域网使用这种配置时,它只允许从主节点到上游网络(例如Internet)的通信,这使得诸如更新、插件安装、网关监控或需要来自辅助节点的外部连接的任何事情变得复杂化。 它更适合内部接口,但是内部接口通常不会受到与WAN相同的IP地址限制,因此仍然优先选择在所有节点上配置IP地址。 本指南不涵盖此类配置。

确定CARP VHID可用性

如果网络上的其他设备使用冲突的标识符,CARP可能会干扰VRRP、HSRP或使用CARP的其他系统。 为了确保某个网段不会有冲突的流量,请在每个接口上执行数据包捕获,寻找CARP流量。 每个2层上的VHID必须是唯一的,因此每个接口都必须单独检查。 只要网段处于单独的广播域中,可以在不同的网段上使用相同的VHID。


如果显示任何CARP或VRRP流量,请注意VHID / VRID,并在以后配置CARP VIP VHID时避免使用该标识符。


本指南假定没有其他可能存在冲突的流量。


设置要求

使用安装向导或手动设置之后,使用唯一的主机名和非冲突的静态IP地址配置每个防火墙。



交换机/二层配置

CARP相关

CARP心跳利用组播传送,并且可能需要在集群涉及的交换机上进行特殊处理。 某些交换机过滤、速率限制或以其他方式干扰可能导致CARP组播失败。 此外,一些交换机采用可能无法正常使用CARP的端口安全方法。


所以交换机必须:



CARP未能正确反映预期状态的几乎所有问题都是交换机故障或其他2层问题,因此在继续操作之前,请确保交换机已正确配置。


端口配置

每个节点的WAN端口必须连接到相同的WAN交换机,然后连接到WAN CPE / Modem / 上游链路。 LAN端口都将连接到同一个LAN交换机,依此类推。 Sync接口可以直接连接在两个节点之间,而无需交换机。 


配置高可用性集群

设置同步接口

在继续之前,必须配置集群节点上的Sync接口。 同步IP地址分配列出了要用于每个节点上的同步接口的地址。

在主节点上完成此过程后,请在具有相应IPv4 address(地址)值的辅助节点上再次执行该过程。

添加同步防火墙规则

要完成Sync接口配置,请将防火墙规则添加到两个节点以允许同步。


至少防火墙规则必须通过配置同步流量(默认情况下,端口443上的HTTPS)和pfsync流量。 在大多数情况下,使用简单的“allow all(允许全部)”样式规则。 对于本指南,两者将被显示,它也将作为同步工作的指标。


在主节点上进行如下设置:

完成后,规则将如下图“示例同步接口防火墙规则”所示,该规则还包括允许ICMP回显(ping)用于诊断目的的规则。

pfSense高可用性集群设置指南

示例同步接口防火墙规则

在辅助节点进行如下设置:

注意

辅助节点的规则是不同的, 一旦进行了第一次配置同步,则辅助节点上的临时规则将被主节点的规则所替代。 


配置 pfsync

必须在主节点和辅助节点上配置使用pfsync的状态同步才能运行。


首先在主节点上,然后在辅助节点上执行以下操作:

配置XMLRPC


注意

只能在主节点上配置同步。仅在主节点上执行以下操作:


在辅助节点上导航到Firewall > Rules  SYNC选项卡,你会发现现在的规则已经与主节点同步了。


注意

不要在设置为同步的区域中对辅助节点进行更改! 下一次主节点执行同步时,这些更改将会被覆盖。


添加CARP VIPs

现在配置同步完成后,CARP虚拟IP地址只需要添加到主节点,并通过配置同步自动复制到辅助节点。 下面来我们设置。这需要将增加两个CARP VIP:一个用于WAN,一个用于LAN。

注意

一个常见的策略是使VHID与IP地址的最后一个八位字节相匹配,因此在这种情况下,本例中使用了200的VHID。

Base 和 Skew共同决定CARP心跳发送的频率。 Base的值增加了整秒,应该在两个节点之间匹配。 Skew 值增加1/25秒的增量。 主节点应始终偏移0或1,辅助节点必须要更高一点,通常为100+。 该调整由配置同步过程自动处理。

注意

如果CARP对给定网络上的延迟太敏感,我们建议一次添加一秒钟来调整Base,直到达到稳定。

LAN CARP VIP重复以上过程。

如果在WAN子网中有其他IP地址被用于1:1 NAT,端口转发,×××等等,那么现在可以将其添加为CARP VIP。

检查辅助节点上的 Firewall > Virtual IPs,以确保VIP按预期方式同步。

如果设置同步成功,两个节点上的虚拟IP地址将看起来像CARP虚拟IP列表。

pfSense高可用性集群设置指南

CARP 虚拟IP列表

检查CARP状态

现在在两个节点上访问 Status > CARP以确认正确的状态。 主节点应显示所有VIP(主要CARP VIP状态)的MASTER状态,辅助节点应显示所有VIP的BACKUP状态(辅助节点上的CARP VIP状态)。 如果状态不正确,请参阅高可用性故障排除。

pfSense高可用性集群设置指南

主节点CARP VIP 状态

pfSense高可用性集群设置指南

辅助节点CARP VIP状态

设置手动出站 NAT

NAT的设置将会自动同步,因此这些修改只需要对主节点进行。

在主节点上导航到Firewall > NATOutbound 选项卡

注意

如果稍后添加其他本地接口,例如第二个LAN,DMZ等,并且该接口使用专用IP地址,则此时必须添加其他手动出站NAT规则。

完成后,规则更改将与CARP VIP的LAN出站NAT规则中的更改相似。


pfSense高可用性集群设置指南

CARP VIP的LAN出站NAT规则

其他NAT有关

如果有任何端口转发要使用WAN CARP VIP,必须使用Firewall > NATPort Forward 选项卡添加。 端口转发将按照常规方式工作,但Destination(目的地)将是WAN CARP VIP。

设置DHCP

集群节点上的DHCP服务器守护进程需要进行调整,以便它们可以协同工作。 这些更改将从主服务器自动同步到辅助服务器,因此与VIP和出站NAT一起,这些更改只需要在主节点上进行。

将DNS服务器和网关设置为CARP VIP可确保本地客户端正在与故障转移地址进行通信,而不是直接连接到任一节点。 这样,如果主节点失败,本地客户端将继续与辅助节点通话。

故障转移对等IP允许守护进程在该子网中直接与对等体通信,以交换诸如租约信息之类的数据。 当设置与辅助设备同步时,会自动调整此值,以便辅助节点返回主站。

在两个节点上,访问Status > DHCP Leases以查看状态。其中包含故障转移池状态,每个本地接口池将显示一行。 当两个节点正常工作时,两个都将指示normal(正常)状态,如下图所示。

pfSense高可用性集群设置指南

DHCP故障切换状态

×××s 和其他服务

当配置×××(如Open×××或IPsec)时,选择WAN CARP VIP作为×××的接口,并确保远程对等体也使用CARP VIP作为对等地址构建隧道的另一侧。


对于其他本地服务、插件等,同样,如果服务将在两个节点上工作,我们建议使用CARP VIP进行绑定。


各类插件的高可用性支持各不相同。 检查插件的说明文档,以了解对高可用性的支持情况。


附加接口

重复配置其他本地接口所需的几个相同步骤:


测试高可用性

在所有配置完成后,现在必须进行测试以验证有效性。 下面列出了系统各个方面的测试。 如果测试失败,请查看配置,并根据后面的帮助查找解决办法。


验证一般功能

在LAN上设置客户端,确保接收到DHCP IP地址,并显示LAN CARP VIP作为其网关和DNS服务器。 验证客户端是否可以解析主机名,访问Internet,是否按预期方式运行。

验证 XMLRPC 同步是否正常工作

XMLRPC配置同步可以通过几种方法进行测试。 最简单的方法是对主要的任何支持的区域(如防火墙规则)进行更改,然后查看更改是否会在辅助节点反映出来(一般只需要几秒钟)。

强制配置同步测试XMLRPC的手动方法是访问主节点上的Status > Filter Reload ,然后单击Force Config Sync(强制配置同步)。 状态将短暂更改,然后如果一切正常,将显示一条消息,指示同步已成功完成。


验证 CARP 是否正常工作

在两个节点上访问Status > CARP,以检查CARP是否正常工作。 所有CARP VIP的主节点将显示“MASTER”,而所有CARP VIP的辅助节点将显示“BACKUP”。 如果状态屏幕指示CARP被禁用,请点击Enable CARP (启用CARP)按钮。

验证状态同步是否正常工作

Status > CARP页面列出了指示状态同步状态的pfsync节点。 在两个节点上,这些值可能并不总是相同,但是它们将是接近的。 如果两者非常不同,则可能提示状态同步的问题。 如果它们相同或几乎相同,则状态同步正在工作。

测试故障转移

可以通过以下四种方式进行故障转移测试:


  

在任何上述测试期间,请访问辅助节点的的Status > CARP,以确认CARP VIP已经接管并显示MASTER状态。


在触发故障转移之前、期间和之后,测试从LAN上的客户端到Internet的连接,以确保连接在每个步骤中起作用。 下载文件,流媒体很有可能会持续不间断。 但基于VoIP的电话可能会有轻微的中断,因为它们不像其他电话那样会缓冲数据。


还有客户端尝试通过辅助节点运行时从DHCP获取IP地址。


如果已经配置了×××或其他服务,那么在测试过程中也要检查它们,以确保在辅助节点上建立的×××继续通过流量。


一旦主节点返回到“MASTER”状态,确保一切都继续工作。


高可用性故障排除

如果测试失败,请检查以下设置。


查看配置

在深入下面的技术细节之前,首先检查配置,确保所有步骤都正确。

CARP疑难解答

检查各接口状态

如果接口为CARP状态显示“INIT”,如下图所示,最常见的情况是这表明该VIP所在的接口没有连接任何东西。 如果没有连接到交换机或另一个端口,则该接口关闭,并且VIP无法完全初始化。 如果插入了线缆,那么请重新配置它。

pfSense高可用性集群设置指南

主接口上的CARP状态与断开接口

如果接口掉线并将保持掉线,例如防火墙尚未使用的接口,则从接口中删除CARP VIP,直到其准备就绪。 在掉线接口上配置CARP VIP会导致防火墙自身降级,导致故障转移不稳定。

冲突的VHID

VHID确定CARP IP使用的虚拟MAC地址。 pfSense中输入验证将不允许在一对防火墙上使用冲突的VHID,但是如果同一广播域中有多个群运行CARP,则可能会产生冲突。 VRRP还使用相同的虚拟MAC地址方案,因此使用与CARP IP VHID相同的VRID的VRRP IP也会产生相同的MAC地址冲突。


在WAN接口上使用CARP时,也意味着上游网络/ ISP使用的VRRP或CARP也可能发生冲突。 请确保使用该广播域上的ISP没有使用的VHID。


除了创建可能干扰流量的MAC冲突之外,它还可能会干扰CARP VIP状态。


子网掩码不正确

CARP VIP的子网掩码必须与同一子网的接口IP地址上的子网掩码相匹配。 例如,如果接口IP地址为192.168.1.2/24,则CARP VIP必须使用/ 24的CIDR掩码。

二层交换机问题

通常,二层交换机问题本身表现为显示一个或多个CARP VIP的“MASTER”状态的两个单元。如果发生这种情况,请检查以下项目:


XMLRPC疑难解答

如果XMLRPC同步尝试失败,则会在GUI中生成通知以引起注意,如下图所示。 通知通常包含有关为什么失败及指向修复的信息,如果还不足以排除故障,请检查本节中的其他项目。

pfSense高可用性集群设置指南

XMLRPC 同步问题通知  

检查系统日志

XMLRPC故障详细信息会记录到主系统日志(Status > System LogsGeneral 选项卡)。 通常错误都会明确显示,例如身份验证失败将指示在同步设置上为管理员用户输入的密码不正确。 如下图所示,同步尝试期间发生超时, 在这个例子中,是由于缺少防火墙规则。

pfSense高可用性集群设置指南

XMLRPC 同步问题日志记录

检查防火墙日志

在辅助节点上访问Status > System LogsFirewall 选项卡。 检查日志中的条目未能到达GUI端口上的辅助同步接口,如下图所示。 如果流量显示为阻止,请根据需要调整同步接口规则。

pfSense高可用性集群设置指南

XMLRPC 同步问题防火墙日志访条目

检查管理员用户

访问 System > User Manager,并确保在两个系统上启用管理员用户,并且两个系统上的管理员密码都相同。 访问System > High Avail Sync,并重新检查是否正确输入了管理员用户名和密码。


在pfSense2.4及更高版本中,确保同步用户存在于辅助节点上,并具有“System - HA node sync”权限。


验证连接

检查Status > Interfaces,并确保同步接口在两个单元上显示链接。 如果没有链路,请确保两台设备之间连接了一条电缆。  如果链路仍然无法实现,请尝试在两个节点之间使用小型交换机或VLAN。


向Sync接口添加防火墙规则以允许ICMP回显请求,然后尝试从一个防火墙ping另一个防火墙,以确保它们可以在第3层彼此相遇。如果不能,请仔细检查接口IP地址和子网掩码设置, 以及布线。


pfsync疑难解答

如果pfsync节点在Status> CARP下不排队,则提示状态尚未同步。

检查防火墙规则

在两个节点的Status > System LogsFirewall选项卡上检查防火墙日志。 如果存在任何pfsync协议流量,则同步接口上的防火墙规则可能不正确。


查看Firewall > Rules 的 Sync 接口选项卡的规则。 确保规则将pfsync协议流量或任何协议的流量传递到任何目的地。 相应地调整规则,并再次检查日志和CARP状态,看看它是否开始工作。


验证连接

请参阅上面的验证连接以检查节点之间的连接。

检查接口

如果状态似乎同步,但故障切换仍然不能顺利完成,请检查Interfaces > (Assign) ,并确保接口全部按照物理名称排列。 在pfSense2.2及更高版本中,状态绑定到接口,因此,如果LAN接口在一个节点上是igb0,而在另一个节点上是igb3,则状态将不会排队。 调整接口,使它们在两个节点上是相同的。


本地服务疑难解答

DNS解析

如果本地客户端无法从集群中的CARP VIP获取DNS响应,请检查以下项目:


DHCP

如果DHCP故障转移池状态未显示为“normal(正常)”,则需要检查以下几项:




在高可用性集群上升级pfSense


查看更新日志和升级指南

在开始升级任何部分之前,请首先查看pfSense博客和更新日志,确定版本变化及升级注意事项。


备份

在开始之前,先在两个节点的 Diagnostics > Backup/Restore 下备份各自的配置。

注意

备份是快速解决各类问题的最好方法。


升级辅助节点

首先在辅助节点上执行升级。 这样,如果升级失败,则不会有中断,如果需要重新安装,则可以毫不费力地完成。

测试辅助节点

一旦辅助节点系统启完成后,登录并确认它正在运行。 如果所有服务都处于活动状态,CARP状态为OK,那么是时候测试了。 通过将主节点置于维护模式(请参阅测试故障切换)并观察辅助节点上发生的情况,强制从主节点进行故障切换。 如果辅助接管OK并且流量继续流动,则可以继续。

升级主节点

主节点处于维护模式时,无需额外的干扰即可升级。 启动操作系统升级,并让防火墙重新启动。 一旦重新启动,请确认本地服务按预期运行,然后将节点退出维护模式。

测试主节点

使用当前操作系统和活动的两个节点,运行最终测试以确保服务正常运行,流量正在流动、CARP、DHCP和其他状态区域都正常运行。

翻译自pfsense book

推荐阅读:
  1. pfSense 2.33 Squid透明代理设置
  2. pfSense book之高可用性集群(HA)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

high availability 可用性

上一篇:rsync+inotify实时同步

下一篇:sed 处理文件中 dos CR/LF

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》