생산 환경의 Nginx 고가 용 방안

6122 단어
준비 작업:
192.168.16.128
192.168.16.129
가상 컴퓨터 두 대.설치 하기 NginxNginx 설치
원본 파일 업데이트 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 에는 메 일 알림 등 여러 가지 기능 이 있 습 니 다. 예 를 들 어 메 일 알림 등 은 작 동 하지 않 고 홈 페이지 에 가서 문 서 를 볼 수 있 습 니 다.

좋은 웹페이지 즐겨찾기