nginx - - 일치 성 hash 역방향 에이전트 및 upstream 의 6 가지 스케줄 링 알고리즘

4801 단어 nginx
더 읽 기
nginx - fair (제3자): 백 엔 드 서버 의 응답 시간 에 따라 요청 을 분배 하고 응답 시간 이 짧 은 우선 배분 합 니 다.   upstream web_pool {server 172.2.36.148; server 172.2.33.16.149; fair;} 설명: 두 서버 의 부하 가 그 응답 속도 가 빠 른 것 으로 upstream 전송 요청 을 우선 부담 한 다 는 뜻 입 니 다.경로 가 빠 른 부하 작용 을 하여 논리 적 으로 지역 에서 가 까 운 부하 효 과 를 실현 했다.
Nginx 의 리 버스 프 록 시: 리 버스 프 록 시 는 프 록 시 서버 로 인터넷 의 연결 요청 을 받 은 다음 내부 네트워크 에 있 는 서버 에 전송 을 요청 하고 서버 에서 얻 은 결 과 를 인터넷 에 되 돌려 클 라 이언 트 에 연결 을 요청 하 는 것 을 말 합 니 다. 이때 프 록 시 서버 는 외부 에 하나의 서버 로 나타 나 는데 이 작업 모델 은 LVS - NET 모델 과 유사 합 니 다.haproxy 에 도 이러한 프 록 시 기능 이 있 는데 규모 화 된 캐 시 기능 이 없습니다.역방향 프 록 시 는 웹 서버 의 가속 으로 이해 할 수 있 습 니 다. 바 쁜 웹 서버 와 외부 네트워크 사이 에 추 가 된 고속 웹 버퍼 서버 를 통 해 실제 웹 서버 의 부 하 를 낮 추 는 기술 입 니 다.역방향 프 록 시 는 웹 서버 를 대상 으로 가속 기능 을 향상 시 키 는 것 입 니 다. 모든 외부 네트워크 가 서버 에 접근 할 때 모든 요청 이 이 를 통 해 이 루어 집 니 다. 이렇게 역방향 프 록 시 서버 는 클 라 이언 트 의 요청 을 받 은 다음 원본 서버 에 가서 내용 을 가 져 오고 내용 을 사용자 에 게 되 돌려 주 며 내용 을 로 컬 에 저장 하여 나중에 같은 정보 요청 을 받 을 때로 컬 캐 시 에 있 는 내용 을 사용자 에 게 직접 보 내 백 엔 드 웹 서버 의 압력 을 줄 이 고 응답 속 도 를 높 입 니 다.따라서 Nginx 는 캐 시 기능 도 갖 추고 있다. 역방향 프 록 시 작업 프로 세 스: 1) 사용자 가 도 메 인 이름 을 통 해 접근 요청 을 보 냅 니 다. 이 도 메 인 이름 은 역방향 프 록 시 서버 의 IP 주소 로 분 석 됩 니 다.2) 프 록 시 서버 에 사용자 의 요청 을 받 습 니 다.3) 역방향 프 록 시 서버 는 로 컬 캐 시 에서 현재 사용자 가 요청 한 내용 이 있 는 지 찾 고 찾 으 면 사용자 에 게 직접 내용 을 되 돌려 줍 니 다.4) 로 컬 에 사용자 가 요청 한 내용 이 없 으 면 프 록 시 서버 에 자신의 신분 으로 백 엔 드 서버 에 가서 같은 정보 내용 을 요청 하고 정보 내용 을 사용자 에 게 보 냅 니 다. 정보 내용 이 캐 시 될 수 있다 면 이 내용 을 프 록 시 서버 의 로 컬 캐 시 에 캐 시 합 니 다. 역방향 에이전트 의 장점: 1) 사이트 서버 가 대외 적 으로 볼 수 있 는 문 제 를 해결 하고 사이트 서버 의 안전성 을 향상 시 켰 다.2) 제 한 된 IP 주소 자원 을 절약 하고 백 엔 드 서버 는 모두 개인 IP 주소 로 프 록 시 서버 와 통신 할 수 있다.3) 사이트 의 방문 속 도 를 가속 화하 여 진짜 웹 서버 의 부담 을 줄 였 다.(1) 알고리즘 Nginx 의 upstream 명령 은 proxy 를 지정 하 는 데 사 용 됩 니 다.pass 와 fastcgipass 가 사용 하 는 백 엔 드 서버, 즉 nginx 의 역방향 프 록 시 기능 입 니 다. 따라서 두 가 지 를 결합 하여 부하 균형 을 이 루 는 목적 을 달성 할 수 있 습 니 다. Nginx 도 여러 가지 스 케 쥴 링 알고리즘 을 지원 합 니 다. 1. 폴 링 (기본 값) 모든 요청 은 시간 순서에 따라 서로 다른 백 엔 드 서버 에 할당 되 고 백 엔 드 서버 다운 이 떨 어 지면이 서버 를 넘 어 다음 모니터링 서버 로 배 치 됩 니 다.또한 현재 모든 연결 상 태 를 기록 할 필요 가 없 기 때문에 상태 없 는 스케줄 링 입 니 다.2. weight 는 폴 링 을 바탕 으로 가중치, weight 와 방문 비율 을 정비례 로 지정 합 니 다. 즉, 백 엔 드 서버 의 성능 이 좋 고 나 쁨 을 나타 내 는 데 사 용 됩 니 다. 백 엔 드 서버 의 성능 이 좋 으 면 대부분의 요청 을 배정 하여 할 수 있 는 일 을 실현 할 수 있 습 니 다.예 를 들 어 내 백 엔 드 서버 172.23.136.148 설정: E5520 * 2 CPU, 8G 메모리 백 엔 드 서버 172.2.33.16.148 설정: Xeon (TM) 2.80GHz * 2, 4G 메모리 30 개의 요청 이 전단 에 도 착 했 을 때 20 개의 요청 을 172.2.33.16.148 에 맡 기 고 나머지 10 개의 요청 을 172.2.36.149 에 맡 기 면 다음 과 같은 설정 을 할 수 있 습 니 다 upstream webpoll {server 172.23.136.148 weight=10;server 172.23.136.149 weight=5;}3、ip_hash 모든 요청 은 ip 에 접근 하 는 hash 결과 에 따라 분 배 됩 니 다. 새로운 요청 이 도 착 했 을 때 클 라 이언 트 IP 를 해시 알고리즘 을 통 해 해시 에 게 값 을 내 고 그 다음 에 클 라 이언 트 IP 를 요청 하 는 해시 값 이 같 으 면 같은 백 엔 드 서버 로 분 배 됩 니 다. 이 알고리즘 은 session 문 제 를 해결 할 수 있 지만 분배 가 고 르 지 않 으 면 부하 균형 을 보장 할 수 없습니다.예 를 들 어 upstream webpool {ip hash; server 172.2.3136.148: 80; server 172.2.33.16.149: 80;} 4, fair (제3자) 는 백 엔 드 서버 의 응답 시간 에 따라 요청 을 분배 하고 응답 시간 이 짧 은 우선 분 배 를 합 니 다.upstream web_pool {server 172.23.136.148;server 172.23.136.149;fair;}5、url_hash (제3자) 는 url 에 접근 한 hash 결과 에 따라 요청 을 할당 합 니 다. 모든 url 을 같은 백 엔 드 서버 로 지정 하고 백 엔 드 서버 가 캐 시 일 때 유효 합 니 다.예: upstream 에 hash 문 구 를 추가 하고 server 문 구 는 weight 등 다른 매개 변 수 를 기록 할 수 없습니다. hashmethod 는 hash 알고리즘 upstream 웹 을 사용 합 니 다.pool {server squid 1: 3128; server squid 2: 3128; hash $request uri; hash method crc 32;} 6. tengine 이 증가 하 는 여섯 번 째 방법:: tengine 이 새로 추 가 된 서버 가속 스케줄 링 알고리즘:::
일치 성 hash 모듈 묘사 하 다.
이 모듈 은 부하 균형 알고리즘 으로 일치 성 hash 를 제공 합 니 다.
이 모듈 은 클 라 이언 트 정보 (예 를 들 어 $ip, $uri, $args 등 변수) 를 매개 변수 로 하여 일치 성 hash 알고리즘 을 사용 하여 클 라 이언 트 를 백 엔 드 기기 에 투사 합 니 다.
백 엔 드 기기 가 지연 되면 이 요청 은 다른 기계 로 옮 겨 집 니 다. server  id 필드, id 필드 를 설정 하면 id 필드 를 server 표지 로 사용 합 니 다. 그렇지 않 으 면 server ip 과 포트 를 server 표지 로 사용 합 니 다. id 필드 를 사용 하면 server 의 표 지 를 수 동 으로 설정 할 수 있 습 니 다. 예 를 들 어 기계 의 ip 이나 포트 변화, id 는 이 기 계 를 표시 할 수 있 습 니 다.id 필드 를 사용 하면 서버 의 변동 을 줄 일 수 있 습 니 다. server  weight 필드, server 가중치 로 가상 노드 수 에 대응 합 니 다.
구체 적 인 알고리즘 은 모든 server 를 n 개의 노드 로 가상 하여 hash 링 에 고 르 게 분포 합 니 다. 요청 할 때마다 설 정 된 매개 변수 에 따라 hash 값 을 계산 하고 hash 링 에서 이 hash 에서 가장 가 까 운 가상 노드 를 찾 습 니 다. 해당 하 는 server 는 이번 요청 의 백 엔 드 기기 입 니 다.
이 모듈 은 설정 매개 변수 에 따라 서로 다른 방식 으로 요청 을 백 엔 드 기기 에 고 르 게 표시 할 수 있 습 니 다. 예 를 들 어 consistent_hash $remote_addr: 클 라 이언 트 ip 에 따라 매 핑 할 수 있 습 니 다.consistent_hash $request_uri: 클 라 이언 트 가 요청 한 uri 맵;consistent_hash $args: 클 라 이언 트 가 가지 고 있 는 매개 변수 에 따라 매 핑 합 니 다.
예:
worker_processes  1;

http {
    upstream test {
        consistent_hash $request_uri;

        server 127.0.0.1:9001 id=1001 weight=3;
        server 127.0.0.1:9002 id=1002 weight=10;
        server 127.0.0.1:9003 id=1003 weight=20;
    }
}

좋은 웹페이지 즐겨찾기