자습서-NGINX Unit 로드 밸런싱 구성해보기, 5부
이번 자습서에서 다룰 주제는 NGINX Unit 로드 밸런싱 입니다. 애플리케이션에서 제공하는 부하 분산 기능을 실습해볼 것입니다. 지난 4부에는 NGINX Unit에서의 Static File 기능을 구성하여 웹 서버로서의 동작을 확인해봤습니다.
NGINX Unit은 NGINX와 같은 Upstream을 통해 Server Pool을 정의하여 기본적인 Load Balancing을 기능을 지원합니다.
목차
1. NGINX Unit 구성 파일(JSON) 작성하기
2. NGINX Unit 로드 밸런싱 동작 확인해보기
3. 결론
1. NGINX Unit 구성 파일(JSON) 작성하기
먼저 아래와 같이 NGINX Unit의 로드 밸런싱 내용을 포함하여 load_balancing_config.json
파일을 생성합니다.
{
"listeners": {
"*:8080": {
"pass": "upstreams/pool-0"
}
},
"upstreams": {
"pool-0": {
"servers": {
"192.168.250.229:80": { },
"192.168.250.230:80": {
"weight": 2.0
}
}
}
}
}
curl 명령어로 RestAPI 동적 구성을 NGINX Unit에 적용합니다. 재구성이 완료되면 “success” 메시지를 확인하실 수 있습니다.
$ sudo curl -X PUT --data-binary @load_balancing_config.json --unix-socket /var/run/control.unit.sock http://localhost/config
{
"success": "Reconfiguration done."
}
API로 현재 NGINX Unit의 구성 상태를 확인해봅니다.
$ sudo curl --unix-socket /var/run/control.unit.sock http://localhost/config
{
"listeners": {
"*:8080": {
"pass": "upstreams/pool-0"
}
},
"upstreams": {
"pool-0": {
"servers": {
"192.168.250.229:80": {},
"192.168.250.230:80": {
"weight": 2.0
}
}
}
}
}
2. NGINX Unit 로드 밸런싱 동작 확인해보기
브라우저 창에 http://192.168.228:8080으로 접속하면 가장 먼저 NGINX Unit 앱 서버로 요청하게 됩니다.
NGINX Unit은 192.168.250.229과 192.168.250.230 IP의 NGINX 80번 포트로 Load Balancing을 수행하게 됩니다.
※ 192.168.250.229와 192.168.250.230에는 NGINX OSS를 설치하였습니다.


8080 포트로 들어온 요청을 192.168.250.229와 192.168.250.230 사이에 로드 밸런싱합니다. 이 두 서버는 이름이 pool-0인 업스트림으로 정의됩니다. 192.168.250.230 서버는 weight 속성 때문에 192.168.250.229 보다 두 배 많은 요청을 받게 됩니다.
Unit 구성의 upstreams 속성은 명명된 업스트림 개체의 수를 정의합니다. 각 업스트림 개체는 server 개체를 정의합니다.
server 개체는 키를 사용하여 대상을 정의하고 값을 사용하여 선택적 가중치를 지정합니다.
업스트림은 가중 라운드(Weighted Round Robin) 로드 밸런싱 알고리즘을 사용합니다.
최대 가중치 값은 1000000이고 최소값은 0(이러한 서버는 요청을 수신하지 않음)이며 기본값은 1입니다.
3. 결론
NGINX Unit의 로드 밸런싱 기능은 매우 기본적이지만 많은 사용 사례에 적합합니다. 고급 로드 밸런싱 기능을 사용하려면 NGINX 리버스 프록시 및 로드 밸런서를 사용해야 합니다.
NGINX Unit 공식 커뮤니티(슬랙 채널)는 NGINX STORE – Unit Community 메뉴를 통해 가입 가능합니다.
NGINX Unit에 대한 최신 포스트와 소식을 빠르게 받으시고 싶으시면 아래 뉴스레터를 구독하세요.
댓글을 달려면 로그인해야 합니다.