Keepalived 配置

Keepalived 配置

我安装了保持活跃在两个防火墙上提供故障转移。我不确定以下配置是否正确(请参阅下面的配置)。

有时我无法访问防火墙后面的网站。我怀疑当保持活跃在两个防火墙上都运行,大约一分钟的时间内,网站仍然无法访问...然后恢复与网站的连接。

问题可能出在哪里?保持活跃是否不断切换状态(主控或从属)?

Firewall-2 以 MASTER 状态运行。当 keepalived 启动时防火墙-1它跳转至 BACKUP 状态。

是否有命令或工具可以ipvsadm检查保持活跃

keepalived.conffirewall-1上的配置

    root@firewall-1:/etc/keepalived# head -n100 keepalived.conf

    global_defs {
        router_id fw_1 
    }
    vrrp_sync_group loadbalancers {
        group {
            extern
            intern  
        }
    }
    vrrp_instance extern {
        state BACKUP
        priority 100 
        interface eth0.100
        garp_master_delay 5 
        virtual_router_id 40 
        advert_int 1
        authentication {
            auth_type AH 
            auth_pass xxxx
        }
        virtual_ipaddress {
            194.xx.xx.x1
            194.xx.xx.x2
            194.xx.xx.x3
            194.xx.xx.xx
            194.xx.xx.xx
            194.xx.xx.x7
        }
    }   
    vrrp_instance intern {
        state BACKUP
        priority 100 
        notify "/usr/local/sbin/restart_pound"
        interface eth0.200
        garp_master_delay 5 
        virtual_router_id 41 
        advert_int 1
        authentication {
            auth_type AH 
            auth_pass xxxx
        }
        virtual_ipaddress {
            192.168.100.1
            192.168.100.10
        }
    }
..........
..........
..........

keepalived.conf防火墙-2上的配置

    root@firewall-2:/opt# head -n100 /etc/keepalived/keepalived.conf

    global_defs {
        router_id fw_2 
    }
    vrrp_sync_group loadbalancers {
        group {
            extern
            intern  
        }
    }
    vrrp_instance extern {
        state MASTER 
        priority 200 
        interface eth1
        garp_master_delay 5 
        virtual_router_id 40 
        advert_int 1
        authentication {
            auth_type AH 
            auth_pass xxxx
        }
        virtual_ipaddress {
            194.xx.xx.x1
            194.xx.xx.x2
            194.xx.xx.x3
            194.xx.xx.xx
            194.xx.xx.xx
            194.xx.xx.x7
        }
    }   
    vrrp_instance intern {
        state MASTER
        priority 200
        notify "/usr/local/sbin/restart_pound"
        interface eth0.200
        garp_master_delay 5 
        virtual_router_id 41 
        advert_int 1
        authentication {
            auth_type AH 
            auth_pass xxxx
        }
        virtual_ipaddress {
            192.168.100.1
            192.168.100.10
        }
    }
   ........
   ........

答案1

您询问了有关检查 真实状态的命令或工具keepaived
可能最好的方法是使用:

tcpdump -i <interface> ‘ip proto 112’

您应该会看到主服务器针对所有虚拟路由器 ID(trave 中的 vrid)发送的定期消息。

答案2

我尝试使用tcpdump -i <interface> 'ip proto 112',发现除非我在 keepalived 系统上,否则看不到它。我必须成为多播组的成员,ip maddr add <multicast address>tcpdump 才会报告多播。如果您使用单播,这不是问题。

自从我提出这个问题以来,我发现了一些可能对其他人有帮助的东西。首先,我的经验是,无论配置如何,keepalived 都会以 MASTER 状态启动,并在几秒钟内过渡到其“稳定状态”。如果您尝试在影响 keepalived 系统的状态更改上运行脚本,这一点至关重要,您可能会发现 notify_master 和“稳定状态”notify_... 脚本同时运行并相互冲突。

其次,在较新的系统上,systemctl status keepalived如果在状态改变后足够快地运行(并且中间事件没有“将其滚动关闭”),则可能会显示状态。 kill -USR1 <pid of keepalived>将创建 /tmp/keepalived.data 来报告 keepalived 的状态,如果在达到“稳定状态”后运行,则这是可靠的。使用这种方法是我解决冲突脚本问题的解决方案 - 休眠足够长的时间以达到稳定状态,然后使用,kill ...然后检查文件。

相关内容