[소개] 로드 밸런싱은 트래픽이 많은 웹사이트에서 해야 할 일입니다. 이제 Nginx 서버에서의 로드 밸런싱 구성 방법을 소개하겠습니다. 필요한 학생들에게 도움이 됩니다. 로드 밸런싱 먼저 로드 밸런싱이 무엇인지 간단히 알아보겠습니다. 말 그대로 이해하고, Nginx 서버의 로드 밸런싱 구성 방법을 소개해 드리고자 합니다.
로드 밸런싱
먼저 로드 밸런싱이 무엇인지 간단히 알아보겠습니다. 말 그대로 이해하면 N개의 서버를 설명할 수 있습니다. 특정 서버의 부하가 높아 특정 서버가 유휴 상태가 되지 않습니다. 그러면 로드 밸런싱의 전제는 여러 서버에서 달성할 수 있다는 것입니다. 즉, 두 대 이상의 서버이면 충분합니다. 테스트 환경서버가 없기 때문에 이번 테스트에서는 지정된 도메인명을 직접 호스팅한 후 VMware에 CentOS 3개를 설치하는 방식으로 진행됩니다.
테스트 도메인 이름: a.com
A 서버 IP: 192.168.5.149(메인)
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
nginx.conf 파일을 엽니다. 위치는 해당 디렉토리의 nginx 설치 conf 디렉토리에 있습니다.
http 섹션에 다음 코드를 추가하세요
upstream a.com {
server 192.168.5.126:80;
}
서버{
듣기
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 서버 192.168.5.126이 다운됐다고 가정하겠습니다. (다운타임 시뮬레이션이 불가능해서 C 서버를 종료했습니다.) 그런 다음 다시 방문하세요.
b.com에서도 로드 밸런싱을 설정해야 하면 어떻게 되나요?
업스트림 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는 전달 기능만 수행합니다. 사이트 서비스도 제공합니다.
먼저 분석해 보겠습니다. 업스트림에 메인 서버를 추가하면 다음과 같은 두 가지 상황이 발생할 수 있습니다.
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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.