> 운영 및 유지보수 > 엔진스 > nginx를 클러스터링할 수 있나요?

nginx를 클러스터링할 수 있나요?

藏色散人
풀어 주다: 2019-08-28 12:00:56
원래의
8247명이 탐색했습니다.

nginx를 클러스터링할 수 있나요?

nginx를 클러스터링할 수 있나요?

nginx는 클러스터 고가용성을 실현합니다

NGINX는 역방향 프록시 서버로서 로드 밸런싱을 달성할 수 있고 정적 파일 서버로도 사용할 수 있다는 것이 특징입니다. 단일 머신에서 지원할 수 있다는 것입니다. 동시에 30,000개의 동시 실행. 이제 많은 웹사이트에서 NGINX를 게이트웨이 포털로 사용하여 백엔드 리소스를 균일하게 예약하고 할당합니다. 그러나 NGINX가 다운되면 전체 백엔드 서비스를 사용할 수 없게 되거나 동시성이 100,000 수준에 도달할 정도로 매우 큰 경우에도 하나의 NGINX에는 여전히 한계가 있으므로 이때 마스터-슬레이브 작업을 수행해야 합니다. NGINX에서 백업은 서비스의 고가용성을 보장하고 클러스터는 동시성 압력을 공유하는 데 사용됩니다. 현재 NGINX는 이 두 영역에서 주로 다음과 같은 솔루션을 가지고 있습니다.

NGINX 마스터-슬레이브 백업

NGINX가 마스터-슬레이브 백업을 구현하는 현재 주류 솔루션은 Keepalived+Nginx입니다. 이중 머신 핫 백업을 달성합니다.

Keepalived 소개:

Keepalived는 IP 단일 실패 지점을 방지하는 데 사용할 수 있는 VRRP 프로토콜 기반의 서비스 고가용성 솔루션입니다. 그러나 일반적으로 단독으로 나타나지 않고 다른 로드 밸런싱 기술(예: lvs, haproxy, nginx)과 함께 작동하여 클러스터의 고가용성을 달성합니다.

VRRP 프로토콜:

VRRP는 가상 라우터 중복 프로토콜인 Virtual Router Redundancy Protocol을 나타냅니다. 라우터의 고가용성을 달성하기 위한 내결함성 프로토콜로 간주할 수 있습니다. 동일한 기능을 제공하는 N개의 라우터가 라우터 그룹으로 구성됩니다. 이 그룹에는 마스터와 여러 개의 백업이 있지만 외부에서는 하나의 라우터처럼 보입니다. , 가상 IP(라우터가 위치한 LAN에 있는 다른 시스템의 기본 경로인 vip)를 사용하여 가상 라우터를 구성합니다. 이 IP를 소유한 마스터는 실제로 ARP 응답 및 IP 데이터 패킷 전달을 담당합니다. 그룹의 다른 라우터는 대기 역할을 합니다. 마스터는 멀티캐스트 메시지를 보냅니다. 백업이 시간 초과 기간 내에 vrrp 패킷을 수신할 수 없으면 마스터는 다운된 것으로 간주됩니다. 이때 고가용성을 보장하려면 VRRP 우선 순위에 따라 백업을 마스터로 선택해야 합니다. 라우터의.

VRRP 프로토콜 구현에서 가상 라우터는 00-00-5E-00-01-XX를 가상 MAC 주소로 사용합니다. XX는 고유한 VRID(Virtual Router IDentifier)입니다. 동시. 가상 라우터의 물리적 라우터 그룹에서는 멀티캐스트 IP 주소 224.0.0.18을 통해 정기적으로 알림 메시지가 전송됩니다. 각 라우터는 1-255 사이의 우선순위 레벨을 가지며, 가장 높은 우선순위가 마스터 라우터가 됩니다. 마스터의 우선순위를 낮추면 백업 상태의 라우터가 메인 라우터의 상태를 선점(pro-empt)할 수 있으며, 백업 우선순위가 동일한 두 IP 주소 중 더 큰 쪽이 마스터가 되어 가상 IP를 인수하게 됩니다.

구체적인 구현 원칙:

1) 마스터가 다운되지 않은 경우 마스터가 VIP를 점유하고 nginx가 마스터에서 실행됩니다.

2) 마스터가 다운된 경우 백업이 VIP를 점유하고 nginx를 실행합니다.

3) 마스터 서버의 nginx 서비스가 다운되면 VIP 리소스가 백업 서버로 이동됩니다

4) 백엔드 서버의 상태를 확인하세요

마스터와 서버 모두 Keepalived 서비스 중 하나가 중지되면 백업은 마스터 또는 백업에 관계없이 nginx 서비스를 활성화합니다. VIP는 keepalived 서비스가 여전히 실행 중인 노드로 이동합니다.

nginx를 클러스터링할 수 있나요?

NGINX 및 keepalived 설치 구성

설치 구성이 다양하고 상호 모니터링, 알람 등을 구현하기 위한 스크립트도 작성할 수 있으므로 특별히 해결 방법과 원리를 주로 다루는 강의를 들어보겠습니다.

NGINX 분산 클러스터

여러 NGINX로 로드 밸런싱을 수행하려면

1 각 nginx에는 도메인 이름에 동일한 도메인 이름의 여러 방향을 설정하는 것이 가장 쉬운 방법입니다. 라운드 로빈을 달성하기 위해. 그러나 결함 차단 속도는 느려집니다.

2. 하나의 공용 네트워크 nginx는 업스트림 기능, 휠, IP 및 URL을 통해 인트라넷의 여러 nginx에 배포됩니다. 하지만 공용 네트워크의 nginx가 다운되면 내부 네트워크 전체가 영향을 받습니다.

3. 한 쌍의 공용 네트워크 nginx와 3개의 공용 네트워크 IP를 사용하여 Keepalive를 통해 고가용성을 달성한 다음 인트라넷으로 업스트림합니다(이전 섹션에서 방금 설명한 마스터-슬레이브 백업입니다).

일반적으로 위의 1, 2, 3가지 방법으로 기본적으로 문제를 해결할 수 있으며, 2, 3을 사용하는 것이 좋습니다.

동시성이 정말 크다면 일반적으로 하드웨어 F5와 DNS 및 CDN과 함께 로드 밸런싱을 위한 기타 장비 서비스 제공업체와 협력하여 도메인 이름 확인 전달 및 캐시 구성을 수행합니다. 이는 대부분의 주요 제조업체의 현재 아키텍처 구성이기도 합니다.

더 많은 Nginx 관련 기술 기사를 보려면 Nginx 사용법 튜토리얼 칼럼을 방문하세요!

위 내용은 nginx를 클러스터링할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿