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값을 주시하면 된다.
관리
설정 파일을 변경한 경우는 이하의 순서로.
- 체크 스크립트에서 확인
# keepalived-check /etc/keepalived/keepalived.conf
- 설정 리로드
# 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 |
---|