keepalived + nginx 고 부하 균형 흔 한 고장 문제 해결 방법
#!/bin/bash
ip a s eth0 | grep "192.168.22.3" >/dev/null
if [ $? -eq 0 ]
then
echo "keepalived " | mail -s -keepalived [email protected]
fi
이 스 크 립 트 를 정시 작업 에 추가 하고 2 분 마다 실행 합 니 다.
*/2 * * * * /usr/bin/sh /server/scripts/monitoring_keep.sh
주의: 예비 서버 에 vip 주소 가 발생 합 니 다. 하 나 는 뇌 균열 문제 이 고 다른 하 나 는 메 인 서버 가 고장 나 서 vip 가 정상적으로 예비 서버 로 전환 되 었 습 니 다. 그러나 어떤 원인 이 든 클 러 스 터 에 문제 가 생 겼 다 는 것 을 설명 하고 경 고 를 해 야 합 니 다.
2. 두 번 째 문제 에 대해 흔히 볼 수 있 는 이 유 는 nginx 가 고장 이 났 지만 keepalived 가 정상적으로 작 동 하고 메 인 서버 는 vip 주소 자원 을 차지 하지만 정상 적 인 서 비 스 를 제공 하지 못 하기 때 문 입 니 다. 해결 방법 은 메 인 서버 의 nginx 서 비 스 를 실시 간 으로 감시 하 는 것 입 니 다. nginx 가 고장 난 것 을 발견 하면 즉시 vip 를 방출 합 니 다.1) nginx 서 비 스 를 감시 하 는 스 크 립 트 작성:
vim /server/scripts/monitoring_web.sh
#!/bin/bash
num=`ps -ef|grep -c nginx`
if [ $num -lt 2 ]
then
exit 1
else
exit 0
fi
2) 스 크 립 트 에 실행 가능 한 권한 추가:
chmod +x /server/scripts/monitoring_web.sh
3) lb 01 과 lb 02 는 서로 위주 로 준비 되 어 있 으 며, keepalived 설정 파일 의 내용 은 다음 과 같다. lb 01 설정 파일:
[root@lb01 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb01
}
vrrp_script check_web {
script "/server/scripts/monitoring_web.sh"
interval 2
weight -60
}
vrrp_instance one {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.22.3/24 dev eth0 label eth0:3
}
track_script {
check_web
}
}
vrrp_instance two {
state BACKUP
interface eth0
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.22.4/24 dev eth0 label eth0:4
}
}
lb 02 프로필:
[root@lb02 scripts]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb02
}
vrrp_script monitoring_web {
script "/server/scripts/monitoring_web.sh"
interval 2
weight -60
}
vrrp_instance one {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.22.3/24 dev eth0 label eth0:3
}
}
vrrp_instance two {
state MASTER
interface eth0
virtual_router_id 52
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.22.4/24 dev eth0 label eth0:4
}
track_script {
monitoring_web
}
}
설정 파일 weight 명령 에 대한 간략 한 설명: weight 가 정수 일 때: ① 스 크 립 트 실행 결과 가 사실 이면 priority + weight;② 스 크 립 트 실행 결과 가 거짓 이면 priority 는 변 하지 않 습 니 다.weight 가 마이너스 일 때: ① 스 크 립 트 실행 결과 가 진실 이면 priority 는 변 하지 않 습 니 다.② 스 크 립 트 실행 결과 가 거짓 이면 priority + weight (weight 절대 값 감소).메 인 프로필 에 weight 를 - 60, 마이너스 로 설정 하기 때문에 nginx 가 고장 이 났 을 때 ps - ef | grep - c nginx 는 결 과 를 얻 으 면 반드시 2 보다 적 고 1 (exit 1) 로 돌아 갑 니 다. 그래서 keepalived 서비스 가 감 측 된 결 과 는 가짜 이 고 priority 의 값 을 weight 의 값 으로 줄 이 고 90 을 얻 으 며 예비 서버 의 100 보다 작 으 며 vip 자원 을 자발적으로 방출 합 니 다.마찬가지 로 nginx 가 정상 으로 돌아 온 후에 ps - ef | grep - c nginx 가 얻 은 결 과 는 반드시 2 보다 크 고 0 (exit 0) 으로 돌아 갈 것 입 니 다. 그래서 keepalived 서비스 가 감 측 된 결 과 는 진실 입 니까? priority 값 이 변 하지 않 습 니까? 아니면 150 을 유지 합 니까? 예비 서버 보다 값 이 크 고 vip 자원 을 되 찾 습 니까?
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.