생산 환경의 Nginx 고가 용 방안
192.168.16.128
192.168.16.129
가상 컴퓨터 두 대.설치 하기
Nginx
Nginx 설치원본 파일 업데이트
yum
:rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
Nginx 설치:
yum -y install nginx
작업 명령:
systemctl start nginx; # Nginx
systemctl stop nginx; # Nginx
무엇이 고가 용 입 니까?
고가 용 HA (High Availability) 는 분포 식 시스템 구조 디자인 에서 반드시 고려 해 야 할 요소 중 하나 로 디자인 을 통 해 시스템 이 서 비 스 를 제공 하지 못 하 는 시간 을 줄 이 는 것 을 말한다.만약 한 시스템 이 계속 서 비 스 를 제공 할 수 있다 면, 이 가용성 은 100% 이지 만, 하늘 에는 예측 할 수 없 는 풍운 이 있다.그래서 우 리 는 가능 한 한 서비스의 고장 을 줄 일 수 밖 에 없다.
해 결 된 문제?
생산 환경 에서
Nginx
역방향 대리 로 대외 적 으로 서 비 스 를 제공 하 는 경우 가 많 지만 하루 에 Nginx 는 고장 을 피 할 수 없다. 예 를 들 어 서버 가 다운 되 는 것 이다.Nginx
지연 되면 모든 대외 적 으로 제공 하 는 인 터 페 이 스 는 접근 할 수 없 게 될 것 이다.서버 가 100% 사용 가능 하 다 는 보장 은 없 지만 이런 비극 을 피 할 방법 도 강구 해 야 합 니 다. 오늘 우 리 는
keepalived
을 사용 하여 실현 합 니 다 Nginx
.매우 유용 하 다.
이중 열 준비 방안
이런 방안 은 국내 기업 에서 가장 보편적 인 고가 용 방안 이다. 쌍방 향 열 비 는 사실상 한 대의 서버 가 서 비 스 를 제공 하고 다른 한 대의 특정한 서 비 스 를 위 한 예비 상 태 를 가리 키 며 한 대의 서버 가 다른 한 대 를 사용 할 수 없 으 면 대 체 될 것 이다.
keepalived 가 뭐 예요?
Keepalived
소프트웨어 는 처음에 LVS
부하 균형 소프트웨어 를 위해 디자인 되 었 고 LVS 클 러 스 터 시스템 에서 각 서비스 노드 의 상 태 를 관리 하고 감시 하 는 데 사용 되 었 으 나 나중에 높 은 사용 가능 한 VRRP (Virtual Router Redundancy Protocol , )
기능 을 추가 했다.따라서 Keepalived
LVS 소프트웨어 를 관리 할 수 있 는 것 외 에 다른 서비스 ( :Nginx、Haproxy、MySQL )
의 고가 용 솔 루 션 소프트웨어 로 도 사용 할 수 있다.고장 전이 메커니즘
Keepalived
고가 용 서비스 간 의 고장 전환 전 이 는 VRRP
을 통 해 이 루어 진다.Keepalived
서비스 가 정상적으로 작 동 할 때 주 Master
노드 는 준비 노드 에 심장 박동 메 시 지 를 계속 보 내 고 준비 Backup
노드 가 자신 이 살아 있다 는 것 을 알려 준다. 주 Master
노드 가 고장 이 났 을 때 심장 박동 메 시 지 를 보 낼 수 없고 준비 노드 도 이 로 인해 자주 Master
노드 의 심장 박동 을 계속 감지 할 수 없다.그래서 자신의 인수 프로그램 을 호출 하여 주 Master 노드 의 IP 자원 과 서 비 스 를 인수 합 니 다.한편, 메 인 마스터 노드 가 회복 되면 백업 노드 가 메 인 노드 가 고장 났 을 때 자신 이 관리 하 는 IP 자원 과 서 비 스 를 방출 하여 원래 의 예비 역할 로 복원 합 니 다.실현 과정
keepalived 설치
yum
방식 으로 직접 설치 하면 됩 니 다. 이 방식 은 자동 으로 의존 도 를 설치 합 니 다.yum -y install keepalived
호스트 수정 (192.168.16.128) keepalived 프로필
yum
방식 으로 설 치 된 생산 프로필 은 /etc/keepalived
아래 에 있 습 니 다.vi keepalived.conf
keepalived.conf:
#
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh" # , nginx
interval 2 #( , )
weight 2 #
}
#vrrp
vrrp_instance VI_1 {
state MASTER # keepalived ,MASTER ,BACKUP
interface ens33 # vrrp ( centos ) ifconfig
virtual_router_id 66 # ,
priority 100 # , ,
advert_int 1 # , 1s(vrrp )
#
authentication {
auth_type PASS # ,MASTER BACKUP
auth_pass 1111
}
track_script {
chk_http_port #( )
}
virtual_ipaddress {
192.168.16.130 # ip(VIP), ,
}
}
virtual_ipaddress
안에 vip 를 설정 할 수 있 고 온라인 에서 vip 를 통 해 서 비 스 를 방문 할 수 있 습 니 다.interface
서버 네트워크 카드 에 따라 일반 보기 방식 ip addr
을 설정 해 야 합 니 다.authentication
권한 부여 접근 예비 기 설정 도 같은 설정 이 필요 합 니 다.예비 장치 수정 (192.168.16.29) keepalived 프로필
keepalived.conf:
#
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh" # , nginx
interval 2 #( )
weight 2 #
}
#vrrp
vrrp_instance VI_1 {
state BACKUP # keepalived ,MASTER ,BACKUP
interface ens33 # vrrp ( centos ) ifconfig
virtual_router_id 66 # ,
priority 99 # , ,
advert_int 1 # , 1s(vrrp )
#
authentication {
auth_type PASS # ,MASTER BACKUP
auth_pass 1111
}
track_script {
chk_http_port #( )
}
virtual_ipaddress {
192.168.16.130 # ip(VIP), ,
}
}
스 크 립 트 검사:
#!/bin/bash
# nginx
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then # nginx nginx
systemctl start nginx # nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #nginx , keepalived , VIP
killall keepalived
fi
fi
스 크 립 트 인증:
chmod 775 check_nginx_pid.sh
설명: 스 크 립 트 는 권한 을 부여 해 야 합 니 다. 그렇지 않 으 면 접근 할 수 없습니다. 여기 서 저희 두 서버 가 실 행 됩 니 다. VIP(virtual_ipaddress:192.168.16.130)
저 희 는 생산 환경 에서 VIP 를 통 해 서 비 스 를 직접 방문 합 니 다.시 뮬 레이 션
nginx
고장:두 서버 가 기본적으로 접근 하 는
Nginx
페이지 를 수정 합 니 다.먼저 방문
html
하고 192.168.16.130
을 통 해 방문 하 며 페이지 표시 vip
;현재 메 인 서버 가 제공 하 는 서비스 임 을 설명 합 니 다.이 때
192.168.16.128
홈 서버 에서 명령 을 실행 합 니 다:systemctl stop nginx; # nginx
재 방문
192.168.16.128
이 때 페이지 에 표 시 된 것 은 다음 과 같 습 니 다. vip(192.168.16.130)
스 크 립 트 에서 자동 으로 다시 시작 합 니 다.현재
192.168.16.128
서버 를 직접 닫 습 니 다. 이 방문 192.168.16.128
에서 페이지 디 스 플레이 vip(192.168.16.130)
가 발견 되 었 을 때 192.168.16.129
자동 고장 으로 이전 되 었 고 기업 급 생산 환경의 높 은 사용 가능 한 방안 이 구축 되 었 습 니 다.keepalived
에는 메 일 알림 등 여러 가지 기능 이 있 습 니 다. 예 를 들 어 메 일 알림 등 은 작 동 하지 않 고 홈 페이지 에 가서 문 서 를 볼 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.