본문 바로가기

리눅스

nginx upstream 블록의 주요 옵션과 사용법

728x90

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;
728x90

 

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

 

728x90