nginx upstream 블록의 주요 옵션과 사용법
nginx에서 upstream 블록을 사용하는 것은 로드 밸런싱 및 업스트림 서버 관리에 도움을 줍니다. upstream 블록은 여러 웹 서버나 애플리케이션 서버로의 요청을 분산하거나 백엔드 서버 그룹을 정의하는 데 사용됩니다.
로드 밸런싱 방법(Load balancing methods)
- round-robin : 응용 프로그램 서버에 대한 요청은 라운드 로빈(round-robin) 방식으로 배포됩니다
- least-connected : 다음 요청은 활성 연결 수가 가장 적은 서버에 할당됩니다(the least number of active connections).
- ip_hash : 다음 요청에 대해 어떤 서버를 선택해야 하는지 결정하는 데 해시 함수가 사용됩니다(클라이언트의 IP 주소 기반).
옵션 | 설명 |
ip_hash | 동일 사용자(요청자)에 대하여 같은 업스트림 서버로 연결되도록 한다. |
weight=n | 서버 가중치. 만약 5라면 1로 설정한 서버에 비하여 5배 더 자주 선택된다. |
max_fails=n | 설정한 값 n만큼 실패가 발생하면 서버가 죽은 것으로 간주한다. |
fail_timeout=n | max_fails 가 설정된 상태에서 n 시간만큼 응답하지 않으면 죽은 것으로 간주한다. |
down | 해당 서버를 사용하지 않는다. ip_hash 옵션이 설정된 경우에만 유효. |
backup | 대기하고 있다가 설정된 모든 서버가 동작하지 않을 때 사용되는 서버. |
1. upstream 블록 정의
upstream 블록을 정의하고 백엔드 서버 그룹을 시작합니다.
upstream backend_servers {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
위의 예에서 backend_servers는 백엔드 서버 그룹의 이름입니다.
2. server 옵션
server 지시어는 백엔드 서버를 정의하고 해당 서버의 주소 및 포트를 지정합니다.
server backend1.example.com;
server 지시어를 여러 번 사용하여 여러 백엔드 서버를 그룹에 추가할 수 있습니다.
3. weight 옵션
weight 옵션은 서버의 가중치를 설정합니다. 가중치는 트래픽을 분산하는 데 사용되며, 더 높은 가중치를 가진 서버는 더 많은 요청을 받게 됩니다.
server backend1.example.com weight=3;
server backend2.example.com weight=2;
server backend3.example.com weight=1;
4. max_fails와 fail_timeout 옵션
max_fails 옵션은 연속된 실패 횟수를 정의하고, fail_timeout은 재시도 전 대기 시간을 설정합니다. 이를 사용하여 장애 서버를 처리할 수 있습니다.
server backend1.example.com max_fails=3 fail_timeout=30s;
5. backup 옵션
backup 옵션은 백업 서버로 표시됩니다. 주로 주요 서버가 다운될 때 대비하여 사용됩니다.
server backup.example.com backup;
6. ip_hash 옵션
ip_hash 옵션을 사용하면 클라이언트 IP 주소에 기반하여 항상 같은 서버로 요청을 라우팅할 수 있습니다. 이것은 세션 유지를 필요로 하는 애플리케이션에 유용합니다.
ip_hash;
7. keepalive 옵션
keepalive 옵션을 사용하면 백엔드 서버와의 TCP 연결을 유지할 수 있으며, 다음 요청에 재사용됩니다. 이것은 연결 속도를 향상시키고 서버 부하를 감소시킬 수 있습니다.
keepalive 32;
upstream 블록을 정의하고 설정하는 방법은 Nginx의 로드 밸런싱 및 백엔드 서버 관리를 조절하는 데 중요합니다. 이를 통해 요청을 효과적으로 분산하고, 서버 장애에 대비하며, 클라이언트 요청을 최적화하는 데 도움이 됩니다.
참고URL
- nginx load balancer 구축기 : http://saksin.tistory.com/1110
- nginx를 HTTP 로드 밸런서로 사용 : http://nginx.org/en/docs/http/load_balancing.html
'리눅스' 카테고리의 다른 글
좀비 프로세스(zombie processes)를 찾고 종료하는 방법 (0) | 2016.05.13 |
---|---|
[리눅스] SVN 서버 설치 및 설정 (0) | 2016.04.04 |
리눅스에서 2TB 이상의 디스크를 사용하기 (0) | 2016.03.02 |
Nginx HTTP Server Note (0) | 2016.03.02 |
RackTable 설치 방법(Installing RackTables) (1) | 2016.02.05 |