nginx 복습 009 keepalived 고가 용 방안
1 > 높 은 가용성 이 무엇 인지 전문 적 인 구조 디자인 을 통 해 전체 시스템 의 고장 시간 을 줄 이 고 서 비 스 를 제공 하 는 높 은 가용성 을 유지 하 는 것 을 말한다.
- nginx 를 부하 균형 서버 로 사용 할 때 upstream 체 제 는 백 엔 드 서버 가 사용 가능 한 지 여 부 를 감지 할 수 있 습 니 다. 만약 에 한 대의 서버 가 다운 되면 nginx 는 백 엔 드 의 정상 적 인 서버 로 자동 으로 이동 하여 시스템 이 지속 적 으로 사용 가능 하도록 유지 할 수 있 습 니 다. - 클 러 스 터 의 높 은 가용성 은 단일 고장 이 없 는 것 으로 평가 합 니 다.즉, 그 중의 어떤 서버 가 다운 되 어도 전체 서비스 가 중단 되 지 않 습 니 다. - 한 클 러 스 터 의 전단 에 nginx 역방향 프 록 시 부하 균형 서버 만 있 으 면 이 서버 가 고장 나 면 전체 클 러 스 터 의 서비스 가 중단 됩 니 다.
– 이 문 제 를 해결 하기 위해 keepalived 를 이용 하여 예비 서버 를 배치 하여 고장 전 이 를 실현 할 수 있 습 니 다. Keepalived 는 VRRP (Virtual Router Redundancv Protocol, 가상 경로 중복 프로 토 콜) 기능 을 내장 하고 있 습 니 다. VRRP 는 정적 경로 에 발생 하 는 단일 고장 문 제 를 해결 하 는 데 사 용 됩 니 다. ip 멀티캐스트 방식 으로 통신 합 니 다. 메 인 경로 가 고장 난 것 을 발견 하면선거 전략 을 통 해 예비 경 로 를 주요 경로 로 바 꾸 어 서 비 스 를 계속 제공한다.
– Keepalived 는 VRRP 를 이용 하여 대외 방문 을 제공 하 는 IP 주소 (Virtual IP) 를 실현 하여 주 서버 (Master) 와 예비 서버 (Backup) 사이 에서 자동 으로 전환 합 니 다.
정상 적 인 상황 에서 Master 는 Virtual IP 를 사용 하여 대외 방문 을 제공 합 니 다. Master 가 고장 이 났 을 때 Master 를 감시 하고 있 는 다른 Backer 는 우선 순위 (priority) 체 제 를 통 해 Virtual IP 를 경쟁 적 으로 관리 하고 대외 적 으로 서 비 스 를 계속 제공 합 니 다. 다른 떨 어 진 Backup 은 현재 사용 하고 있 는 Virtual IP 서버 를 계속 감시 합 니 다.
– 고가 용 실험 환경의 구축 사고방식 역할 | RIP (Real IP) | VIP (Virtual IP) | 설명 Master 192.168.158.131 192.168.158.20 nginx + Keepalived Backup 192.168.158.132 192.168.158.132 nginx + Keepalived - 192.168.158.133 - 백 엔 드 서버 1 - 192.168.158.134 - 백 엔 드 서버 2
– Keepalived 서비스 설치 및 설정 1 > 홈 서버 배치 – nginx 설치 – keepalived 다운로드 컴 파일 설치
tar -zxvf keepalived-1.2.24.tar.gz
cd keepalived-1.2.24
./configure
make && make install && cd ..
시스템 서비스 에 추가, 부팅 설정
cd /usr/local/etc/rc.d/init.d
cp keepalived /etc/init.d/keepalived
chmod +x /etc/init.d/keepalived
chkconfig keepalived on
링크 프로필
cd /usr/local/etc/sysconfig
ln -s `pwd`/keepalived /etc/sysconfig/keepalived
링크 파일
cd /usr/local/sbin
ln -s `pwd`/keepalived /usr/sbin/keepalived
– 홈 서버 를 설정 한 keepalived 가 keepalived 를 시작 하기 전에 설정 파일 을 만들어 야 합 니 다. keepalived 는 설정 파일 의 설정 에 따라 작업 합 니 다.
다음 명령 을 실행 하면 keepalived 의 프로필 템 플 릿 을 볼 수 있 습 니 다. 이 파일 은 참고 설정 을 제공 합 니 다.
less /usr/local/etc/keepalived/keepalived.conf
keepalived 서비스 스 크 립 트 에서 기본 으로 불 러 온 프로필 경 로 는 '/ etc / keepalived / keepalived. conf' 입 니 다. 현재 이 파일 은 존재 하지 않 습 니 다. 수 동 으로 만들어 야 합 니 다.
mkdir /etc/keepalived
vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 21
mcast_src_ip 192.168.158.131
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.158.20
}
}
시작 보기
service keepalived start
ps aux | grep keepalived
ip a | grep 192.168.158.20
2 > 예비 서버 복제 메 인 서버 배치, keepalived 프로필 수정
vrrp_instance VI_1 {
state BACKUP
priority 90
......
}
Master 와 Backup 서버 의 keepalived 는 VRRP 의 112 포트 를 통 해 통신 합 니 다. 포트 에 접근 할 수 없 으 면 가상 IP 주 소 를 동시에 차지 합 니 다 – 방화벽 규칙 설정
#
iptables -I INPUT -s192.168.158.131 -p112 -jACCEPT
service iptables save
#
iptables -I INPUT -s192.168.158.132 -p112 -jACCEPT
service iptables save
- keepalived 를 사용 하여 nginx 서 비 스 를 감시 합 니 다 1 > 사고 방향 을 실현 합 니 다. keepalived 를 사용 하면 다른 서버 의 keepalived 가 정상 인지 아 닌 지 를 감시 할 수 있 을 뿐만 아니 라 본 컴퓨터 의 특정한 서비스 가 정상 인지 모니터링 할 수 있 습 니 다.
다음은 keepalived 를 이용 하여 nginx 프로 세 스 가 정상적으로 작 동 하 는 지 모니터링 합 니 다. nginx 에 문제 가 발생 하면 nginx 를 다시 시작 하려 고 합 니 다. nginx 를 다시 시작 한 후에 도 작 동 하지 않 으 면 이 컴퓨터 의 keepalived 서 비 스 를 중단 하고 다른 예비 서버 가 가상 IP 를 자동 으로 연결 하도록 합 니 다.
2 > 자동 모니터링 nginx keepalived 프로필 수정
vrrp_script chk_nginx { # nginx
script "/chk_nginx.sh" #
interval 2 # 2
weight -20 # ,
}
vrrp_instance VI_1 { # VI_1
......
track_script {
chk_nginx
}
}
모니터링 스 크 립 트 만 들 기
vim /chk_nginx.sh
#! /bin/bash
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
service nginx start
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
service keepalived stop
fi
fi
chmod +x /chk_nginx.sh
service keepalived reload
nginx 재 부팅 여부 테스트
service nginx stop
ps -C nginx --no-header
– 다시 시작 할 수 없 으 면 예비 서버 로 전환 할 지 여부 – \ # 수 동 테스트 가 지연 되 어 스 크 립 트 로 실행 합 니 다.
cd /usr/local/nginx/sbin
vi test.sh
#! /bin/bash
service nginx stop
chmod -x nginx
chmod +x test.sh
./test.sh
– 최근 에 이게 괜 찮 더 라 고요.https://blog.csdn.net/xyang81/article/details/52556886
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.