← 아티클 목록

keepalived VIP 설정 — VRRP로 페일오버 구성하기

2028-01-24#networking#keepalived#고가용성

서버 한 대가 죽으면 서비스가 멈추는 단일 장애점(SPOF)을 없애려면, 두 대가 **하나의 가상 IP(VIP)**를 공유하다가 장애 시 자동으로 넘겨받게 만들면 됩니다. keepalived는 VRRP 프로토콜로 이걸 구현합니다. 평소엔 MASTER가 VIP를 들고 있다가, MASTER가 죽으면 BACKUP이 즉시 VIP를 인계받습니다.

개념 — VRRP가 하는 일

두 노드는 같은 virtual_router_id로 묶이고, priority가 높은 쪽이 MASTER가 됩니다. MASTER는 주기적으로 VRRP 광고(advertisement)를 멀티캐스트로 보냅니다. BACKUP이 이 광고를 일정 시간 못 받으면 "MASTER가 죽었다"고 판단하고 VIP를 자신의 인터페이스에 올립니다. 클라이언트는 언제나 VIP만 바라보므로 어느 노드가 처리하는지 알 필요가 없습니다.

항목MASTER (node1)BACKUP (node2)
stateMASTERBACKUP
priority150 (높음)100 (낮음)
virtual_router_id51 (양쪽 동일)51 (양쪽 동일)
VIP 보유평상시 보유장애 시 인계

설정 — keepalived.conf

MASTER 노드의 /etc/keepalived/keepalived.conf입니다.

로컬 터미널
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass mysecret
    }
    virtual_ipaddress {
        192.168.10.100/24
    }
}

BACKUP 노드는 state BACKUP, priority 100만 다르고 나머지(virtual_router_id, auth_pass, VIP)는 양쪽이 완전히 동일해야 합니다. 이 값이 어긋나면 두 노드가 서로를 못 알아보고 둘 다 MASTER가 되는 split-brain이 생깁니다.

서비스(예: nginx)가 죽었을 때도 페일오버하려면 track_script로 헬스체크를 붙입니다.

로컬 터미널
vrrp_script chk_nginx {
    script "/usr/bin/killall -0 nginx"
    interval 2
    weight -40
}

이 블록을 만들고 vrrp_instance 안에 track_script { chk_nginx }를 추가하면, nginx가 죽을 때 priority가 40 깎여 BACKUP이 더 높아지면서 VIP가 넘어갑니다.

검증 — VIP가 실제로 옮겨가나

기동 후 MASTER에서 VIP가 올라왔는지 확인합니다. VIP는 ifconfig에 안 보이고 ip addr에만 보입니다.

서버 터미널
systemctl start keepalived
ip addr show eth0          # MASTER에 192.168.10.100 이 떠 있는지
OUTPUT
inet 192.168.10.100/24 scope global secondary eth0

이제 MASTER에서 keepalived를 멈춰 장애를 흉내 내고, BACKUP으로 VIP가 넘어가는지 봅니다.

서버 터미널
# MASTER에서
systemctl stop keepalived
# BACKUP에서 (몇 초 내 VIP 인계 확인)
ip addr show eth0

체크리스트

로컬 터미널
# 양쪽 동일해야 하는 값: virtual_router_id, auth_pass, virtual_ipaddress
ip addr show eth0          # VIP 위치 확인(secondary 로 표기)
systemctl stop keepalived  # MASTER에서 장애 시뮬레이션
journalctl -u keepalived   # 상태 전환(Entering MASTER/BACKUP) 로그

split-brain만 피하면 keepalived는 가장 단순하게 고가용성을 얻는 방법입니다.


VRRP·로드밸런싱 같은 고가용성 네트워크 구성을 직접 두 노드로 실습해보고 싶다면 회원가입 없이 무료로 네트워크 트랙에서 따라 할 수 있습니다.