개요
keepalive 참조
keepalive는 Linux 시스템 혹은 Linux 기반 인프라에서의 로드밸런싱 및 고가용성을 위한 기능을 제공한다.
단순하게 설명하면, 두 개 이상의 Linux 시스템이 존재할 경우, virtual IP 를 생성하고 시스템의 상태에 따라 해당 virtual IP를 할당해주는 기능을 한다.
설치
# CentOS (Redhat 계열) $ sudo isntall -y keepalived # Ubuntu (Devian 계열) $ sudo apt-get install -y keepalived
설정
/etc/keepalived/keepalived.conf 를 환경에 맞도록 수정한다.
Master server
! Configuration File for keepalived Master global_defs { router_id rtr_0 # Master와 Backup 구분 } vrrp_instance VI_0 { # Master와 Backup과 구분 state MASTER # 또는 BACKUP interface eth0 # 노드에서 실제 사용할 인터페이스 지정 virtual_router_id 10 # Master와 Backup 모두 같은 값으로 설정. priority 200 # 우선순위, 값이 높은 쪽인 Master가 된다. advert_int 1 authentication { auth_type PASS # Master와 Backup 모두 같은 값으로 설정. auth_pass P@ssW0rd # Master와 Backup 모두 같은 값으로 설정. } virtual_ipaddress { 192.168.0.100 # Master와 Backup 동일하게 설정한 VIP } } # #으로 시작하는 내용은 모두 삭제한다.
Backuo(slave)
! Configuration File for keepalived global_defs { router_id rtr_1 } vrrp_instance VI_1 { state BACKUP # MASTER가 아니므로 수정 interface eth0 virtual_router_id 10 priority 100 # 낮은 우선순위를 위해 수정 advert_int 1 authentication { auth_type PASS auth_pass P@ssW0rd } virtual_ipaddress { 192.168.0.100 } }
구동
각각의 서버에서 서비스를 구동한다.
sudo systemctl enable keepalived --now # BACKUP 서버들에서도 동일하게 서비스를 구동해준다.
확인
ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 4e:be:1a:32:52:04 brd ff:ff:ff:ff:ff:ff inet 192.168.1.41/24 brd 192.168.1.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet 192.168.1.40/32 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::4cbe:1aff:fe32:5204/64 scope link valid_lft forever preferred_lft forever
192.168.1.40/32가 virtual IP. backup 노드로 설정된 서버에는 해당 ip가 보이지 않는다.
다른 시스템에서 가상아이피를 이용하여 ssh 접속, 혹은 ping 명령등을 수행해서 확인하면 된다.