在本课中,你将了解FortiGate高可用性(HA)的基础知识以及如何配置它。FortiGate HA提供了提高可靠性和性能的解决方案。
本节课,你将学习上图显示的主题。
通过展示在HA运行模式和主要FortiGate选举方面的能力,你将能够根据你的需求在你的网络中选择和实现正确的HA运行模式。你将能够在网络中有效地使用FortiGate设备。
HA的概念很简单。HA可以连接并同步两台或两台以上的设备。
在FortiGate HA中,一个FortiGate设备充当主设备(也称为主FortiGate)。同步配置到其他设备。其他FortiGate设备称为辅助设备或备用设备。
所有设备之间的心跳连接用于检测无响应的设备。
设备之间同步了什么?是否所有FortiGate设备都处理流量?HA提高了可用性还是提高了吞吐量?
根据HA模式的不同,答案各不相同。当前HA模式有两种:主-主和主-备。现在,你将检查这些差异。
首先,看一下主动-被动模式。在两种HA运行模式中,从端FortiGate设备的配置都会与主端设备的配置同步。
在主备模式下,主FortiGate设备是唯一一个主动处理流量的FortiGate设备。备用FortiGate设备处于被动模式,监控主设备的状态。
如果在主FortiGate上检测到问题,那么一个辅助设备将接管主设备的角色。这个事件称为HA故障转移。
与主备HA一样,在主-主HA中,所有FortiGate配置都是同步的。此外,如果在主设备上检测到问题,其中一个辅助设备将接管主设备的角色,以处理流量。
然而,主-备模式的主要区别之一是,在主动-主动模式中,所有FortiGate设备都处理流量。在双活模式下,主FortiGate的任务之一是在所有从端设备之间分担部分流量。
那么,HA集群中的FortiGate设备如何通信呢?
FortiGate HA使用FGCP进行HA相关的通信。FGCP通过指定为心跳的链路在集群的FortiGate设备之间传输。
你应该使用普通RJ45或交叉网线在两个FortiGate设备之间创建心跳链路。如果在两个FortiGate设备之间有另一个设备,例如交换机,请确保它是专用的,并与网络的其他部分隔离。这样,关键的FGCP流量就不需要与其他流量竞争带宽。
NAT模式集群和透明模式集群使用不同的以太网类型值发现和验证运行中的集群中其他FortiGate设备的状态。
集群中的FortiGate设备使用Telnet会话,TCP端口为23,心跳链路为以太网类型Ox8893,同步集群配置,并连接到集群中的另一个FortiGate设备的CLI。
当你手动重启或关闭主FortiGate时,在主FortiGate实际关闭之前,它将成为HA集群中的辅助设备,并等待流量切换到新的主设备,然后再关闭或重新启动。
FortiGate HA配置需要特定的设置和设备。首先,配置需要至少两个,但最多四个,FortiGate设备具有相同:
● 固件
● 硬件型号和虚拟机许可
● FortiGuard,FortiCloudi和FortiClient许可
● 硬盘容量和分区
● 运行模式(透明或NAT)
如果其中一个FortiGate设备的许可级别低于集群中的其他FortiGate设备,该怎么办?集群中的所有FortiGate设备都恢复到较低的许可级别。例如,如果你仅为集群中的一个FortiGuard Web过滤设备购买了FortiGuard Web过滤,那么当集群运行时,其他集群成员都不支持FortiGuard Web过滤。
其次,配置要求FortiGate设备之间至少有一条用于HA通信的链路。HA通信称为心跳流量。为保证冗余,最多可以创建8个心跳接口。当其中一条链路故障时,HA会根据心跳接口列表中的优先级和位置选择下一条链路。
第三,必须将每个FortiGate设备上的相同接口连接到相同的交换机或局域网段。请注意,在上图显示的示例中,FortiGate设备是冗余的,以减少故障。但是,这些开关和它们的链路仍然是单点故障。稍后你将看到,网络交换机和链路中也可以有冗余。
作为最佳实践(和Fortinet建议),在形成HA集群时,将FortiGate接口配置为静态IP地址。HA形成后,可以为接口配置DHCP或PPPoE地址。如果接口上配置了DHCP或PPPoE功能,使能HA功能可能会导致接口接收到错误的地址,或者无法正确连接到DHCP或PPPoE服务器。
选择主FortiGate的过程取决于一个称为HA override的HA设置。上图显示了当HA覆盖设置被禁用时,集群用来选择主FortiGate的过程和选择标准,这是默认行为。请注意,选择过程在第一个匹配条件成功选择集群中的主FortiGate时停止。
1. 集群首先比较被监控的状态为up的接口个数。具有最多可用监听接口的FortiGate设备成为主设备。
2. 集群比较各个设备的HA正常运行时间。如果一个设备的HA正常运行时间比其他FortiGate设备的HA正常运行时间至少多5分钟,则该设备成为主设备。
3. 配置最高优先级的FortiGate将成为主设备。
4. 集群通过比较序列号选择主设备。
当HA override被禁用时,HA的正常运行时间优先于优先级设置。如果出于任何原因,需要更改当前主设备,则可以手动强制执行故障转移事件。当override设置被禁用时,最简单的方法是运行CLI命令诊断主FortiGate上的sys ha reset-uptime。
请注意,reset-uptime命令会在内部重置HA正常运行时间,不会影响FortiGate仪表板上显示的系统正常运行时间。此外,如果被监控的接口出现故障,或者集群中的FortiGate重启,FortiGate的HA正常运行时间将被重置为0。
注意,你可以查看集群成员之间的HA正常运行时间差异。uptime列中带o的设备表示正常运行时间较低的设备。本例中,序号为92的设备HA正常运行时间比HA集群中其他设备多7814/10秒。reset _cnt列表示该设备HA正常运行时间被重置的次数。
你可以更改集群在选择主FortiGate时考虑的选择条件的顺序。
开启HA覆盖设置后,优先级优先于HA正常运行时间。
这种方法的优点是,通过使用最高的HA优先级值配置设备,每次都可以指定哪个设备是首选主设备(只要它处于启动和运行状态)。缺点是,故障转移事件不仅会在主服务器故障时触发,而且还会在主服务器重新可用时触发。当主节点再次可用时,它将从临时替代它的辅助FortiGate中恢复其主要角色。
请注意,选择过程在第一个匹配条件成功选择集群中的主FortiGate时停止。
当启用覆盖时,触发故障转移的最简单方法是更改HA优先级。例如,你可以增加一个次设备的优先级,或者降低主设备的优先级。
覆盖设置和设备优先级值不会同步到所有集群成员。需要为每个集群成员分别手动开启覆盖和调整设备优先级。
答案:B
答案:A
现在,你了解了HA操作模式和HA集群中主FortiGate的选择。接下来,你将了解HA集群同步。
通过展示集群同步的能力,你将能够识别FortiGate设备的任务以及集群成员之间同步的内容。你还将了解如何为特定类型的流量配置和使用会话同步,以实现无缝故障转移。
那么,主FortiGate的任务是什么呢?
它通过发送hello信号并侦听应答来监视集群,以确定其他FortiGate设备是否处于活动状态并可用。它还与其他设备同步自己的路由表、DHCP信息和部分配置。
也可以配置主FortiGate将部分流量会话信息同步到所有从设备。这允许对某些会话进行更快、无缝的故障转移。有些应用程序在主FortiGate失败后不需要重新建立它们的会话。你将在稍后的课程中了解可以同步哪些会话信息。
只有在主动-主动模式下,主FortiGate还会将特定的流量分配给集群中所有可用的设备。
现在,看看从FortiGate设备的任务。
如果模式是主动-被动,从设备只是等待,接收同步数据,但并不实际处理任何流量。如果主FortiGate失败,从设备将选择一个新的主设备。
在主动-主动模式下,从设备不会被动等待。它们处理主设备分配给它们的所有流量。
心跳接口呢?
无需配置心跳接口。FortiGate集群协议根据设备序列号自动协商心跳IP地址。169.254.0.1为序列号最高的设备分配IP地址。编号第二高的设备分配了IP地址169.254.0.2,以此类推。当发生故障转移时,IP地址分配不会改变。无论设备在任何时候的角色是主用还是备用,其心跳虚拟IP地址都保持不变。
当FortiGate设备加入或离开集群时,心跳IP地址可能会发生变化。在这些情况下,集群重新协商心跳IP地址分配,这一次考虑到任何新设备的序列号,或删除任何离开集群的设备的序列号。
HA集群使用这些虚拟IP地址来区分集群成员,并将配置更改更新到集群成员。
连接心跳接口和配置接口监控时,需要注意以下几点:
● 心跳端口包含有关集群配置的敏感信息,需要相当大的带宽来确保集群配置始终处于同步状态。必须至少有一个端口用于心跳流量,最好是两个。最佳实践是为心跳接口配置别名。它有助于确定这些接口在HA集群中用于什么。
需要注意的是,物理接口可以开启心跳通信,VLAN子接口、IPsec VPN接口、冗余接口、802.3ad聚合接口、FortiGate交换机端口不能开启心跳通信。
● 你应该仅为那些故障会触发设备故障转移的端口(例如高优先级流量端口)配置接口监控。不应该为专用心跳端口配置端口监控。
作为最佳实践,在启用接口监视之前,请等待集群启动并运行,并且所有接口都已连接。在初始设置期间,被监视的接口很容易断开,并导致在集群完全配置和测试之前发生故障转移。
为了准备故障转移,HA集群保持其配置同步。现在就来探索一下。
FortiGate HA结合使用增量同步和完全同步。
当你向集群添加一个新的FortiGate时,主FortiGate会将其配置校验和与新的备用FortiGate配置校验和进行比较。如果校验和不匹配,主FortiGate将其完整配置上传到备用FortiGate。
初始同步完成后,主设备将管理员所做的任何进一步配置更改发送到所有从设备。例如,如果你创建了一个防火墙地址对象,主设备不会重新发送它的完整配置,它只发送新对象。
HA传播的不仅仅是配置细节。一些运行时数据(如DHCP租期、路由表等)也会同步。
缺省情况下,集群每60秒检查一次,确保所有设备都进行了同步。如果任何辅助设备不同步,则每15秒检查辅助设备的校验和。如果连续5次检查的校验和不匹配,则完成完全的重新同步。
并不是所有的配置设置都是同步的。有一些是没有的,例如:
● HA预留管理接口的系统接口设置以及预留管理接口的HA默认路由
● 带内HA管理接口
● HA覆盖
● HA设备优先级
● 虚拟集群优先级
● FortiGate主机名
● ping服务器(或失效网关检测)配置的HA优先级设置
● 许可证
● 缓存
主FortiGate同步所有其他配置设置,包括与HA设置相关的其他配置。
会话同步可以为某些流量实现无缝故障转移。一些会话的信息是同步的,因此当主会话出现故障时,新的主会话可以接管这些会话所在的位置,并使它们保持打开状态。通信可能会中断几秒钟,但网络应用程序不需要再次重新连接会话。
启用会话同步功能后,设备将同步TCP和IPsec VPN的会话,这些会话符合一个要求:它们不需要通过基于代理的安全配置文件处理。但是,支持使用基于流的安全配置文件的会话,但是安全配置文件函数不再检查会话失败。
请注意,如果将基于流和基于代理的安全配置文件特性应用于TCP会话,则该会话在故障转移后将不会恢复。
你可以选择启用UDP会话同步和ICMP会话同步。虽然这两个协议都是无会话的,但是FortiGate会话表会为每一个UDP和ICMP流量创建一个表项。通常,这种同步是不需要的,因为大多数基于UDP或ICMP的网络应用程序能够保持通信,即使它们的会话信息丢失。
也可以启用组播会话的同步。组播存活时间(TTL)定时器控制在HA集群的次要设备上保持同步的组播路由的时间,这样当故障转移后次要设备成为新的主设备时,这些路由就会出现在次要设备上。
不支持SSL VPN会话同步。
答案:A
答案:B
现在你了解了HA集群同步。接下来,你将了解HA集群中的主备FortiGate设备的HA集群故障转移保护类型和工作负载。
通过展示故障转移类型和工作负载方面的能力,你将能够确定如何通过HA故障转移保护实现增强的可靠性。你还将了解主动-主动集群中的流量分布,以及使用虚拟集群分配流量。
最常见的故障转移类型是设备故障转移和链路故障转移。
当主FortiGate停止发送心跳流量时,触发设备故障切换。当这种情况发生时,从设备会重新协商一个新的主设备。
当主FortiGate上被监控的接口链路状态变为down时,会发生链路故障切换。通过配置HA集群,可以监控部分接口的链路状态。如果主FortiGate上被监控的接口被拔出或链路状态变差,则会选择一个新的主FortiGate。
如果为你希望在集群成员之间同步的流量类型启用了会话拾取,则在设备故障转移或链路故障转移发生时,会话将恢复。
如果启用基于内存的故障切换,当内存使用率超过阈值一段时间后,就会触发HA故障切换。通过命令config system ha可以开启内存故障切换功能。
可能会有多个事件触发HA故障转移,比如主FortiGate中的硬件或软件故障,或者主FortiGate上的某个接口出现问题。当发生故障转移时,将生成事件日志。设备还可以生成SNMP trap和告警邮件。
FortiGate HA解决方案使用虚拟MAC地址来实现流量的正确转发。当主节点加入HA集群时,为每个接口分配一个虚拟MAC地址。HA组ID用于为每个接口创建虚拟MAC地址。因此,如果在同一个广播域中有两个或多个HA集群,并且使用相同的HA组ID,则可能会出现MAC地址冲突。对于这些情况,强烈建议为每个集群分配不同的HA组ID。
通过心跳,主服务器将所分配的虚拟MAC地址通知所有备用服务器。当发生故障切换时,备用设备对相同的接口使用相同的虚拟MAC地址。
新的主设备广播免费的ARP包,通知网络每个虚拟MAC地址现在可以通过不同的交换机端口访问。
预留的HA管理接口的MAC地址不会修改为虚拟MAC地址。而保留的管理接口保留其原始MAC地址。
正如你在这节课早些时候学到的,如果初选失败,就会选举新的初选。但如果从FortiGate设备出现故障怎么办?这取决于HA模式。
在主动-被动集群中,主节点仅更新其可用的从FortiGate设备列表。它还开始监视故障的从设备,等待它再次联机。
但是,在主动-主动集群中,所有的从设备都在处理流量。因此,主设备(跟踪并将会话分配给每个从设备)不仅必须更新可用从FortiGate设备的列表,还必须将故障的FortiGate的会话重新分配给不同的从FortiGate。
这是工作负载如何在角色之间分配的,取决于HA模式。
注意,流量工作负载不是在主动-被动模式下分配的,而是主动-主动模式。
现在看看在主动-主动模式下的HA集群如何在流量受到代理检查时分配流量。
首先,客户端发送一个SYN包。它总是使用内部接口虚拟MAC地址作为目的地转发到主FortiGate设备。
如果主设备决定会话将由从设备进行检查,则主设备将SYN包转发给将进行检查的从设备。本例中转发帧的源MAC地址修改为FortiGate内部主接口的物理MAC地址,目的MAC地址修改为FortiGate内部从接口的物理MAC地址。
从FortiGate通过使用外部接口物理MAC地址直接发送SYN包来启动与主设备的连接。从设备也向客户端发送SYN/ACK响应,源MAC地址为从FortiGate内部接口的物理MAC地址。
接下来,客户端确认ACK。它使用内部接口的虚拟MAC地址作为目的地址再次转发到主FortiGate设备。
主设备使用从FortiGate设备的物理MAC地址将报文转发给检测该会话的从设备。
当服务器响应TCP SYN报文时,再次使用外部接口的虚拟MAC地址将报文发送到主设备。
所以,主设备的信号是次要的。
次设备应答到服务器。
这个想法不是为了负载平衡带宽。流量总是首先发送到主设备。其主要目标是在多个FortiGate设备之间共享CPU和内存,用于流量检测。
当没有代理检查时,即流量需要进行流量检查或根本不需要进行流量检查时,只有在HA配置下启用load-balance-all设置(默认为关闭),流量才会被分配到备用FortiGate。此外,和代理检查一样,你会看到下面相同的基本行为:
1. 来自客户端或服务器并发送到FortiGate集群的流量总是发送到主FortiGate设备。源MAC地址和目的MAC地址分别是客户端/服务器和主FortiGate虚拟MAC地址。
2. 如果会话要进行负载均衡,主FortiGate可以将流量转发到从FortiGate。
3. 当负载分担流量到从FortiGate设备时,FortiGate会分别使用主接口和备用接口的源物理MAC地址和目的物理MAC地址(MAC地址重写)。
4. 如果将流量负载均衡到从FortiGate,则来自集群并发送到客户端或服务器的任何流量都始终来自从FortiGate设备。即源MAC地址为从接口的物理地址。
与代理检查相比,FortiGate不代表服务器或客户端响应数据包。例如,FortiGate不是回复客户端发送的SYN包,而是通过从设备将包转发出去。类似地,来自服务器的包通过从FortiGate设备转发到客户机。
到目前为止,你已经了解了HA集群,其中每个FortiGate设备充当整个安全域。
但是,如果你有一个带有多个VDOM的HA集群,则可以配置虚拟集群。
虚拟集群允许你使用一个设备作为一个VDOM的主设备,并作为另一个VDOM的辅助设备。每个VDOM都有一个主FortiGate和一个备用FortiGate。任何设备都可以同时充当一些vdom的主设备和其他vdom的辅助设备。因为来自不同VDOM的流量可以流向不同的主FortiGate设备,所以可以使用虚拟集群在两个集群设备之间手动分配流量,并允许在两个FortiGate设备之间为每个VDOM提供故障转移机制。
注意,你只能在两个具有多个VDOM的FortiGate设备之间配置虚拟集群。
在本课开始时,你回顾了一个简单的HA拓扑。现在,看看更健壮的拓扑。它被称为全网格HA。
其思想是防止任何单点故障,不仅在FortiGate设备上,而且在网络交换机和接口上。
正如你在这张幻灯片上看到的,你有两个FortiGate设备用于冗余,每个FortiGate使用两个不同的接口连接到两个冗余交换机。
全网格HA的组装和管理更加复杂,但它可以提供关键安装所需的可用性。
答案:A
答案:A
现在你了解了HA故障转移和工作负载。接下来,你将了解如何监视HA集群并对其进行故障排除。
通过展示监视和故障排除的能力,你将能够确保集群被正确地同步。你还将了解如何在HA集群中配置和访问从设备,以及如何升级HA集群的固件。
如果HA集群形成成功,GUl中会显示集群中所有的FortiGate设备。它显示集群成员的同步状态、主机名、序列号、角色、优先级、正常运行时间和活动会话。
你可以通过添加HA status仪表板小部件来查看HA状态。你还可以通过单击System > HA查看HA状态信息,其中可以通过添加校验和、CPU和内存等列查看更多详细信息。
你还可以断开集群成员与集群的连接,并编辑HA配置。
你可以通过CLI获取更多的HA状态信息。如诊断sys ha状态,可以查看心跳流量统计信息,以及FortiGate设备的序列号和ha优先级。该命令还显示自动分配给序列号最高的FortiGate设备的心跳接口IP地址。
记住,只有当FortiGate设备离开或加入集群时,心跳IP地址分配才会发生变化。
HA集群健康状况的另一个指示是配置同步的状态。诊断sys ha checksum命令树提供了许多选项,你可以使用这些选项来检查或重新计算HA校验和。
检查所有从端配置是否与主端配置同步。
● 执行diagnose sys ha checksum cluster命令,查看集群中任意FortiGate设备上所有集群成员的校验和信息。
● diagnose sys ha checksum show命令用来查看各个FortiGate节点的校验和运行此命令的地方。
● 也可以在任意集群成员处执行命令diagnose sys ha checksum reccalculate重新计算HA校验和。
如果从FortiGate显示的数字序列与主FortiGate完全相同,那么它的配置与集群中的主FortiGate很好地同步。在上图示例中,使用diagnose sys ha checksum cluster命令查看所有集群成员的校验和。
● global表示全局配置的校验和,例如管理员、管理员配置文件、全局日志设置和FortiGuard设置等。
● root是根VDOM的校验和。如果你配置了多个VDOM,你将看到所有配置的VDOM的校验和。
● all是全局配置的校验和,加上所有VDOM的校验和。
在HA集群中进行故障处理时,需要了解的是,可以通过主FortiGate设备的CLI连接到任何备用FortiGate设备的CLI。为此,必须使用带有二级HA索引的命令execute ha manage。
执行execute ha manage命令,在命令末尾加问号,可以获取具有HA索引的备用FortiGate设备列表。
可以在HA主设备上强制进行HA故障切换。无论条件如何,设备都保持故障转移状态。移除故障转移状态的唯一方法是手动关闭它。
请注意,你应该只在测试、故障排除和演示时使用此命令。不要在生产环境中使用它。
使用get system ha status命令确认当前主设备是如何选择的。
如果需要直接连接到每个设备,可以预留一个接口用于HA管理。FGCP集群支持NAT和transparent两种方式的预留HA管理接口。最多可配置4个专用管理接口。HA集群成员间不同步HA预留管理接口的配置,且每个设备可以配置不同的管理IP地址。每个设备也可以使用HA预留的管理接口独立发送SNMP流量和日志。
如果没有可用的空闲接口来将其保留为专用的HA管理接口,该怎么办?在任何与网络相连、处理流量的接口上,都可以通过CLI配置管理IP地址。这并不要求仅为管理访问保留接口,而是保留专用HA管理接口的另一种选择。
与独立设备一样,在升级HA集群时,每个更新FortiGate设备都必须重新启动。由于默认开启不中断升级功能,集群首先升级从FortiGate设备。一旦所有从FortiGate设备都在运行新固件,就会选出一个新的主设备,并升级原来的主设备中的固件。
当集群运行在主动-主动模式时,当所有设备升级固件时,流量负载均衡暂时关闭。
通过config system ha命令,可以在命令行中禁止不间断升级固件。这将导致集群中的所有FortiGate设备同时升级。这样花费的时间更少,但会中断交通流。
答案:A
答案:A
恭喜你!你已经学完了这一课。
现在,你将回顾你在这一课中涉及的目标。
上图展示了你在这节课中涉及的目标。
通过掌握本课讨论的目标,你了解了FortiGate高可用性(HA)的基础知识以及如何配置它。