NGINX 부하분산 (HTTP / TCP)
· NginxLoadBalancerLinux

HTTP 부하분산
upstream 블록과 http 모듈로 HTTP 서버 간 부하 분산.
upstream backend {
server 10.10.12.45:80 weight=1;
server app.example.com:80 weight=2;
server spare.example.com:80 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
- weight 값에 따라 두 번째 서버가 첫 번째보다 두 배 많은 요청을 받음 (기본값 1, 생략 가능)
- 프라이머리 서버에 연결 불가 시
backup지정 서버 사용
TCP 부하분산
stream 모듈로 TCP 서버 간 부하 분산. (예: 읽기 전용 MySQL 복제본)
stream {
upstream mysql_read {
server read1.example.com:3306 weight=5;
server read2.example.com:3306;
server 10.10.12.34:3306 backup;
}
server {
listen 3306;
proxy_pass mysql_read;
}
}
기본 설정 파일 경로인 conf.d는 http 블록에 포함되므로, stream 설정은 stream.conf.d 같은 별도 폴더를 만드는 게 좋다.
http 모듈이 HTTP 프로토콜을 완전히 이해하도록 설계된 반면, stream 모듈은 패킷 전달 경로 결정과 부하분산에 더 중점을 둔다.
TCP 부하분산 파트는 upstream이 중복되는 부분이 헷갈려서 이해가 조금 어렵게 느껴진다.
예전 블로그에 적었던 작업 기록을 옮겨온 글입니다.