Ubuntu 18.04 Keepliaved VIP 없어지는 현상
ubuntu 18.04가 설치된 서버 2대에 Keepalived 를 설치하고 VIP로 이중화 구성을 진행하였다.
서버를 사용 중 간혹 Master keepalived에서 VIP가 사라지고 Slave로 넘어가지 않는 현상이 발생해서 장애가 날 때가 있었다.
원인을 파악해 보니 ubuntu 16.04에서 추가된 apt.daily란 서비스와 18.04에서 추가된 systemd 데몬이 만나서 나타난 현상이었다.
apt.daily란 매일 06:00와 18:00에 보안 업데이트에 대한 부분만 업데이트 해주는 데몬이다. |
문제가 되는 현상은 다음과 같다.
- apt.daliy가 보안 업데이트를 하면서 systemd의 network daemon를 재 시작
- network daemon이 재 시작 되면서 VIP 정보가 사라짐
- keepalived는 재 시작을 안해서 헬스체크에 문제가 없는 것으로 판별
- 그리하여 VIP는 사라지고 Slave로 넘어가지도 못하는 현상이 발생
위 현상의 해결 법은 두가지가 있다.
1. apt.daily 자체를 동작하지 않게 설정
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이 재 시작 될 때 같이 재 시작 되도록 설정 변경
root@localhost:~# less /etc/systemd/system/multi-user.target.wants/keepalived.service [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
위의 정보 중 4,5줄의 정보만 변경하면 된다.
PartOf는 설정된 데몬이 재 시작 될 경우 자신도 재 시작을 해야 한다는 옵션이다.