Keepalived VIP Failure in Ubuntu 18.04
Ubuntu 18.04 에서 Keepliaved VIP 없어지는 현상
Ubuntu 18.04 버전이 설치된 서버 2대에 Keepalived 를 이용하여 이중화 구성을 사용 중 발생한 이슈 입니다. 정상적으로 사용중에 가끔 마스터 서버에서 VIP 가 사라지고 슬레이브로도 VIP 가 넘어가지 않는 현상으로 인해 장애가 발생하여 해당 원인을 파악해 보았습니다.
해당 이슈는 Ubuntu 16.04 버전에서 추가된 apt.daily 서비스와 Ubuntu 18.04 버전에서 추가된 Systemd 데몬의 충돌 때문이었습니다.
apt.daily 는 매일 06:00 와 18:00 에 보안에 대한 부분만 업데이트 해주는 데몬 입니다.
문제가 되는 현상은 다음과 같습니다.
- apt.daliy 서비스가 보안 업데이트를 하면서 systemd 의 network daemon 을 재시작
- network daemon 이 재시작 되면서 VIP 정보가 사라짐
- keepalived 는 재시작을 하지 않아 헬스체크에 문제가 없는 것으로 판별
- VIP 가 사라지고 슬레이브 서버로 넘어가지도 못하는 현상 발생
이 현상에 대한 해결 방법은 두 가지가 있습니다.
1. apt.daily 서비스가 동작하지 않도록 disable
root@localhost:~# systemctl stop apt-daily.timer root@localhost:~# systemctl stop apt-daily.service root@localhost:~# systemctl stop apt-daily-upgrade.timer root@localhost:~# systemctl disable apt-daily.timer root@localhost:~# systemctl disable apt-daily.service root@localhost:~# systemctl disable apt-daily-upgrade.timer
2. keepalived 의 systemd 파일을 network daemon 이 재시작 될 때 같이 재시작 되도록 설정 변경
[Unit] Description=Keepalive Daemon (LVS and VRRP) After=syslog.target network-online.target network.target PartOf=systemd-networkd.service # Only start if there is a configuration file ConditionFileNotEmpty=/etc/keepalived/keepalived.conf [Service] Type=forking KillMode=process # Read configuration variable file if it is present EnvironmentFile=-/etc/default/keepalived ExecStart=/usr/sbin/keepalived $DAEMON_ARGS ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target
3, 4 번 라인과 같이 해주시면 됩니다.
PartOf 는 설정된 데몬이 재시작 될 경우 자신도 재시작을 해야 한다는 옵션입니다.