Keepalived 소스 인스톨(컴파일) 설치 가이드
Keepalived 는 VRRP 프로토콜을 이용하는 대표적인 오픈소스 HA 솔루션 입니다. VIP (가상 IP)를 기반으로 동작하며, 서버를 모니터링 하다가 마스터 서버에 장애 발생 시 백업 서버로 페일오버를 해줍니다. 또한 마스터 서버가 복구 되면 다시 VIP 를 원래의 마스터 서버로 넘겨 줍니다.
가장 많이 사용되는 조합으로는 HAProxy 같은 소프트웨어 로드발란서가 있습니다. HAProxy 서버에 장애 발생 시 대기하고 있던 백업용 HAProxy 로 전환하기 위함입니다.
구성 목표
HAProxy 서버 두대를 FailOver 구성
HAProxy Master IP : 172.19.10.106
HAProxy BACKUP IP : 172.19.10.107
VIP : 172.19.10.105
모든 설치 과정은 Master / Backup 서버 모두 동일하며, 설정 파일의 내용만 일부 차이가 있습니다.
HAProxy 서버는 MASTER 용과 BACKUP 용 두 대를 미리 설치하여 동일하게 설정해 주시기 바랍니다.
설치
의존성 패키지 설치
[root@172-19-10-106 /]# yum install -y kernel-headers kernel-devel libnfnetlink-devel libnl-devel
[root@172-19-10-106 /]# yum install -y kernel-headers kernel-devel libnfnetlink-devel libnl-devel
[root@172-19-10-106 /]# yum install -y kernel-headers kernel-devel libnfnetlink-devel libnl-devel
다운로드
[root@172-19-10-106 /]# cd /data/apps/dn
[root@172-19-10-106 dn]# wget http://www.keepalived.org/software/keepalived-2.0.11.tar.gz
[root@172-19-10-106 /]# cd /data/apps/dn
[root@172-19-10-106 dn]# wget http://www.keepalived.org/software/keepalived-2.0.11.tar.gz
[root@172-19-10-106 /]# cd /data/apps/dn
[root@172-19-10-106 dn]# wget http://www.keepalived.org/software/keepalived-2.0.11.tar.gz
압축해제
[root@172-19-10-106 dn]# tar xvzf keepalived-2.0.11.tar.gz
[root@172-19-10-106 dn]# tar xvzf keepalived-2.0.11.tar.gz
[root@172-19-10-106 dn]# tar xvzf keepalived-2.0.11.tar.gz
컴파일 및 설치
[root@172-19-10-106 dn]# cd keepalived-2.0.11
[root@172-19-10-106 keepalived-2.0.11]# ./configure --prefix=/data/apps/src/keepalived-2.0.11 --with-kernel-dir=/lib/modules/$(uname -r)/build
[root@172-19-10-106 keepalived-2.0.11]# make && make install
[root@172-19-10-106 dn]# cd keepalived-2.0.11
[root@172-19-10-106 keepalived-2.0.11]# ./configure --prefix=/data/apps/src/keepalived-2.0.11 --with-kernel-dir=/lib/modules/$(uname -r)/build
[root@172-19-10-106 keepalived-2.0.11]# make && make install
[root@172-19-10-106 dn]# cd keepalived-2.0.11
[root@172-19-10-106 keepalived-2.0.11]# ./configure --prefix=/data/apps/src/keepalived-2.0.11 --with-kernel-dir=/lib/modules/$(uname -r)/build
[root@172-19-10-106 keepalived-2.0.11]# make && make install
링크생성
[root@172-19-10-106 keepalived-2.0.11]# ln -s /data/apps/src/keepalived-2.0.11 /data/apps/ln/keepalived
[root@172-19-10-106 keepalived-2.0.11]# ln -s /data/apps/src/keepalived-2.0.11 /data/apps/ln/keepalived
[root@172-19-10-106 keepalived-2.0.11]# ln -s /data/apps/src/keepalived-2.0.11 /data/apps/ln/keepalived
sysconfig 설정 링크 및 편집
[root@172-19-10-106 keepalived-2.0.11]# ln -s /data/apps/ln/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
[root@172-19-10-106 keepalived-2.0.11]# ln -s /data/apps/ln/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
[root@172-19-10-106 keepalived-2.0.11]# ln -s /data/apps/ln/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
: vi /etc/sysconfig/keepalived
# Options for keepalived. See `keepalived --help' output and keepalived(8) and
# keepalived.conf(5) man pages for a list of all options. Here are the most
# --vrrp -P Only run with VRRP subsystem.
# --check -C Only run with Health-checker subsystem.
# --dont-release-vrrp -V Dont remove VRRP VIPs & VROUTEs on daemon stop.
# --dont-release-ipvs -I Dont remove IPVS topology on daemon stop.
# --dump-conf -d Dump the configuration data.
# --log-detail -D Detailed log messages.
# --log-facility -S 0-7 Set local syslog facility (default=LOG_DAEMON)
KEEPALIVED_OPTIONS="-D -S 3 -f /etc/keepalived/keepalived.conf"
# Options for keepalived. See `keepalived --help' output and keepalived(8) and
# keepalived.conf(5) man pages for a list of all options. Here are the most
# common ones :
#
# --vrrp -P Only run with VRRP subsystem.
# --check -C Only run with Health-checker subsystem.
# --dont-release-vrrp -V Dont remove VRRP VIPs & VROUTEs on daemon stop.
# --dont-release-ipvs -I Dont remove IPVS topology on daemon stop.
# --dump-conf -d Dump the configuration data.
# --log-detail -D Detailed log messages.
# --log-facility -S 0-7 Set local syslog facility (default=LOG_DAEMON)
#
KEEPALIVED_OPTIONS="-D -S 3 -f /etc/keepalived/keepalived.conf"
# Options for keepalived. See `keepalived --help' output and keepalived(8) and
# keepalived.conf(5) man pages for a list of all options. Here are the most
# common ones :
#
# --vrrp -P Only run with VRRP subsystem.
# --check -C Only run with Health-checker subsystem.
# --dont-release-vrrp -V Dont remove VRRP VIPs & VROUTEs on daemon stop.
# --dont-release-ipvs -I Dont remove IPVS topology on daemon stop.
# --dump-conf -d Dump the configuration data.
# --log-detail -D Detailed log messages.
# --log-facility -S 0-7 Set local syslog facility (default=LOG_DAEMON)
#
KEEPALIVED_OPTIONS="-D -S 3 -f /etc/keepalived/keepalived.conf"
설정 링크 및 편집
[root@172-19-10-106 keepalived-2.0.11]# ln -s /data/apps/ln/keepalived/etc/keepalived /etc/keepalived
[root@172-19-10-106 keepalived-2.0.11]# ln -s /data/apps/ln/keepalived/etc/keepalived /etc/keepalived
[root@172-19-10-106 keepalived-2.0.11]# ln -s /data/apps/ln/keepalived/etc/keepalived /etc/keepalived
: vi /etc/keepalived/keepalived.conf
마스터 서버의 설정 파일 입니다.
router_id umount_HAProxy01
vrrp_script chk_haproxy {
script "/sbin/pidof haproxy"
auth_pass A3BB833DD44CEFEA384E48C5A55C0A35
# MASTER 서버 config
global_defs {
router_id umount_HAProxy01
}
vrrp_script chk_haproxy {
script "/sbin/pidof haproxy"
interval 5
weight 2
}
vrrp_instance HAProxy {
interface eth0
state MASTER
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass A3BB833DD44CEFEA384E48C5A55C0A35
}
unicast_peer {
172.19.10.107
}
virtual_ipaddress {
172.19.10.105
}
track_script {
chk_haproxy
}
}
# MASTER 서버 config
global_defs {
router_id umount_HAProxy01
}
vrrp_script chk_haproxy {
script "/sbin/pidof haproxy"
interval 5
weight 2
}
vrrp_instance HAProxy {
interface eth0
state MASTER
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass A3BB833DD44CEFEA384E48C5A55C0A35
}
unicast_peer {
172.19.10.107
}
virtual_ipaddress {
172.19.10.105
}
track_script {
chk_haproxy
}
}
백업 서버의 설정 파일 입니다.
notification_email_from fallboyz@umount.net
router_id umount_HAProxy02
vrrp_script chk_haproxy {
script "/sbin/pidof haproxy"
auth_pass A3BB833DD44CEFEA384E48C5A55C0A35
# BACKUP 서버 config
global_defs {
notification_email {
fallboyz@umount.net
}
notification_email_from fallboyz@umount.net
smtp_server localhost
smtp_connect_timeout 30
router_id umount_HAProxy02
}
vrrp_script chk_haproxy {
script "/sbin/pidof haproxy"
interval 5
weight 2
}
vrrp_instance HAProxy {
interface eth0
state SLAVE
virtual_router_id 51
smtp_alert
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass A3BB833DD44CEFEA384E48C5A55C0A35
}
unicast_peer {
172.19.10.106
}
virtual_ipaddress {
172.19.10.105
}
track_script {
chk_haproxy
}
}
# BACKUP 서버 config
global_defs {
notification_email {
fallboyz@umount.net
}
notification_email_from fallboyz@umount.net
smtp_server localhost
smtp_connect_timeout 30
router_id umount_HAProxy02
}
vrrp_script chk_haproxy {
script "/sbin/pidof haproxy"
interval 5
weight 2
}
vrrp_instance HAProxy {
interface eth0
state SLAVE
virtual_router_id 51
smtp_alert
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass A3BB833DD44CEFEA384E48C5A55C0A35
}
unicast_peer {
172.19.10.106
}
virtual_ipaddress {
172.19.10.105
}
track_script {
chk_haproxy
}
}
systemd 파일생성
: vi /etc/systemd/system/keepalived.service
Description=LVS and VRRP High Availability Monitor
After= network-online.target syslog.target
Wants=network-online.target
PIDFile=/var/run/keepalived.pid
EnvironmentFile=-/etc/sysconfig/keepalived
ExecStart=/data/apps/ln/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
WantedBy=multi-user.target
[Unit]
Description=LVS and VRRP High Availability Monitor
After= network-online.target syslog.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/keepalived.pid
KillMode=process
EnvironmentFile=-/etc/sysconfig/keepalived
ExecStart=/data/apps/ln/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
[Unit]
Description=LVS and VRRP High Availability Monitor
After= network-online.target syslog.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/keepalived.pid
KillMode=process
EnvironmentFile=-/etc/sysconfig/keepalived
ExecStart=/data/apps/ln/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
systemd 등록 및 실행
[root@172-19-10-106 keepalived-2.0.11]# systemctl enable keepalived
[root@172-19-10-106 keepalived-2.0.11]# systemctl start keepalived
[root@172-19-10-106 keepalived-2.0.11]# systemctl enable keepalived
[root@172-19-10-106 keepalived-2.0.11]# systemctl start keepalived
[root@172-19-10-106 keepalived-2.0.11]# systemctl enable keepalived
[root@172-19-10-106 keepalived-2.0.11]# systemctl start keepalived