이 글에서는 주로 nginx의 응용을 소개합니다. nginx를 로드 밸런싱에 사용하는 것은 특정 참고 가치가 있습니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다.
nginx는 일반적으로 7계층 로드 밸런싱에 사용될 수 있습니다. 이 기사에서는 로드 밸런싱에 대한 몇 가지 기본 지식과 로드 밸런싱을 위해 nginx를 사용하는 간단한 예를 소개합니다.
실제로는 ISO OSI 네트워크 모델의 레이어 이름에 따라 7레이어 로드 밸런싱이나 4레이어 로드 밸런싱이 결정된다고 흔히 말합니다. 애플리케이션 계층에서는 http 프로토콜을 사용하여 로드 밸런싱 작업을 수행하므로 7계층 로드 밸런싱이라고 합니다. 예를 들어, TCP 계층에서 로드 밸런싱 작업을 수행하는 LVS를 계층 4 로드 밸런싱이라고 합니다. 일반적으로 로드 밸런싱 분류는 다음과 같습니다.
Category | OSI Model Layer | Description |
---|---|---|
Layer 2 Load Balancing | MAC 레이어 | MAC 주소 기반 응답 |
3계층 로드 밸런싱 | IP 계층 | IP 주소에 따라 응답 |
4계층 로드 밸런싱 | TCP 계층 | 포트 번호와 결합된 IP 주소를 기준으로 응답 |
7계층 로드 밸런싱 | HTTP 레이어 | 4레이어를 기반으로 URL/브라우저 카테고리 등 7레이어 정보를 바탕으로 추가 대응 가능 |
소프트웨어 | 4레이어 로드 밸런싱 | 7계층 로드 밸런싱 |
---|---|---|
nginx | 경량 구현 | http 및 메일 지원, 성능은 haproxy |
haproxy | - | 7계층 로드 밸런싱 지원 |
LVS | 더 무거운 | - |
F5 | 하드웨어 구현 및 높은 비용 | - |
로드 밸런싱 알고리즘(E) | nginx 지원 여부 | 지침 | 적용 가능한 시나리오 | |
---|---|---|---|---|
라운드 로빈 | 지원 | 오른쪽 바퀴 동일한 가중치의 폴링 | 은 외부 서비스 요청과 내부 서버가 상대적으로 균형을 이루는 시나리오에 적합합니다. | |
가중 라운드 로빈 | 지원(가중치) | 폴링에 다른 가중치를 설정할 수 있습니다. | 서버 처리 능력이 다르거나 흐름을 제어하고 싶은 경우, 예를 들어 Canary Release | |
Random | - | 서버에 무작위로 할당 | 외부와 내부가 매우 균형 잡힌 경우 또는 무작위 할당에 대한 수요가 상대적으로 높음 Strong | |
Weighted Random | - | 가중치와 결합하여 서버에 무작위로 할당 | 랜덤 전략은 가중치와 결합하여 실제 생활에 더 잘 적응할 수 있도록 조정 가능 배포 조건 | |
응답 시간 | 지원(공정) | 서버의 응답 속도에 따라 할당 | 서버 성능과 서버의 현재 운영 상태를 조합하여 동적으로 조정할 수 있는 전략입니다. 능력 있는 사람이 더 이상 할 수 없는 경우에도 많은 작업을 할당하지 않도록 상태 | |
Least Connection | 연결 수에 따라 분배 | Polling은 작업을 할당하기 때문입니다. 실제 상황에서 폴링에 의한 제어가 불가능하여 작업 완료 속도를 확인할 수 없으므로 실제 서버의 반영이 발생하며, 부하 연결 수가 다양하며 장기간 연결 서비스를 제공하는 기업에 적합합니다. 온라인 고객 서비스를 위한 WebSocket 구현이나 FTP/SFTP와 같은 서비스 등 오랜 시간이 걸렸습니다. | ||
플래시 DNS | - | 다른 DNS에서 반환된 IP 주소를 무시하고 가장 빠르게 반환된 DNS 확인 결과를 기반으로 계속 서비스를 요청합니다. | 글로벌 로드 밸런싱이 있는 상황에 적용 가능, 예, CDN |
로드 밸런싱 알고리즘(E) | nginx 지원 또는 not | 설명 | 적용 시나리오 | |
---|---|---|---|---|
라운드 로빈 | 은 동일한 가중치로 | 폴링을 지원 | 외부 서비스 요청과 내부 서버가 상대적으로 균형을 이루는 시나리오에 적용 가능 |
로드 밸런싱 알고리즘 | 로드 밸런싱 알고리즘(E) | nginx 지원 여부 | 설명 | 적용 가능한 시나리오 |
---|---|---|---|---|
Weighted Round Robin | Weighted Round Robin | 지원(가중치) | 폴링에 대해 서로 다른 가중치를 설정할 수 있습니다 | 서버의 처리 기능이 다르거나 Canary와 같은 트래픽 제어를 수행하려는 경우 Release |
default.conf를 다음과 같이 수정
# cp default.conf default.conf.org # vi default.conf # diff default.conf default.conf.org 2,3c2,3 < server 192.168.163.117:7001 weight=100;< server 192.168.163.117:7002 weight=200; ---> server 192.168.163.117:7001; > server 192.168.163.117:7002; #
[root@kong ~]# docker restart nginx-lbnginx-lb [root@kong ~]#
1/3과 2/3에 따른 폴링 결과를 보실 수 있습니다 비율은 진행 중:
[root@kong ~]# curl http://localhost:9080Hello, Service :User Service 1: 7001[root@kong ~]# curl http://localhost:9080Hello, Service :User Service 1: 7002[root@kong ~]# curl http://localhost:9080Hello, Service :User Service 1: 7002[root@kong ~]#
관련 권장 사항:
위 내용은 nginx 애플리케이션: 로드 밸런싱을 위해 nginx 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!