728x90
반응형

keepalived

사전 준비

LVS의 사전 준비 참조

설치

yum에서 패키지 설치.

# yum install keepalived

설정

설정 파일은 /etc/keepalived/keepalived.conf.

로그의 설정

로그는 local3의 설비로 출력하도록 한다.
/etc/sysconfig/keepalived 편집

KEEPALIVED_OPTIONS="-D -S3"

로 변경.

 

iptables

vrrp의 프로토콜 통신을 대상 서버에서 허용할 필요가 있으므로 아래를 iptables의 설정에 추가.

# VRRP
-A INPUT -m state --state NEW -p vrrp -j ACCEPT

 

keepalived.conf

vrrp_script chk_haproxy {
    script      "/usr/bin/killall -0 haproxy"
    interval    2
    weight      20
}
 
## group을 만들면 vrrp_script가 잘 움직이지 않습니다.
#vrrp_sync_group VG {
#    group {
#        VI_bond1
##        VI_eth0
#    }
#    # 이벤트 발생시 스크립트 입니다.
#    notify_master   "/opt/sbin/ccn-keepalived_notify master"
#    notify_backup   "/opt/sbin/ccn-keepalived_notify backup"
#    notify_fault    "/opt/sbin/ccn-keepalived_notify fault"
#}
 
vrrp_instance VI_bond1 {
    state               BACKUP
    interface           bond1
    virtual_router_id   51
    garp_master_delay   5
    priority            100
    # vrrp 체크 간격입니다.
    advert_int          1
#    nopreempt
    virtual_ipaddress {
        219.112.248.20 dev bond1
    }
    track_script {
        chk_haproxy
    }
    # 이벤트 발생시 스크립트 입니다.
    notify_master   "/opt/sbin/ccn-keepalived_notify master"
    notify_backup   "/opt/sbin/ccn-keepalived_notify backup"
    notify_fault    "/opt/sbin/ccn-keepalived_notify fault"

 

환경

OS / keepalived

CentOS6 64bit
keepalived-1.2.7-3.el6.x86_64

 

Ubuntu에서 vrrp_sync_group 만들어도 잘 작동한다는 정보도 있고.

아래는 포인트.

  • vrrp_sync_group을 만들지 않는다
    • 설정하면 vrrp_script가 잘 동작하지 않음
    • 복수의 인터페이스를 설정할 수 없다
  • 2대의 노드를 모두 같은 설정으로 한다
    • state는 MASTER/BACKUP 어느 쪽이라도 좋다
    • priority도 마찬가지
    • nopreempt를 설정하지 않는다
728x90

이 설정으로 아래의 동작을 확인 후.

  • MASTER측이 정지했을 때 1대로 페일 오버
    • 복구 하더라도 페일 백은 하지 않는다
  • HAProxy의 프로세스가 다운되면 페일 오버
    • HAProxy가 높아지고도 페일 백은 하지 않는다

또한, 이벤트 발생 시의 스크립트는 Git으로 관리되고 있는 optsbin속에 들어 있습니다.

 

확인

# ip addr show bond1
11: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether e0:db:55:12:bb:59 brd ff:ff:ff:ff:ff:ff
    inet 219.112.248.1/26 brd 219.112.248.63 scope global bond1
    inet 219.112.248.20/32 scope global bond1

등 VIP이 한쪽으로 표시되어 있으면 OK.
MASTER의 정지나 HAProxy의 정지로 이미 한쪽에 VIP가 이동되어야 문제 없이 동작하는 것

 

# watch -n1 ip addr show bond1

로 표시하며 전환한다고 알기 쉽다. 또 디버깅은 tcpdump에서 패킷을 확인하면 OK.

 

# tcpdump -s0 -pni bond1 host 224.0.0.18
tcpdump: listening on bond1, link-type EN10MB (Ethernet), capture size 65535 bytes
19:36:10.424813 IP (tos 0xc0, ttl 255, id 507, offset 0, flags [none], proto VRRP (112), length 40)
    219.112.248.2 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 120, authtype none, intvl 1s, length 20, addrs: 219.112.248.20
19:36:11.424928 IP (tos 0xc0, ttl 255, id 508, offset 0, flags [none], proto VRRP (112), length 40)
    219.112.248.2 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 120, authtype none, intvl 1s, length 20, addrs: 219.112.248.20

이로써 VRRP패킷만 확인할 수 있다. 주로 prio값을 주시하면 된다.

 

 

관리

설정 파일을 변경한 경우는 이하의 순서로.

  1. 체크 스크립트에서 확인
# keepalived-check /etc/keepalived/keepalived.conf
 
  1. 설정 리로드
# service keepalived reload

 

재부팅을 원하는 경우, MASTER 노드를 교체하고 싶지 않은 경우 아래와 같은 절차로 대기측을 정지시키고 실행한다(restart하면 MASTER가 전환되므로).

 

Standby를 정지

# service keepalived stop

MASTER  재기동

# service keepalived restart

 

Standby 기동

# service keepalived start
 

 

728x90
300x250

'IT > Haproxy' 카테고리의 다른 글

HAProxy 설치 및 설정  (0) 2021.08.09

+ Recent posts