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

Nginx 고가용성 방법

WBOY
WBOY앞으로
2023-05-31 15:04:061411검색

준비 작업:

Nginx 고가용성 방법

​192.168.16.128

​192.168.16.129

두 개의 가상 머신. Nginx 설치

​Nginx 설치

yum 소스 파일 업데이트:

rpm-ivhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

​wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo

​Nginx 설치:

​ yum-yinstallnginx

작전 명령:

systemctlstartnginx;#Nginx 시작

systemctlstopnginx;#stopNginx

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

고가용성(High Availability) HA(HighAvailability)는 분산 시스템 아키텍처 설계 시 반드시 고려해야 할 요소 중 하나로, 일반적으로 설계를 통해 시스템이 서비스를 제공할 수 없는 시간을 줄이는 것을 의미합니다. 시스템이 항상 서비스를 제공할 수 있다면 가용성은 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을 사용하여 직접 설치할 수 있습니다.

​ yum-yinstallkeepalived

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

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

vikeepalived.conf

keepalived.conf:

​ #탐지스크립트

vrrp_scriptchk_http_port{

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

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

무게2# 무게

}

​ #vrrp 인스턴스 정의 부분

vrrp_instanceVI_1{

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

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

​virtual_router_id66#가상 경로 번호, 마스터와 슬레이브는 항상 있어야 합니다

우선순위100#우선순위, 값이 클수록 요청을 받고 처리하는 우선순위가 높아집니다

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

​ #AuthorizedAccess

인증{

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

auth_pass1111

}

track_script{

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

}

virtual_ipaddress{

​192.168.16.130#가상IP(VIP) 정의, 한 줄에 하나씩 2개 이상 설정할 수 있습니다

}

}

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

서버 네트워크 카드에 따라 인터페이스를 설정해야 합니다. 일반적인 보기 방법은 ipaddr

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

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

keepalived.conf:

​ #탐지스크립트

vrrp_scriptchk_http_port{

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

간격2#(탐지 스크립트 실행 간격)

무게2# 무게

}

​ #vrrp 인스턴스 정의 부분

vrrp_instanceVI_1{

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

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

​virtual_router_id66#가상 라우팅 번호, 마스터와 슬레이브는 항상 있어야 합니다

Priority99#우선순위, 값이 클수록 요청을 받고 처리하는 우선순위가 높아집니다

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

​ #AuthorizedAccess

인증{

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

auth_pass1111

}

track_script{

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

}

virtual_ipaddress{

​192.168.16.130#가상IP(VIP) 정의, 한 줄에 하나씩 2개 이상 설정할 수 있습니다

}

}

감지 스크립트:

​ #!/bin/bash

​ #nginx가 시작되었는지 감지

A=`ps-Cnginx--no-header|wc-l`

​if[$A-eq0];then#nginx가 시작되지 않은 경우 nginx를 시작하세요

systemctlstartnginx#nginx 다시 시작

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

killallkeepalived

Fi

Fi

스크립트 인증: chmod775check_nginx_pid.sh

참고: 스크립트는 승인되어야 합니다. 그렇지 않으면 액세스 권한이 없습니다. 여기서는 VIP(virtual_ipaddress:192.168.16.130)를 실행하는 두 대의 서버가 있으며 프로덕션 환경에서 VIP를 통해 직접 서비스에 액세스합니다.

nginx 실패 시뮬레이션:

두 서버가 기본적으로 액세스하는 Nginx html 페이지를 차이점으로 수정합니다.

먼저 VIP를 통해 192.168.16.130에 접속합니다. 페이지에 192.168.16.128이 표시되어 현재 메인 서버에서 제공하는 서비스임을 알 수 있습니다.

이때 192.168.16.128 메인 서버는

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

VIP(192.168.16.130)를 다시 방문했을 때 192.168.16.128 페이지가 계속 표시되는 것을 발견했습니다. 이는 스크립트에서 자동으로 다시 시작되는 것입니다.

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

Keepalived에는 이메일 알림 등과 같은 많은 기능이 있지만 작동할 수는 없습니다. 공식 웹사이트로 이동하여 설명서를 읽어보세요.

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

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