Failover

El sistema de alta disponibilidad implantado por PIX permite utilizar una unidad secundaria que tomará el control de las conexiones en caso de que la primaria falle; ambas unidades estarán conectadas por un cable serie (un RS-232 modificado) que transmite a 9600 baudios, y contínuamente se intercambian mensajes `hello' para que ambas puedan conocer el estado de la otra unidad. Si dos de estos mensajes consecutivos - se envían a intervalos de 15 segundos - no son recibidos en un determinado tiempo, entra en juego el failover para comprobar cual de las dos unidades ha fallado y transferir el control a la otra. Entonces cada unidad cambia de estado: la nueva unidad activa asume las direcciones IP y MAC de la anterior y comienza a aceptar tráfico, y la que antes era la activa ahora asume los parámetros de la que no lo era; el resto de elementos de la red no ve ningún cambio en los dispositivos, por lo que no existen cambios o timeouts en las tablas ARP.

Si queremos saber el estado del failover (por ejemplo para ver cuál es la unidad activa en un determinado momento) hemos de ejecutar la orden sh failover:
pixie(config)# sh failover
Failover On
Cable status: Normal
Reconnect timeout 0:00:00
        This host: Primary - Active 
                Active time: 386520 (sec)
                Interface failover (192.168.87.209): Normal 
                Interface dmz1 (192.168.63.156): Normal 
                Interface outside (172.17.1.1): Normal
                Interface inside (172.17.2.1): Normal 
        Other host: Secondary - Standby 
                Active time: 405 (sec)
                Interface failover (192.168.87.210): Normal 
                Interface dmz1 (192.168.63.157): Normal 
                Interface outside (172.17.1.2): Normal
                Interface inside (172.17.2.2): Normal 

Stateful Failover Logical Update Statistics
        Link : failover
        Stateful Obj    xmit       xerr       rcv        rerr      
        General         53081      0          50149      0         
        sys cmd         52067      0          50146      0         
        up time         0          0          0          0         
        xlate           9          0          0          0         
        tcp conn        1005       0          3          0         
        udp conn        0          0          0          0         
        ARP tbl         0          0          0          0         
        RIP Tbl         0          0          0          0         

        Logical Update Queue Information
                        Cur     Max     Total
        Recv Q:         0       1       50149
        Xmit Q:         0       3       53081
pixie(config)#
En el resultado de la orden anterior vemos que la unidad principal está funcionando normalmente, mientras que la secundaria está en standby; esto será lo habitual si no entra en juego el failover o incluso si entra y la unidad principal se recupera, ya que en ese caso se hace un rebalanceo. Si en lugar de que todas las interfaces estén en estado normal aparecieran errores temporales de escasa duración, no hay ningún problema, ya que esto suele significar que el cortafuegos está testeando la alta disponibilidad y la conectividad de las interfaces.

El failover es casi transparente a la administración de la máquina, en el sentido de que la configuración sólo se realiza en la unidad activa en cada momento, y automáticamente se transfiere a la que está en standby; además, como hemos dicho, cuando entra la alta disponibilidad las unidades intercambian sus direcciones IP, por lo que el acceso vía telnet a la máquina se realiza contra la misma dirección que durante el funcionamiento normal de los equipos. Incluso si trabajamos con stateful failover, las unidades mantienen la información de estado de cada conexión, por lo que en caso de switchover ninguna de ellas se pierde; en caso contrario, las conexiones activas son eliminadas y el cliente debe reestablecerlas.

Con la orden failover podemos habilitar el failover, y con no failover deshabilitarlo:
pixie(config)# no failover
pixie(config)# sh failover
Failover Off
Cable status: Normal
Reconnect timeout 0:00:00
pixie(config)#
Las órdenes anteriores también admiten argumentos; si indicamos `link' podemos definir la interfaz de stateful failover, por la que ambas unidades intercambiarán información. Con `ip address' podemos configurar una dirección de failover para cada interfaz de la unidad secundaria, y con el parámetro `active' forzamos a una unidad determinada ponerse como activa (o en standby, si ejecutamos no failover active). Como siempre, podemos teclear el signo `?' para obtener ayuda desde línea de comandos:
pixie(config)# failover ?
usage: [no] failover [active]
        failover ip address <if_name> <ip_address>
        failover timeout <hh:mm:ss>
        failover reset
        failover link <if_name>
pixie(config)# failover
© 2002 Antonio Villalón Huerta