>  기사  >  운영 및 유지보수  >  Nginx 고가용성을 달성하는 방법

Nginx 고가용성을 달성하는 방법

PHPz
PHPz앞으로
2023-05-25 23:31:041207검색

준비:

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를 설치하세요:

냠 -y nginx 설치

작전 명령:

systemctl start nginx #Nginx 시작

systemctl nginx 중지 #Nginx 중지

고가용성이란 무엇입니까?

고가용성(High Availability) HA(High Availability)는 분산 시스템 아키텍처 설계 시 반드시 고려해야 할 요소 중 하나로, 일반적으로 설계를 통해 시스템이 서비스를 제공할 수 없는 시간을 줄이는 것을 의미합니다. 시스템이 항상 서비스를 제공할 수 있다면 가용성은 100%이지만 예상치 못한 상황이 발생합니다. 그래서 우리는 서비스 실패를 최대한 줄이기 위해 노력할 수밖에 없습니다.

문제가 해결됐나요?

프로덕션 환경에서 Nginx는 외부 서비스를 제공하기 위해 역방향 프록시로 사용되는 경우가 많습니다. 그러나 Nginx는 언젠가 서버 다운타임과 같은 오류에 직면하게 됩니다. Nginx가 다운되면 외부에서 제공되는 모든 인터페이스에 액세스할 수 없게 됩니다.

서버가 100% 사용 가능하다고 보장할 수는 없지만 이러한 비극을 피할 수 있는 방법을 찾아야 합니다. 오늘 우리는 Nginx

를 구현하기 위해 keepalived를 사용합니다. 고가용성.

이중 머신 핫 백업 솔루션

이 솔루션은 국내 기업에서 가장 일반적으로 사용되는 고가용성 솔루션입니다. 실제로 듀얼 서버 핫 백업은 한 서버가 서비스를 제공하고 다른 서버가 특정 서비스를 대기하는 상태를 의미합니다. 그의 장소.

연결 유지란 무엇입니까?

Keepalived 소프트웨어는 원래 LVS 클러스터 시스템의 각 서비스 노드 상태를 관리하고 모니터링하기 위해 LVS 로드 밸런싱 소프트웨어용으로 설계되었으며 나중에 고가용성 기능을 달성하기 위해 VRRP(Virtual Router Redundancy Protocol)를 추가했습니다. 따라서 Keepalived는 LVS 소프트웨어 관리 외에도 다른 서비스(예: Nginx, Haproxy, MySQL 등)에 대한 고가용성 솔루션 소프트웨어로 사용할 수도 있습니다

장애 조치 메커니즘

Keepalived 고가용성 서비스 간의 장애 조치 전송은 VRRP를 통해 구현됩니다.

Keepalived 서비스가 정상적으로 작동하면 마스터 노드는 백업 노드에 하트비트 메시지를 지속적으로 전송(멀티캐스트)하여 백업 노드에 아직 살아 있음을 알립니다. 마스터 노드가 실패하면 하트비트 메시지를 보낼 수 없으며 백업 노드는 따라서 노드는 더 이상 메인 마스터 노드의 하트비트를 감지할 수 없으므로 자체 인수 프로그램을 호출하여 메인 마스터 노드의 IP 자원 및 서비스를 인수합니다. 마스터 노드가 복구되면 백업 노드는 마스터 노드 장애 시 인수했던 IP 리소스와 서비스를 해제하고 원래의 백업 역할로 돌아갑니다.

구현 과정

연결 유지 설치

종속성을 자동으로 설치하는 yum 메소드를 사용하여 직접 설치할 수 있습니다.

냠 -y keepalived를 설치하세요

호스트(192.168.16.128) 연결 유지 구성 파일을 수정하세요

yum을 사용하여 설치하면 /etc/keepalived 아래에 구성 파일이 생성됩니다.

vi keepalived.conf

keepalived.conf:

#탐지스크립트

vrrp_script chk_http_port {

스크립트 "/usr/local/src/check_nginx_pid.sh" #nginx가 시작되었는지 감지하는 하트비트 실행 스크립트

간격 2 간격 2 #(스크립트 실행을 감지하는 간격, 단위는 초)

무게 2 }

#vrrp 인스턴스 정의 섹션

vrrp_instance VI_1 {

state MASTER # keepalived 역할을 지정합니다. MASTER가 기본 역할이고 BACKUP이 백업 역할입니다

인터페이스 ens33 # vrrp 통신을 위한 현재 네트워크 인터페이스 카드(현재 centos 네트워크 카드) ifconfig를 사용하여 특정 네트워크 카드를 확인하세요

Virtual_router_id 66 # 가상 경로 번호, 마스터 및 슬레이브는 항상 동일해야 합니다

Priority 100 # 우선순위, 값이 클수록 요청 처리 우선순위가 높아집니다

advert_int 1             # 간격 확인, 기본값은 1초(vrrp 멀티캐스트 주기 초)

#승인된액세스

인증 {

auth_type PASS #인증 유형과 비밀번호를 설정하세요. MASTER와 BACKUP은 정상적인 통신을 위해 동일한 비밀번호를 사용해야 합니다

auth_pass 1111

}

track_script {

          chk_http_port             #(통화 감지 스크립트)

}

virtual_ipaddress {

192.168.16.130 192.168.16.130 # 가상 IP(VIP)를 정의하면 한 줄에 하나씩 여러 개 설정할 수 있습니다

}

}

VIP는 virtual_ipaddress에서 구성할 수 있으며, VIP를 통해 온라인으로 서비스에 접속할 수 있습니다.

인터페이스는 서버 네트워크 카드에 따라 설정되어야 합니다. 일반적인 보기 방법은 ip addr

입니다. 백업 머신에 대한 인증 구성 승인 액세스에도 동일한 구성이 필요합니다

백업 머신(192.168.16.129) 연결 유지 구성 파일을 수정하세요

keepalived.conf:

#탐지스크립트

vrrp_script chk_http_port {

스크립트 "/usr/local/src/check_nginx_pid.sh" #nginx가 시작되었는지 감지하는 하트비트 실행 스크립트

간격 2 간격 2 #(스크립트 실행을 감지하는 간격)

무게 2 }

#vrrp 인스턴스 정의 섹션

vrrp_instance VI_1 {

state BACKUP # keepalived 역할을 지정합니다. MASTER가 기본 역할이고 BACKUP이 백업 역할입니다. 인터페이스 ens33                         # vrrp 통신을 위한 현재 네트워크 인터페이스 카드(현재 centos 네트워크 카드) ifconfig를 사용하여 특정 네트워크 카드를 확인하세요

virtual_router_id 66 # 가상 경로 번호, 마스터 및 슬레이브는 항상 동일해야 합니다. 우선순위 99                                                                                                      ~                                                    ​ 광고_INT 1 ​ #승인된액세스

인증 {

auth_type PASS #인증 유형과 비밀번호를 설정하세요. MASTER와 BACKUP은 정상적인 통신을 위해 동일한 비밀번호를 사용해야 합니다

auth_pass 1111

}

track_script {

chk_http_port }

Virtual_i주소 {

192.168.16.130 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 #Restart nginx

[ `ps -C nginx --no-header |wc -l` -eq 0 ]; #nginx가 다시 시작되지 않으면 연결 유지 서비스를 중지하고 VIP 전송을 수행하세요

+                                 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이 표시됩니다.

이때 192.168.16.128 메인 서버는

명령을 실행합니다. systemctl nginx 중지 #nginx 중지

vip(192.168.16.130)를 다시 방문하여 페이지가 여전히 192.168.16.128로 표시되는지 확인하세요. 이는 스크립트에서 자동으로 다시 시작되는 것입니다.

이제 192.168.16.128 서버를 직접 닫고 여기 VIP(192.168.16.130)를 방문하면 페이지에 192.168.16.129가 표시됩니다. 이때 연결 유지는 자동으로 장애 조치되며 엔터프라이즈 수준 프로덕션 환경을 위한 고가용성 솔루션입니다. 설립되었습니다.

위 내용은 Nginx 고가용성을 달성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제