Запустить keepalived без IP на интерфейсе?
Я хочу использовать keepalived на интерфейсе, который в определенный момент получит IP-адрес, но изначально его не будет. Могу ли я установить это как-то в конфигурации? Если я попытаюсь запустить его, теперь keepalived выдает ошибки, поскольку keepalived не знает, какой IP-адрес источника использовать при отправке пакетов VRRP. Conf:
! Файл конфигурации для keepalived
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass pwd
}
virtual_ipaddress {
192.168.0.13
}
notify /etc/state_change.py
}
Журнал:
keepalived -f /etc/keepalived.conf --log-console --dont-fork
Thu Jun 28 11:25:53 2018: Starting Keepalived v1.4.4 (05/08,2018)
Thu Jun 28 11:25:53 2018: Running on Linux 4.7.8 #9 SMP Wed Jun 27 17:25:18 IST
2018 (built for Linux 4.7.8)
Thu Jun 28 11:25:53 2018: Opening file '/etc/keepalived.conf'.
Thu Jun 28 11:25:53 2018: Starting Healthcheck child process, pid=18886
Thu Jun 28 11:25:53 2018: Starting VRRP child process, pid=18887
Thu Jun 28 11:25:53 2018: Opening file '/etc/keepalived.conf'.
Thu Jun 28 11:25:53 2018: Registering Kernel netlink reflector
Thu Jun 28 11:25:53 2018: Registering Kernel netlink command channel
Thu Jun 28 11:25:53 2018: Registering gratuitous ARP shared channel
Thu Jun 28 11:25:53 2018: Opening file '/etc/keepalived.conf'.
Thu Jun 28 11:25:53 2018: WARNING - default user 'keepalived_script' for script
execution does not exist - please create.
Thu Jun 28 11:25:53 2018: (VI_1): Cannot find an IP address to use for interface
eth0
Thu Jun 28 11:25:54 2018: Stopped
Thu Jun 28 11:25:54 2018: Keepalived_vrrp exited with permanent error CONFIG. Te
rminating
Thu Jun 28 11:25:54 2018: Stopping
Thu Jun 28 11:25:54 2018: Stopped
2 ответа
Решение
Новая версия keepalived 2.0.5
был выпущен сегодня и поддерживает интерфейсы, которые еще не существуют. Случайно, это также решает мою проблему, поскольку keepalived начнется в FAULT
укажите, если у интерфейса нет IP, что здорово. Просто добавь dynamic_interfaces
в global_defs
и это работает.
Почему бы просто не дать ему временный адрес с помощью ifconfig?