我安装了保持活跃在两个防火墙上提供故障转移。我不确定以下配置是否正确(请参阅下面的配置)。
有时我无法访问防火墙后面的网站。我怀疑当保持活跃在两个防火墙上都运行,大约一分钟的时间内,网站仍然无法访问...然后恢复与网站的连接。
问题可能出在哪里?保持活跃是否不断切换状态(主控或从属)?
Firewall-2 以 MASTER 状态运行。当 keepalived 启动时防火墙-1它跳转至 BACKUP 状态。
是否有命令或工具可以ipvsadm
检查保持活跃?
keepalived.conf
firewall-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 ...
然后检查文件。