Failover Overview
Failover特性是Cisco安全产品高可用性的一个解决方案,目的是为了提供不间断的服务,当主设备down掉的时候,备用设备能够马上接管主设备的工作,进而保持通信的连通性;
Failover配置要求两个进行Failover的设备通过专用的failover线缆和可选的Stateful Failover线缆互相连接;活动设备的接口被monitor,用于发现是否要进行Failover切换;
Failover分为failover和Stateful Failover,即故障切换和带状态的故障切换;
不带状态的failover在进行切换的时候,所有活动的连接信息都会丢失,所有Client都需要重新建立连接信息,那么这会导致流量的间断;
带状态的failover,主设备将配置信息拷贝给备用设备的同时,也会把自己的连接状态信息拷贝给备用设备,那么当主的设备down的时候,由于备用设备上保存有连接信息,因此Client不需要重新建立连接,那么也就不会导致流量的中断

Failover link
两个failover设备频繁的在failover link上进行通信,进而检测对等体的状态。以下信息是通过failover link通信的信息:
l         设备状态(active or standby);
l         电源状态(只用于基于线缆的failover;)
l         Hello messages (keep-alives);
l         Network link 状态;
l         MAC地址交换;
l         配置的复制和同步;
Note :所有通过failover 和 stateful failover线缆的信息都是以明文传送的,除非你使用failover key来对信息进行加密;
在stateful link上,拷贝给备用设备的连接状态信息有:
l         NAT 转换表;
l         TCP连接状态;
l         UDP连接状态;
l         ARP表
l         2层转发表(运行在透明模式的时候)
l         HTTP连接状态信息(如果启用了HTTP复制)
l         ISAKMP和IPSec SA表
l         GTP PDP连接数据库
    以下信息不会拷贝给备用设备:
l         HTTP连接状态信息(除非启用了HTTP复制)
l         用户认证表(uauth)
l         路由表
l         DHCP服务器地址租期
Failover包括LAN-Based Failover和Cable-Based Failover;对于PIX设备,只支持基于线缆(Cable-Based)的Failover;

Failover link
l         LAN-Based Failover link
可以使用未使用的接口来作为failover link。不能够使用配置过名字的接口做为failover接口,并且,failover接口的IP地址不能够直接配置到接口上;应使用专门的命令对其进行配置;该接口仅仅用于failover通信;两个failover接口之间必须使用专用的路径,如,使用专用的交换机,该交换机上不连接任何其他设备;或者使用正常交换机的时候,划一个VLAN,并且仅仅将failover接口划分到该VLAN中;
l         Cable-Based Failover link
这种failover对两个failover设备的距离有要求,要求距离不能超过6英尺;并且使用的线缆也是failover线缆,该线缆的一端标记“Primary”,另一端标记“Secondary”并且设备的角色是通过线缆指定的,连接在Primary端的设备被指定为主,连接在Secondary端的设备被指定为备;该线缆传送数据的速率为115Kbps;因此同步配置的速度相比LAN-Base的failover会慢;

Stateful Failover Link
如果使用带状态的Failover,那么就需要配置一个用于传送状态信息的线缆,你可以选用以下三种线中的一种作为stateful failover link:
l         使用专用的接口连接Stateful failover Link;
l         如果你使用LAN-Based failover,你也可以使用failover link作为stateful failover link,即failover和stateful failover使用同一个线缆;——要求该接口是fastest Ethernet;
l         你也可以使用数据接口作为Stateful Failover接口,比如inside interface。但是不推荐这样做;

每种failover又包含有Active/Active(以后简写为,A/A)和Active/Standby(以后简写为A/S)两类;
A/A failover,两个设备可以同时传送流量。这可以让你实现负载均衡。A/A failover只能运行在多虚拟防火墙模式下;
A/S failover,同一时间,只能有一个设备传输流量,另一个设备作为备份用,A/S failover即可以运行在single模式下,又能够运行在多模式下;
    运行failover的两个设备,在硬件配置上要完全一样,比如必须要有相同的模块,相同的接口类型和接口数,相同的flash memory以及相同的RAM等;在软件上,两个设备要运行在相同的模式下面,必须有相同的主软件版本等;对于许可证,要求至少有一个设备要是UR版的许可证;
2 .Active/Standby Failover
    Active/Standby Failover(A/S)中,一个设备为活动设备,转发流量,另一个设备作为备份,当主设备down的时候,备份设备开始接管流量;备用设备接管以后,会继承主IP地址和MAC地址,继续转发流量;

Primary/Secondary status and Active/Standby Status

Failover设备之间,主要的不同就是角色问题,即哪个设备为active哪个设备为standby,同时也决定了哪个IP地址以及哪个设备转发流量;
l         如果两个设备同时启动,那么配置为primary的设备为active;
l         Primary设备的MAC地址总是和active IP地址绑定在一起。唯一的例外就是当standby设备变为active后,不能够通过failover link上获得primary设备的MAC地址,那么这时候就使用secondary设备的MAC地址;

设备的初始化和配置同步

当Failover设备启动的时候,配置才会同步,配置信息总是从active同步到standby设备;当standby设备完成初始化以后,它就清除自己的running configure(除了failover命令以外,因为这些命令需要和active进行failover通信);
Active设备是根据以下情况决定的:
l         设备启动后,如果检测到对等体已经存在为active,那么它自己将为standby;
l         如果没有检测到对等体存在,那么它将成为active;
l         如果设备同时启动,那么根据配置中指定的primary和secondary来决定设备的角色是active还是standby;
假设A被指定为primary,B被指定为secondary;当B启动后,没有检测到A的存在,那么B将为Active,它使用自己的MAC地址和active IP做绑定。然而,当primary启动可用后,secondary设备将会用primary设备的MAC地址和active IP绑定,这可能会导致流量的中断;避免方法是可以配置failover 虚拟MAC地址;

Failover的触发

以下任何一个事件发生时,都会触发Failover:
l         设备发生硬件失败或电源故障;
l         设备出现软件失败;
l         太多的monitored接口fail;
l         No failover active命令在active设备上被输入或在standby设备上输入failover active命令;
3 .Active/Active Failover
A/A failover只能工作在多虚拟防火墙模式下,在A/A failover模式下,两个设备都可以转发流量;在A/A failover下,你可以将虚拟防火墙划分到failover group中,一个failover group是一个或多个虚拟防火墙集合,在防火墙上最多只支持2个failover group,admin context总是属于failover group 1,任何为分配的虚拟防火墙默认下也属于failover group 1;
Failover group是A/A failover的基本单元,failover group失败的时候,物理设备不一定失败;failover组在一个设备上fail了,在另外一个设备上就会active,另外设备上的该组就会继续转发流量;
在A/A failover中,primary/secondary决定以下两个事情:
l         当两个设备同时启动的时候,决定哪个设备提供配置文件信息;
l         当两个设备同时启动的时候,决定哪个设备上的哪个failover group为active。每个failover group也会被配置一个primary或secondary,当两个failover group在同一个设备同时为active的时候,那么另一个设备也就为备用设备;
每个failover group是否为active,由以下几种情况决定:
l         当设备启动的时候,没有检测到对等体,那么两个failover group在这个设备上都为active;
l         当设备启动后,检测到对等体为active(两个failover group都在active状态),除非以下情况发生,否则active设备上的两个failover group仍为active状态:
     ——failover 发生;
     ——使用no failover active命令进行手工切换;
     ——配置failover group中带有preempt(抢占)命令;
l         当两个设备同时启动,在配置同步后,每个failover group在相应的设备中正常为active;

试验如下:

ASA failover可以通过一根交叉线直连,或者通过LAN的方式来实现。两种方式各有利弊,个人比较倾向LAN的方式,下面是一个LAN方式实现的配置实例。

 
   如下图,两台ASA上的outside口,Inside口以及DMZ口都必须分别在同一网段。可以用独立交换机分开,也可以用VLAN实现。
 



   在主ASA上的配置:
A.A.A.A与B.B.B.B, C.C.C.C与D.D.D.D, E.E.E.E与F.F.F.F G.G.G.G与H.H.H.H要分别在同一个网段内。
interface Ethernet0/0
description Outside Public Network
nameif outside
security-level 0
ip address A.A.A.A 255.255.255.0 standby B.B.B.B

interface Ethernet0/1
description Inside Private Network
nameif inside
security-level 100
ip address C.C.C.C 255.255.255.0 standby D.D.D.D

interface Ethernet0/2
description LAN/STATE Failover Interface

interface Ethernet0/3
nameif dmz
security-level 50
ip address E.E.E.E 255.255.255.0 standby F.F.F.F
 
 
failover
failover lan unit primary
failover lan interface lanfo Ethernet0/2 /定义failover端口
failover key mytest
failover replication http
failover link lanfo Ethernet0/2 /定义state failover端口
/另外,为什么failover和statefailover的端口设置同一个端口?
failover interface ip lanfo G.G.G.G 255.255.255.0 standby H.H.H.H
   在辅ASA上的配置:
failover
failover lan unit secondary
failover lan interface lanfo Ethernet0/2
failover key mytest
   测试:出现Active,Standby Ready状态说明配置成功:
ASA# show failover state
               State          Last Failure Reason      Date/Time
This host -   Primary
               Active         None
Other host -   Secondary
               Standby Ready None
   这里一定要搞清楚:所谓的主辅ASA只是针对正在运行的配置而言(running configure),物理的ASA不和主辅角色绑定。当failover发生时,角色是相互交换的。