#! /bin/sh //쉘 스크립트의 시작.
DEV="eth0" // 변수
VIP="10.0.0.1 10.0.0.2" //변수 리스트.
//함수.
ip_add(){
//MAC 이라는 변수에 $DEV 장치의 ip에 해당하는 정보중에
// 파일 첫머리 부터 :를 지우고 정규식에 해당하는 내용이 only한 것이 있으면
MAC=`ip link show $DEV | egrep -o `([0-9a-f]{2}:){5}[0-9a-f]{2}` | head -n 1 | tr -d :`
//장치에 ip를 추가.
ip addr add $1/24 dev $DEV
//IP주소와 MAC주소를 다른서버에 통지.
send_arp $1 $MAC 255.255.255.255 ffffffffffff
}
//함수
ip_del(){
//장치의 IP 주소를 삭제.
ip addr del $1/24 dev $DEV
}
//함수
healthcheck(){
//$VIP 개수만큼 I 에 대입해보며 실행.
for I in $VIP;
do
// curl 로 I에 대입된 VIP 의 응답이 200과 다르면
//즉 VIP에 대해 헬스체크가 실패할 경우
if ["200" -ne "`curl -s -I 'http://$i/' | head -n 1 | cut -f 2 -d ' '`" ];
then
// $DEV 장치에 $i와 같은 IP 가 없으면
// VIP가 자신에게 할당된 IP가 아니라면.
if [ -z "`ip addr show $DEV | grep $i`"];
then
//ip 추가
ip_add $i
else //맞다면
//ip 삭제
ip_del $i
fi
fi
done
}
while true;
do
healthcheck;
sleep 1;
done
'{Programing} > Server' 카테고리의 다른 글
JSON (0) | 2018.03.20 |
---|---|
mysql 문제 발생. (0) | 2017.11.06 |
리눅스 쉘 스크립트 (0) | 2017.10.23 |
(리눅스) - make 관련 (0) | 2017.10.09 |
1. TCP 기본 (0) | 2017.03.02 |
댓글