>  기사  >  운영 및 유지보수  >  로드 밸런싱을 달성하도록 Nginx 구성(그림)

로드 밸런싱을 달성하도록 Nginx 구성(그림)

angryTom
angryTom앞으로
2019-11-25 15:48:514039검색

기업은 일반적으로 높은 동시성 문제를 해결할 때 소프트웨어와 하드웨어라는 두 가지 처리 전략을 사용합니다. 하드웨어에서는 로드 밸런서를 추가하여 많은 요청을 분산합니다. 소프트웨어 측면에서는 높은 동시성 병목 현상이 발생할 때 솔루션을 추가할 수 있습니다. : 데이터베이스 + 웹 서버. 그 중 웹 서버의 프론트 레이어에 가장 일반적으로 사용되는 로드 추가 솔루션은 로드 밸런싱을 위해 nginx를 사용하는 것입니다.

로드 밸런싱을 달성하도록 Nginx 구성(그림)

1. 로드 밸런싱의 역할

1. 전달 기능

특정 알고리즘[가중치, 폴링]에 따라 클라이언트 요청을 다른 응용 프로그램 서버로 전달하여 단일에 대한 부담을 줄입니다. 서버. 시스템 동시성을 높입니다.

2. 오류 제거

하트비트 감지를 사용하여 현재 애플리케이션 서버가 정상적으로 작동할 수 있는지 확인합니다. 서버에 장애가 발생하면 요청이 자동으로 다른 애플리케이션 서버로 전송됩니다.

3. 복구 추가

(추천 학습: nginx 튜토리얼)

실패한 애플리케이션 서버가 작업을 재개한 것으로 감지되면 사용자 요청을 처리하는 팀에 자동으로 추가됩니다.

2. Nginx는 로드 밸런싱을 구현합니다.

또한 두 개의 Tomcat을 사용하여 두 개의 애플리케이션 서버를 시뮬레이션하며 포트 번호는 각각 8080과 8081입니다.

1 Nginx의 로드 분산 전략

Nginx의 업스트림은 현재 할당 알고리즘을 지원합니다.

1), 폴링 - 요청을 1:1로 순차적으로 처리(기본)

각 요청은 시간순으로 하나씩 다른 애플리케이션 서버에 할당되며, 애플리케이션 서버가 다운되면 자동으로 제거됩니다. 나머지 계속 폴링.

2), 가중치 - you can you up

가중치를 구성하여 폴링 확률을 지정하며, 가중치는 접속률에 비례하며, 애플리케이션 서버 성능이 고르지 않은 경우에 사용됩니다.

3), ip_hash 알고리즘

각 요청은 접속된 IP의 해시 결과에 따라 할당되므로 각 방문자는 애플리케이션 서버에 고정된 접속 권한을 가지게 되어 세션 공유 문제를 해결할 수 있습니다.

2. Nginx의 로드 밸런싱 및 배포 전략을 구성합니다

이는 다음과 같이 업스트림 매개변수에 애플리케이션 서버 IP를 추가한 후 지정된 매개변수를 추가하여 달성할 수 있습니다.

upstream tomcatserver1 {  
    server 192.168.72.49:8080 weight=3;  
    server 192.168.72.49:8081;  
}   
server {  
    listen 80;  
    server_name  8080.max.com;  
    #charset koi8-r;  
    #access_log  logs/host.access.log  main;  
   location / {  
      proxy_pass   http://tomcatserver1;  
      index  index.html index.htm;  
   }  
}

위 구성을 통해 달성할 수 있습니다. 8080에 접속할 때, max.com이 웹사이트인 경우 proxy_pass 주소가 구성되어 있으므로 모든 요청은 먼저 nginx 역방향 프록시 서버를 통과하게 됩니다. 서버가 요청을 대상 호스트인 업스트림 주소로 전달합니다. tomcatsever1을 읽고 배포 정책을 읽습니다. tomcat1의 가중치를 3으로 구성하면 nginx는 대부분의 요청을 서버 49(포트 8080)에 tomcat2로 보내 조건부 로드 밸런싱을 달성합니다. 물론 이 조건은 서버 1과 2의 하드웨어 인덱스입니다. 요청 처리 능력입니다.

3. nginx

upstream myServer {    
  
    server 192.168.72.49:9090 down;   
    server 192.168.72.49:8080 weight=2;   
    server 192.168.72.49:6060;   
    server 192.168.72.49:7070 backup;   
}

1) down

의 다른 구성은 주문 앞에 있는 서버가 일시적으로 로드에 참여하지 않는다는 의미입니다.

2) Weight

기본값은 1입니다. 짐의 무게가 더 커집니다.

3) max_fails

허용되는 요청 실패 횟수는 기본적으로 1입니다. 최대 횟수를 초과하면 Proxy_next_upstream 모듈에서 정의한 오류가 반환됩니다.

4) fall_timeout

max_fails 실패 후 일시 중지 시간입니다.

5) 백업

백업이 아닌 다른 머신이 모두 다운되거나 사용 중일 때 백업 머신을 요청하세요. 따라서 이 기계의 압력은 가장 낮습니다.

3. 고가용성을 위해 Nginx를 사용하세요

웹사이트의 고가용성을 달성하는 것 외에도, 즉 n개의 서버를 여러 대 제공하여 동일한 서비스를 게시하고, 로드 밸런싱 서버를 추가하여 요청을 분산시켜 각 서버가 높은 동시성으로 작동 상대적으로 포화된 요청을 처리할 수 있습니다. 마찬가지로, 로드 밸런싱 서버도 중단되면 후속 애플리케이션 서버가 중단되고 작동할 수 없게 되는 것을 방지하기 위해 로드 밸런싱 서버도 가용성이 높아야 합니다.

고가용성을 달성하기 위한 솔루션: 중복성을 추가합니다. 위의 단일 실패 지점을 방지하려면 n개의 nginx 서버를 추가하세요.

IV. 요약

요약하자면, 로드 밸런싱은 다양한 소프트웨어든 하드웨어 솔루션이든 주로 특정 규칙에 따라 다수의 동시 요청을 여러 서버에 분산시켜 특정 서버의 로드를 줄이는 것입니다. . 즉각적인 압력을 가하고 웹사이트의 동시성 방지 기능을 향상시킵니다. 저자는 nginx가 로드 밸런싱에 널리 사용되는 이유는 nginx.conf 파일이 nginx가 가상 서버를 생성하든, nginx 리버스 프록시 서버든, 이 기사에서 소개하는 nginx이든 대부분의 문제를 해결한다고 믿습니다. . 로드 밸런싱은 거의 항상 이 구성 파일에서 수행됩니다. 서버는 nginx를 설정하고 실행하는 역할만 담당합니다. 또한, 가볍고 서버 리소스를 너무 많이 차지하지 않고도 더 나은 결과를 얻을 수 있습니다.

위 내용은 로드 밸런싱을 달성하도록 Nginx 구성(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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