> 백엔드 개발 > PHP 튜토리얼 > Nginx 로드 밸런싱 구성 예시에 대한 자세한 설명

Nginx 로드 밸런싱 구성 예시에 대한 자세한 설명

WBOY
풀어 주다: 2016-08-08 09:21:03
원래의
1016명이 탐색했습니다.

[소개] 로드 밸런싱은 트래픽이 많은 웹사이트에서 해야 할 일입니다. 이제 Nginx 서버에서의 로드 밸런싱 구성 방법을 소개하겠습니다. 필요한 학생들에게 도움이 됩니다. 로드 밸런싱 먼저 로드 밸런싱이 무엇인지 간단히 알아보겠습니다. 말 그대로 이해하고, Nginx 서버의 로드 밸런싱 구성 방법을 소개해 드리고자 합니다.

로드 밸런싱

먼저 로드 밸런싱이 무엇인지 간단히 알아보겠습니다. 말 그대로 이해하면 N개의 서버를 설명할 수 있습니다. 특정 서버의 부하가 높아 특정 서버가 유휴 상태가 되지 않습니다. 그러면 로드 밸런싱의 전제는 여러 서버에서 달성할 수 있다는 것입니다. 즉, 두 대 이상의 서버이면 충분합니다. 테스트 환경

서버가 없기 때문에 이번 테스트에서는 지정된 도메인명을 직접 호스팅한 후 VMware에 CentOS 3개를 설치하는 방식으로 진행됩니다.

테스트 도메인 이름: a.com

A 서버 IP: 192.168.5.149(메인)

B 서버 IP: 192.168.5.27

C 서버 IP :192.168.5.126

배포 아이디어

A서버를 메인 서버로 사용하고, 도메인 이름은 A서버(192.168.5.149)로 직접 해석되며, A서버는 B서버(192.168.5.149)로 로드밸런싱됩니다. 192.168.5.27) 및 서버의 C(192.168.5.126).

도메인 이름 확인


실제 환경이 아니기 때문에 도메인 이름은 테스트용 a.com일 뿐이므로 a.com의 확인은 a.com에서만 설정할 수 있습니다. 호스트 파일.

열기: C:WindowsSystem32driversetchosts

a.com 끝에

192.168.5.149 추가

저장하고 종료한 후 명령 모드를 시작하고 ping 성공적으로 설정되었는지 확인하려면

스크린샷에서 a.com이 192.168.5.149IP로 성공적으로 확인되었습니다.

서버 nginx.conf 설정

nginx.conf 파일을 엽니다. 위치는 해당 디렉토리의 nginx 설치 conf 디렉토리에 있습니다.

http 섹션에 다음 코드를 추가하세요

upstream a.com {
server 192.168.5.126:80;

server

}

서버{
듣기
server_name a.com
위치 / {
Proxy_pass http://a.com; 호스트 $host; Proxy_set_header X -Real-IP $remote_addr;
Proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
nginx.conf를 열고 http 섹션

server{
에 다음 코드를 추가하세요. ;
server_name a.com;
index index.html;
root /data0 /htdocs/www; nginx를 저장하고 다시 시작하세요

🎜>a.com 접속시 어느 서버로 이전할지 구분하기 위해 각각 B와 C로 이동하여 구분을 위해 서버 아래에 다른 내용의 index.html 파일을 작성합니다.

브라우저를 열어 a.com에 접속하세요. 새로고침을 하면 모든 요청이 메인 서버(192.168.5.149)에 의해 서버 B(192.168.5.27)와 서버 C(192.168.5.126)로 분배되는 것을 볼 수 있습니다. .로드 밸런싱 효과를 얻었습니다.

B 서버 처리 페이지

C 서버 처리 페이지


서버 중 하나가 다운되면 어떻게 되나요?
서버가 다운되면 액세스에 영향이 있나요?

먼저 예시를 살펴보겠습니다. 위의 예시를 바탕으로 머신 C 서버 192.168.5.126이 다운됐다고 가정하겠습니다. (다운타임 시뮬레이션이 불가능해서 C 서버를 종료했습니다.) 그런 다음 다시 방문하세요.

접속 결과:

C 서버(192.168.5.126)가 다운되었음에도 불구하고 웹사이트 접속에는 영향을 미치지 않은 것으로 확인되었습니다. 이렇게 하면 특정 시스템이 로드 밸런싱 모드에서 다운되어 전체 사이트를 끌어 내리는 것에 대해 걱정할 필요가 없습니다.


b.com에서도 로드 밸런싱을 설정해야 하면 어떻게 되나요?

a.com 설정과 동일하게 매우 간단합니다. 다음과 같습니다.

b.com의 기본 서버 IP가 192.168.5.149이고 로드가 192.168.5.150 및 192.168.5.151 시스템으로 분산되어 있다고 가정합니다.

이제 도메인 이름을 확인합니다. IP의 경우 b.com에서 192.168.5.149로 연결됩니다.

메인 서버(192.168.5.149)의 nginx.conf에 다음 코드를 추가하세요.

업스트림 b.com {
서버 192.168.5.150:80;
서버 192.168.5.151:80;

서버{
청취
server_name; b.com; 위치 / {
프록시_패스 http://b.com;
프록시_세트_헤더 호스트 $host
프록시_세트_헤더 X-Real-IP
프록시_세트_헤더 X-포워드 - For$proxy_add_x_forwarded_for;
listen 80;
server_name b.com> index index.html;
nginx를 저장하고 다시 시작하세요

다음 단계를 완료한 후 b.com의 로드 밸런싱 구성을 구현할 수 있습니다.

메인 서버에서는 서비스를 제공할 수 없나요?

위 예시에서는 메인 서버의 로드 밸런싱을 다른 서버에 적용하였기 때문에 메인 서버 자체를 서버 목록에 추가할 수 있도록 하여 서버를 순전히 포워딩 기능으로만 사용하는 낭비가 없도록 하겠습니다. , 그리고 예, 당사는 서비스 제공에도 참여하고 있습니다.


위의 경우와 마찬가지로 서버 3개:

A 서버 IP: 192.168.5.149(메인)

B 서버 IP: 192.168.5.27

C 서버 IP: 192.168.5.126

도메인 이름을 서버 A로 확인한 다음 이를 서버 A에서 서버 B와 서버 C로 전달합니다. 그러면 서버 A는 전달 기능만 수행합니다. 사이트 서비스도 제공합니다.

먼저 분석해 보겠습니다. 업스트림에 메인 서버를 추가하면 다음과 같은 두 가지 상황이 발생할 수 있습니다.

1. 메인 서버가 다른 IP로 포워딩되고, 다른 IP 서버는 정상입니다. .

2. 메인 서버가 자신의 IP로 전달한 후, 메인 서버로 가서 IP를 할당하면 항상 로컬 머신에 할당되므로 무한 루프가 발생합니다.

이 문제를 어떻게 해결하나요? 포트 80은 로드 균형 조정 처리를 모니터링하는 데 사용되었기 때문에 이 서버에서 a.com에 대한 액세스 요청을 처리하는 데 더 이상 포트 80을 사용할 수 없으며 새 포트를 사용해야 합니다. 그래서 우리는 메인 서버의 nginx.conf에 다음 코드를 추가했습니다:

server{

Listen 8080;

index index.html; /data0 /htdocs/www;

}

nginx를 다시 시작하고 브라우저에 a.com:8080을 입력하여 액세스할 수 있는지 확인하세요. 결과적으로 정상적으로 접근이 가능합니다

정상적으로 접근이 가능하기 때문에 업스트림에 메인 서버를 추가하면 되지만, 다음 코드와 같이 포트를 변경해야 합니다.

업스트림 a.com {

서버 192.168.5.126:80;

서버 192.168.5.27:80;

서버 127.0.0.1:8080

}

기본 서버 IP가 192.168이므로 .5.149 또는 1을 여기에 추가할 수 있습니다. 27.0 .0.1은 괜찮습니다. 둘 다 자신에 대한 액세스를 의미합니다.

Nginx를 다시 시작한 후 a.com을 방문하여 메인 서버에 할당되는지 확인하세요.

메인서버에서도 정상적으로 서비스 참여가 가능합니다.

마지막으로

첫째, 로드 밸런싱은 nginx에만 있는 것이 아닙니다. 유명한 Dingding Apache에도 있지만 성능이 nginx만큼 좋지 않을 수 있습니다.

2. 여러 서버가 서비스를 제공하지만 도메인 이름은 메인 서버로만 확인되며, 핑을 하지 않고도 실제 서버 IP를 얻을 수 있어 어느 정도 보안이 강화됩니다.

3. 업스트림의 IP가 반드시 내부 네트워크일 필요는 없으며, 외부 네트워크 IP도 사용할 수 있습니다. 그러나 전형적인 경우는 LAN의 특정 IP가 외부 네트워크에 노출되고 도메인 이름이 이 IP로 직접 확인되는 것입니다. 그러면 메인 서버는 이를 인트라넷 서버 IP로 전달합니다.

4. 서버가 다운되더라도 웹사이트의 정상적인 작동에는 영향을 미치지 않습니다. Nginx는 다운된 IP로 요청을 전달하지 않습니다.

원본 주소:

http://www.php100.com/html/program/nginx/2013/0905/5525.html

위 내용은 관련 내용을 포함하여 Nginx 로드 밸런싱 구성 예시에 대한 자세한 설명을 소개하고 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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