개요
가상아이피 : 192.168.100.210
WEB1(real server) : 192.168.100.201
WEB2(real server) : 192.168.100.202
WEB서버에 keepalive+ipvsadm 패키지를 이용해서 LVS를 병행 구성
LVS구성시 real server 의 유효함을 판단 하는 방식 : URL HASH 체크
서버의 NIC 이름 : enp2s0f0
(서버마다 다를 수 있으므로 확인 할 것)
sysctl
sysctl의 net.ipv4.ip_forward = 1 상태여야함…
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p
패키지 설치
yum install keepalived ipvsadm
URL HASH 값 구하기
genhash -s 192.168.100.201 -p 80 –url /lvs/lvs_check.php
genhash -s 192.168.100.202 -p 80 –url /lvs/lvs_check.php
실행된 결과 값이
MD5SUM = 384dc7f45228c6ff3ecaa6cc8d15bccb
MD5SUM = 384dc7f45228c6ff3ecaa6cc8d15bccb
대략 이렇게 나왔다고 가정하자
마스터 설정
/etc/keepalived/keepalived.conf
global_defs { notification_email { } router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface enp2s0f0 virtual_router_id 200 priority 200 advert_int 1 authentication { auth_type PASS auth_pass ilayapass } virtual_ipaddress { 192.168.100.210 } } virtual_server 192.168.100.210 80 { delay_loop 3 lb_algo rr lb_kind DR protocol TCP persistence_timeout 3600 real_server 192.168.100.201 80 { weight 1 HTTP_GET { url { path /lvs/lvs_check.php digest384dc7f45228c6ff3ecaa6cc8d15bccb } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.100.202 80 { weight 1 HTTP_GET { url { path /lvs/lvs_check.php digest384dc7f45228c6ff3ecaa6cc8d15bccb } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
스탠바이 설정
/etc/keepalived/keepalived.conf
global_defs { notification_email { } router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP interface enp2s0f0 virtual_router_id 200 priority 100 advert_int 1 authentication { auth_type PASS auth_pass ilayapass } virtual_ipaddress { 192.168.100.210 } notify_backup /etc/keepalived/backup notify_master /etc/keepalived/master } virtual_server 192.168.100.210 80 { delay_loop 3 lb_algo rr lb_kind DR protocol TCP persistence_timeout 3600 real_server 192.168.100.201 80 { weight 1 HTTP_GET { url { path /lvs/check.aspx digest 383dc9f45228c6ff5ecaa6cc8d45bccb } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.100.202 80 { weight 1 HTTP_GET { url { path /lvs/check.aspx digest 383dc9f45228c6ff5ecaa6cc8d45bccb } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
서버 상태에 따른 스크립트 설정
스탠바이 서버가 backup 상태로 돌입 할 때 실행
/etc/keepalived/backup
#!/bin/sh echo "I'm backup" > /tmp/stat.txt
스탠바이 서버가 master 상태로 돌입 할 때 실행
/etc/keepalived/master
#!/bin/sh echo "I'm master" > /tmp/stat.txt
어디까지나 ”예시” 이기 때문에 간단하게 표현을 했을뿐
필요한 내용을 추가 해주면 된다.