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 기동
- vip 확인 (ip)
728x90
'keepalived' 카테고리의 다른 글
[Keepalived] failover 테스트 (0) | 2025.04.08 |
---|