Должен ли виртуальный интерфейс конфликтовать с keepalived?
Я работал на сервере сегодня, Debian Squeeze. После тестирования этого на двух промежуточных серверах я добавил виртуальный сетевой интерфейс в /etc/network/interfaces следующим образом:
# The primary network interface
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address 10.100.2.70
netmask 255.255.0.0
gateway 10.100.0.1
# adding this one
auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
address 10.100.2.77
netmask 255.255.0.0
gateway 10.100.0.1
Keepalived управляет виртуальным IP на машине
ip addr show
....
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:24:81:81:e5:54 brd ff:ff:ff:ff:ff:ff
inet 10.100.2.70/16 brd 10.100.255.255 scope global eth0
inet 10.100.2.72/32 scope global eth0
С новыми данными интерфейсов на месте, sudo service networking restart
сбил сеть на коробке. С консолью через iDrac сеть не запускалась даже с удалением новых строк из файла, и это требовало перезагрузки. Я знаю, что мог бы сделать if-up eth0:0
, но я хотел, чтобы все это работало.
Есть ли какая-то особенность keepalived, которая привела бы к моей проблеме? Единственные сообщения журнала, которые я вижу в системном журнале:
Sep 30 15:48:17 pgpool01 Keepalived_vrrp: Kernel is reporting: interface eth0 DOWN
Sep 30 15:48:17 pgpool01 Keepalived_vrrp: VRRP_Instance(VI_1) Entering FAULT STATE
Sep 30 15:48:17 pgpool01 Keepalived_vrrp: VRRP_Instance(VI_1) Now in FAULT state
Как я уже сказал, я не видел проблем на постановочных боксах.
Любые советы будут полезны, спасибо.
редактирование: добавление ip-ссылки и вывода ifconfig
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:24:81:81:e5:54 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:24:81:81:e5:55 brd ff:ff:ff:ff:ff:ff
$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:24:81:81:e5:54
inet addr:10.100.2.70 Bcast:10.100.255.255 Mask:255.255.0.0
inet6 addr: fe80::224:81ff:fe81:e554/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2080027816 errors:0 dropped:0 overruns:0 frame:0
TX packets:2498837332 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:683029542202 (636.1 GiB) TX bytes:710577938507 (661.7 GiB)
Interrupt:16 Memory:fc4c0000-fc4e0000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:45564 errors:0 dropped:0 overruns:0 frame:0
TX packets:45564 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2279497 (2.1 MiB) TX bytes:2279497 (2.1 MiB)
и keepalived.conf
vrrp_script chk_pgpool { # Requires keepalived-1.1.13
script "killall -0 pgpool" # cheaper than pidof
interval 2 # check every 2 seconds
weight 2 # add 2 points of prio if OK
}
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 72
priority 101 # 101 on master, 100 on backup
virtual_ipaddress {
10.100.2.72
}
track_script {
chk_pgpool
}
}
2 ответа
Спасибо за размещение дополнительной информации. Я забыл, что keepalived не назначает экземпляры vrrp виртуальным интерфейсам (например, eth0:0).
Так как вы сделали service networking restart
keepalived исчез, когда eth0 исчез.
Вам нужно настроить интерфейсы перед запуском keepalived или вручную настроить новые, а не перезапускать сеть. Вы можете сделать это, добавив новый интерфейс в /etc/network/interfaces, а затем запустите ifup eth0:#
,
Keepalived имеет встроенную функцию добавления метки к каждому VIP после устройства. При необходимости одно и то же значение метки можно использовать для нескольких VIP:
virtual_ipaddress {
192.168.200.18/24 dev eth2 label eth2:1
}
The label eth2:1
не нуждается в каких-либоif up ...
подготовка и результаты в ifconfig, как предполагалось в оригинальном постере (вероятно):
eth2:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.200.18 netmask 255.255.255.0 broadcast 0.0.0.0
ether xx:xx:xx:xx:xx:d8 txqueuelen 1000 (Ethernet)
(Я использую помеченный субинтерфейс, чтобы предотвратить перехват SSSD этих VIP-адресов на основном интерфейсе и, таким образом, предотвратить использование VIP-адресов в обновлениях DNS, которые мне не нужны.)