2011. 2. 15. 13:48
Active/Backup 구성 만들기 서버 인프라를 지탱하는 기술2011. 2. 15. 13:48
아래 그림은 Active 서버의 장애시에 Backup 서버가 VIP를 가져와 서비스를 계속 하는 구조이다.
failover.sh 스크립트는 양 서버에 존재 하여야 하며 VIP를 향해 Ping 테스트를 하며
healthcheck를 하다 fail 시 VIP를 할당하여 서비스를 유지하는 구조이다.
구성에 필요한 것은 서버 두 대 그리고 스위치 한 대이다.
리눅스 설치에 추가로 설치할 것은 다음과 send_arp 명령이 기본에는 없는 관계로 소스로 설치 하였다.
# wget http://horms.net/projects/fake/download/1.1.11/fake-1.1.11.tar.gz
# tar xfz fake-1.1.11.tar.gz
# cd fake-1.1.11
# make patch && make
make 까지만 진행 한다. 설치를 하지 않아도 fake-1.1.11 디렉토리 아래 send_arp 디렉토리에
send_arp 명령어가 생성되어 사용가능 하다.
Active&Backup 양쪽 서버에 send_arp 명령어를 생성한 후 failover.sh 스크립트를 생성 및 구동한다.
failover.sh 스크립트 내용 중 send_arp 명령을 실행하는 라인에서는 send_arp 명령어의 위치까지의
절대 경로를 입력 하여야 한다.
failover.sh
#!/bin/sh VIP="10.0.0.1" DEV="eth0" healthcheck() { ping -c 1 -w 1 $VIP > /dev/null return $? } ip_takeover() { MAC=`ip link show $DEV | egrep -o ' ([0-9a-f]{2}:){5}[0-9a-f]{2}' | head -n 1 | tr -d : ` ip addr add $VIP/24 dev $DEV send_arp $VIP $MAC 255.255.255.255 ffffffffffff } while healthcheck; do echo "health ok!" sleep 1 done echo "fail over!" ip_takeover |
양서버에 failover.sh 스크립트를 생성한 후 send_arp 명령어 위치도 Path 추가하여 놓은 후
Active 서버에서 failover.sh 스크립트를 구동하면
fail over! 라고 출력 한 후 스크립트가 종료된다.
Backup 서버에서 failover.sh 스크립트를 구동하면
health ok! 라는 문자열을 1초마다 출력한다.
Active 서버에서 아래 명령어 실행하여 VIP가 Active 할당되어 있음 을 알수 있다.
# ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:0c:29:36:14:b4 brd ff:ff:ff:ff:ff:ff inet 10.0.0.102/24 brd 10.0.0.255 scope global eth0 inet 10.0.0.1/24 scope global secondary eth0 inet6 fe80::20c:29ff:fe36:14b4/64 scope link valid_lft forever preferred_lft forever |
이 상태에서 Active 서버의 네트워크장애가 발생시 Backup 서버의 failover.sh 스크립트의
health ok! 문자열이 중단 되고 fail over! 라고 출력 후 VIP 를 Backup 서버에 설정 후
서비스를 계속 이어서 해준다.
VIP 할당여부 확인하는 명령어는
# ip addr show eth0 이다.