keepalived

keepalived 구성

Dev.Congsik 2025. 4. 7. 16:47
728x90

 

Keepalived?

  • 네트워크 서비스나 리소스의 가용성을 높이기 위해 사용
  • 시스템의 가용성을 향상시키고 서비스의 중단을 방지할 수 있으며, 특히 네트워크 서비스나 로드 밸런서 등의 분산 시스템에서 널리 사용
  • 여러 대의 서버 간에 가상 IP 주소(VIP)를 공유하고, 서비스를 제공하는 서버를 자동으로 전환하여 장애 복구를 지원
  • 리눅스 기반의 오픈 소스 소프트웨어로, 고가용성 및 부하 분산을 제공하는 솔루션

 

Keepalived 특징

  • 고가용성(High Availability) : 마스터 서버에 장애가 발생하면 백업 서버로 자동 전환되어 서비스 중단을 최소화
    • 여러 대의 서버 간에 마스터 및 백업 역할을 자동으로 관리하여 시스템 전체의 가용성 증대
  • 가상 IP 주소(Virtual IP, VIP) : 클라이언트는 단일한 IP 주소를 통해 서비스에 접근할 수 있으며, 서버 간의 장애 전환 시에도 IP 주소는 변하지 않음
    • 여러 서버 간에 가상 IP 주소를 공유하고, 이를 클라이언트가 접속하는 데 사용
  • VRRP(Virtual Router Redundancy Protocol) : 여러 서버 간의 상태 동기화와 자동 장애 복구 가능
    • VRRP 프로토콜을 사용하여 가상 IP 주소의 관리와 서버 간의 상태 확인을 수행
  • 감시 및 장애 복구 : 주기적으로 서버 및 서비스의 상태를 감시하고, 장애가 발생하면 해당 서버의 역할을 다른 서버로 자동으로 전환하여 시스템의 가용성을 유지

 

keepalived Install

  • keepalived 설치
yum install keepalived (온라인)
yum --disablerepo=\* --enablerepo=offline-keepalived install keepalived -y (오프라인)
-> 오프라인 설치파일 및 repo 지정 필요

 

 

keepalived conf

  • 구성 환경 : 가상 linux 서버 Centos 7.9 / haproxy
  • 테스트서버 1~3호기 중 3호기를 Master로 구성
    • 192.168.174.128 : 1호기 (Backup)
    • 192.168.174.129 : 2호기 (Backup)
    • 192.168.174.130 : 3호기 (Master)
  • vip : 192.168.174.200 지정

 

  • 1호기 keepalived.conf
! Configuration File for keepalived

global_defs {
#   notification_email {
#     acassen@firewall.loc
#     failover@firewall.loc
#     sysadmin@firewall.loc
#   }
#   notification_email_from Alexandre.Cassen@firewall.loc
#   smtp_server 192.168.200.1
#   smtp_connect_timeout 30
#   router_id LVS_DEVEL
#   vrrp_skip_check_adv_addr
#   vrrp_strict
#   vrrp_garp_interval 0
#   vrrp_gna_interval 0
    router_id LVS_DB       #router_id 동일 지정
}

vrrp_script haproxy {
   script "killall -0 haproxy" #haproxy가 실행중인지만 확인, kill 수행X
   interval 2                  #2초 간격으로 haproxy health check
   weight 2                    #체크 후 정상 시 가중치 2 부여
}

vrrp_instance VI_1 {
    state BACKUP           #백업모드로 기동
    interface ens33        #동일 네트워크 인터페이스 지정
    virtual_router_id 51
    priority 100           #우선순위 100 지정
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {    #vip 지정
        192.168.174.200
    }
}

 

  • 2호기 keepalived conf
! Configuration File for keepalived

global_defs {
#   notification_email {
#     acassen@firewall.loc
#     failover@firewall.loc
#     sysadmin@firewall.loc
#   }
#   notification_email_from Alexandre.Cassen@firewall.loc
#   smtp_server 192.168.200.1
#   smtp_connect_timeout 30
#   router_id LVS_DEVEL
#   vrrp_skip_check_adv_addr
#   vrrp_strict
#   vrrp_garp_interval 0
#   vrrp_gna_interval 0
    router_id LVS_DB           #동일 라우터 id 지정
}

vrrp_script haproxy {
   script "killall -0 haproxy" #haproxy가 실행중인지만 체크, kill 실행X
   interval 2                  #2초 간격으로 haproxy health check
   weight 2                    #체크 후 정상 시 가중치 2부여
}

vrrp_instance VI_2 {
    state BACKUP               #백업모드로 기동
    interface ens33            #동일 네트워크 인터페이스 지정
    virtual_router_id 51
    priority 101               #우선순위 101 지정
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.174.200        #vip 지정
    }
}

 

  • 3호기 keepalived conf
! Configuration File for keepalived

global_defs {
#   notification_email {
#     acassen@firewall.loc
#     failover@firewall.loc
#     sysadmin@firewall.loc
#   }
#   notification_email_from Alexandre.Cassen@firewall.loc
#   smtp_server 192.168.200.1
#   smtp_connect_timeout 30
#   router_id LVS_DEVEL
#   vrrp_skip_check_adv_addr
#   vrrp_strict
#   vrrp_garp_interval 0
#   vrrp_gna_interval 0
    router_id LVS_DB            #동일 라우터 id 지정
}

vrrp_script haproxy {
   script "killall -0 haproxy"  #haproxy 실행중인지만 확인 kill 실행X
   interval 2                   #2초 간격으로 haproxy health check
   weight 2                     #체크 후 정상 시 가중치 2 부여
}

vrrp_instance VI_3 {
    state MASTER                #마스터모드로 기동
    interface ens33             #동일 네트워크 인터페이스 지정
    virtual_router_id 51
    priority 102                #우선순위 102 지정 (최우선순위-Master)
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.174.200         #vip 지정
    }
}

 

keepalived 기동

1호기 (backup)
2호기 (backup)
3호기 (Master)

 

  • vip 확인 (ip)

728x90

'keepalived' 카테고리의 다른 글

[Keepalived] failover 테스트  (0) 2025.04.08