php 면접 문제 8 - nginx 부하 균형 어떻게 설정

부하 균형
요약 면접 에서 의 대답 은 다음 과 같다. nginx 에 upstream 을 설정 한 다음 에 관련 서버 ip 을 모두 설정 할 수 있다.그 다음 에 폴 링 방안 을 사용 한 다음 에 nginx 안의 설정 항목 에서 proxy - pass 는 이 upstream 을 가리 키 면 부하 균형 을 실현 할 수 있 습 니 다.
nginx 의 부하 균형 은 4 가지 모드 가 있 습 니 다.
1), 폴 링 (기본 값) 모든 요청 은 시간 순서에 따라 서로 다른 백 엔 드 서버 에 할당 되 며, 백 엔 드 서버 다운 이 떨 어 지면 자동 으로 제거 할 수 있 습 니 다.2) weight 는 폴 링 확률 을 지정 하고 weight 와 방문 비율 이 정비례 하여 백 엔 드 서버 의 성능 이 고 르 지 않 은 경우 에 사용 합 니 다.2)、ip_hash 모든 요청 은 ip 에 접근 하 는 hash 결과 에 따라 분 배 됩 니 다. 모든 방문객 이 백 엔 드 서버 에 고정 적 으로 접근 하면 session 문 제 를 해결 할 수 있 습 니 다.3), fair (제3자) 는 백 엔 드 서버 의 응답 시간 에 따라 요청 을 분배 하고 응답 시간 이 짧 은 우선 분 배 를 한다.4)、url_hash (제3자)
설정 방법:
nginx. cnf 파일 열기
http 노드 에 upstream 노드 추가:
upstream webname {  
  server 192.168.0.1:8080;  
  server 192.168.0.2:8080;  
}  

그 중에서 webname 은 자신 이 지은 이름 입 니 다. 마지막 으로 이 이름 을 통 해 url 에 접근 할 것 입 니 다. 위의 예 처럼 아무것도 추가 하지 않 으 면 기본 적 인 폴 링 입 니 다. 첫 번 째 요청 은 첫 번 째 server 에 방문 하고 두 번 째 요청 은 두 번 째 server 에 접근 합 니 다.차례차례 차례 하 다.
upstream webname {  
  server 192.168.0.1:8080 weight 2;  
  server 192.168.0.2:8080 weight 1;  
}  

이 weight 도 이해 하기 쉽 습 니 다. 권한 이 중대 한 방문 확률 이 높 습 니 다. 위의 예 를 들 어 server 1 을 2 번 방문 하고 server 2 를 한 번 방문 합 니 다.
upstream webname {  
  ip_hash;  
  server 192.168.0.1:8080;  
  server 192.168.0.2:8080;  
}  

ip_hash 설정 도 간단 합 니 다. 한 줄 만 추가 하면 됩 니 다. 같은 ip 이 오 면 같은 server 에 올 수 있 습 니 다.
그리고 server 노드 에서 설정:
location /name {  
    proxy_pass http://webname/name/;  
    proxy_http_version 1.1;  
    proxy_set_header Upgrade $http_upgrade;  
    proxy_set_header Connection "upgrade";  
}  

proxy_pass 에 서 는 원래 ip 주 소 를 위 에 있 는 webname 으로 대체 하 였 습 니 다.
이렇게 해서 기본적으로 부하 균형 설정 을 완성 하 였 다.
다음은 주 설정 입 니 다:
아니면 upstream 에서?
upstream webname {  
  server 192.168.0.1:8080;  
  server 192.168.0.2:8080 backup;  
}

특정한 노드 를 backup 으로 설정 하면 일반적인 상황 에서 모든 요청 이 server 1 에 접근 합 니 다. server 1 이 끊 기거 나 바 쁠 때 만 server 2 에 접근 합 니 다.
upstream webname {  
  server 192.168.0.1:8080;  
  server 192.168.0.2:8080 down;  
}  

한 노드 를 다운 으로 설정 하면 이 server 는 부하 에 참여 하지 않 습 니 다.
실례 를 실현 하 다
부하 균형 은 우리 대 유량 사이트 에서 해 야 할 일 입 니 다. 다음은 Nginx 서버 에서 부하 균형 설정 방법 을 소개 하 겠 습 니 다. 필요 한 학생 들 에 게 도움 이 되 기 를 바 랍 니 다.
부하 균형
먼저 부하 균형 이 무엇 인지 간단히 알 아 보 겠 습 니 다. 말 그대로 N 대 서버 가 평균 적 으로 부 하 를 분담 하 는 것 을 설명 할 수 있 습 니 다. 한 서버 의 부하 가 높 아 지연 되 지 않 고 한 서버 가 방치 되 어 있 는 상황 을 설명 할 수 있 습 니 다.그러면 부하 균형 의 전 제 는 여러 대의 서버 가 있어 야 이 루어 질 수 있다 는 것 이다. 즉, 두 대 이상 이면 된다.
테스트 환경 은 서버 가 없 기 때문에 이번 테스트 에서 도 메 인 이름 을 직접 host 로 지정 한 다음 에 VMware 에 CentOS 세 대 를 설치 했다.
테스트 도 메 인 이름: 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.27) 와 C 서버 (192.168.5.126) 에 균형 을 이룬다.
도 메 인 이름 분석
실제 환경 이 아니 기 때문에 도 메 인 이름 은 a. com 을 테스트 용 으로 마음대로 사용 하기 때문에 a. com 의 분석 은 hosts 파일 에서 만 설정 할 수 있 습 니 다.
열기: C:WindowsSystem32driversetchosts말미 에 첨가 하 다
192.168.5.149    a.com

종료 저장 하고 명령 모드 ping 을 시작 하여 설정 이 완료 되 었 는 지 확인 하 십시오.
캡 처 에서 a. com 을 192.168.5.149IP 로 성공 적 으로 분 석 했 습 니 다.
A 서버 nginx. conf 설정 은 nginx. conf 를 엽 니 다. 파일 위 치 는 nginx 설치 디 렉 터 리 의 conf 디 렉 터 리 에 있 습 니 다.
http 세그먼트 에 다음 코드 추가
upstream a.com { 
      server  192.168.5.126:80; 
      server  192.168.5.27:80; 
} 

server{ 
    listen 80; 
    server_name a.com; 
    location / { 
        proxy_pass        http://a.com; 
        proxy_set_header  Host            $host; 
        proxy_set_header  X-Real-IP        $remote_addr; 
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; 
    } 
}

다시 시작 nginx 저장
B. C 서버 nginx. conf 설정 nginx. confi 를 열 고 http 세그먼트 에 다음 코드 를 추가 합 니 다.
server{ 
    listen 80; 
    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 서버 (192.168.5.126) 가 다운 되 었 지만 사이트 방문 에 영향 을 주지 않 는 다 는 것 을 발견 했다.이렇게 되면 부하 균형 모드 에서 어떤 기계 가 다운 되 어 역 전 체 를 끌 까 봐 걱정 하지 않 을 것 이다.
만약 b. com 도 부하 균형 을 설정 하려 면 어떻게 합 니까?아주 간단 합 니 다. a. com 설정 과 같 습 니 다.다음 과 같다.
b. com 의 메 인 서버 IP 가 192.168.5.149 라 고 가정 하면 부하 균형 은 192.168.5.150 과 192.168.5.151 기계 에 있다.
현재 도 메 인 이름 b. com 을 192.168.5.149IP 로 분석 합 니 다.
홈 서버 (192.168.5.149) 의 ngix. conf 에 다음 코드 를 추가 합 니 다:
upstream b.com { 
      server  192.168.5.150:80; 
      server  192.168.5.151:80; 
} 

server{ 
    listen 80; 
    server_name b.com; 
    location / { 
        proxy_pass        http://b.com; 
        proxy_set_header  Host            $host; 
        proxy_set_header  X-Real-IP        $remote_addr; 
        proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; 
    } 
}

다시 시작 nginx 저장
192.168.5.150 과 192.168.5.151 기계 에 nginx 를 설치 하고 nginx. conf 를 열 어 끝 에 다음 과 같은 코드 를 추가 합 니 다.
server{ 
    listen 80; 
    server_name b.com; 
    index index.html; 
    root /data0/htdocs/www; 
}

다시 시작 nginx 저장
이후 절 차 를 마 친 후 b. com 의 부하 균형 설정 을 실현 할 수 있 습 니 다.
홈 서버 는 서 비 스 를 제공 할 수 없 습 니까?상기 예 에서 우 리 는 모두 메 인 서버 부하 가 다른 서버 에 균형 을 이 루 도록 응용 되 었 다. 그러면 메 인 서버 자체 도 서버 목록 에 추가 할 수 있 습 니까? 그러면 서버 한 대 를 퍼 가기 기능 으로 만 낭비 하지 않 고 서비스 제공 에 도 참여 할 수 있 습 니 다.
상기 사례 와 같이 세 대의 서버:
A 서버 IP: 192.168.5.149 (주)
B 서버 IP: 192.168.5.27
C 서버 IP: 192.168.5.126
우 리 는 도 메 인 이름 을 A 서버 로 분석 한 후에 A 서버 에서 B 서버 와 C 서버 로 전송 합 니 다. 그러면 A 서버 는 하나의 퍼 가기 기능 만 합 니 다. 지금 은 A 서버 에 도 사이트 서 비 스 를 제공 하도록 합 니 다.
upstream 에 메 인 서버 를 추가 하면 다음 과 같은 두 가지 상황 이 발생 할 수 있 습 니 다.
1. 메 인 서버 가 다른 IP 에 전송 되 었 고 다른 IP 서버 는 정상적으로 처리 되 었 습 니 다.
2. 메 인 서버 는 자신의 IP 에 전송 한 다음 에 메 인 서버 에 들 어가 IP 를 분배 합 니 다. 만약 에 이 컴퓨터 에 계속 분배 하면 순환 이 생 길 수 있 습 니 다.
이 문 제 를 어떻게 해결 합 니까?80 포트 는 부하 균형 처 리 를 감청 하 는 데 사용 되 었 기 때문에 이 서버 에 서 는 a. com 의 방문 요청 을 80 포트 로 처리 할 수 없습니다. 새로운 것 을 사용 해 야 합 니 다.그래서 우 리 는 메 인 서버 의 ngix. conf 를 다음 코드 에 추가 합 니 다.
server{ 
    listen 8080; 
    server_name a.com; 
    index index.html; 
    root /data0/htdocs/www; 
}

nginx 를 다시 시작 하고 브 라 우 저 에 a. com: 8080 을 입력 하여 접근 할 수 있 는 지 확인 하 십시오.결 과 는 정상적으로 접근 할 수 있다.
정상적으로 접근 할 수 있 는 이상, 우 리 는 홈 서버 를 upstream 에 추가 할 수 있 습 니 다. 그러나 포트 는 다음 코드 를 바 꿔 야 합 니 다.
upstream a.com { 
      server  192.168.5.126:80; 
      server  192.168.5.27:80; 
      server  127.0.0.1:8080; 
}

여기에 메 인 서버 IP 192.168.5.149 또는 127.0.0.1 을 추가 할 수 있 기 때문에 모두 자신 을 방문 하 는 것 을 나타 낸다.
Nginx 를 다시 시작 하고 a. com 에 방문 해서 메 인 서버 에 할당 되 는 지 확인 하 세 요.
메 인 서버 도 정상적으로 서비스 에 가입 할 수 있 게 되 었 다.
마지막 으로 부하 균형 은 nginx 만 있 는 것 이 아니 라 유명한 apache 도 있 지만 성능 은 nginx 보다 못 할 수 있 습 니 다.
2. 여러 대의 서버 가 서 비 스 를 제공 하지만 도 메 인 이름 은 메 인 서버 에 만 해석 되 고 진정한 서버 IP 는 ping 에 의 해 얻 을 수 없 으 며 일정한 안전성 을 증가 합 니 다.
3. upstream 의 IP 는 반드시 내부 네트워크 가 아니 라 외부 네트워크 IP 도 가능 합 니 다.그러나 전형 적 인 사례 는 랜 의 한 IP 가 외부 네트워크 에 노출 되 고 도 메 인 이름 은 이 IP 를 직접 분석 하 는 것 이다.그리고 이 메 인 서버 는 내 망 서버 IP 에 전송 된다.
4. 특정한 서버 가 다운 되 고 사이트 의 정상 적 인 운행 에 영향 을 주지 않 습 니 다. Nginx 는 다운 된 IP 에 요청 을 전달 하지 않 습 니 다.

좋은 웹페이지 즐겨찾기