[Nginx] L4 대신 Nginx 웹서버로 로드밸런싱 하는 방법
로드밸런싱이란 부하분산을 뜻한다.
큰 작업을 여러 대의 장비에게 나눠줘서 부하를 낮추는 것이 로드밸런싱이다.
웹서비스에서는 여러 대의 와스(WAS)를 한 개의 주소로 바라보게 만들 수 있다.
예를 들어서 8080, 8090 포트를 각각 사용하는 2개의 톰캣(tomcat)이 있을 때, 특정 주소(특정 도메인 80포트)에 접속하면 2개의 톰캣으로 나눠보내주는 것이다.
웹서비스에서 로드밸런싱을 위해서는 L4 스위치 장비라는 것을 이용한다.
L4 장비가 없으면 리눅스에서는 LVS(Linux Virtual Server) 라는 프로그램을 통해서도 로드밸런싱을 할 수 있다고 한다.
여기서는 L4 장비 대신 Nginx 라는 웹서버 프로그램으로 로드밸런싱을 하는 방법을 소개한다.
이 글은 윈도우 환경 기준이다. 참고로 리눅스에서도 Nginx 설치가 가능하다.
1. Nginx 다운로드
먼저 Nginx 프로그램을 다운로드해야 한다. http://nginx.org/en/download.html 에 접속한다.

안정적인 Stable version 을 다운받는다.
nginx/Windows-1.18.0 을 클릭해서 다운로드한다.
2. nginx 설치
원하는 위치에 압축을 해제하면 설치 끝이다.
예를 들면 C:\nginx-1.18.0 위치에 압축을 해제하면 된다.

3. 설정파일 수정
conf 폴더 내의 nginx.conf 파일을 수정한다.
예를 들어 C:\nginx-1.18.0\conf\nginx.conf 파일을 수정하면 된다.

(1) 업스트림 정보 입력
[AS-IS]
|
#gzip on; server { |
[TO-BE] (라운드로빈 방식)
|
#gzip on; upstream myserver { server { |
바라보기를 원하는 서버 주소들을 입력해주면 된다.
와스(WAS)는 2대이고 각각 로컬호스트의 8080 포트, 8090 포트라고 가정한다.
위 예시는 localhost로 도메인이 같지만, 도메인이 다른 경우도 상관없다.
위와 같이 규칙을 아무것도 적지 않는다면 라운드로빈 방식으로 동작한다.
라운드로빈이란 쉽게 생각해서 균등하게 돌아가면서 방문한다고 이해하면 된다.
그런데 만약 처음 접속한 서버에 계속 머물러있게 하고 싶다면 해시 방식을 사용하면 된다.
다음과 같이 쓰면 된다.
[TO-BE] (해시 방식)
|
#gzip on; upstream myserver { ip_hash;
server { |
(2) 프록시 패스 입력
[AS-IS]
|
location / { |
[TO-BE]
|
location / { |
이어서 프록시 패스 값을 입력한다.
proxy_pass http://[업스트림 이름]을 쓰면 해당 업스트림 정보를 토대로 바라보게 된다.
4. Nginx 기동 후 테스트
Nginx 기동은 cmd 로 들어가서 nginx.exe 명령어를 입력하면 된다.
예를 들면 아래와 같다.
(1) Nginx 기동
|
cd C:\nginx-1.18.0 nginx.exe |
(2) Nginx 중지
|
cd C:\nginx-1.18.0 nginx.exe -s stop |
Nginx 기동 후 http://localhost:80/ 으로 접속해보면 된다.
한 번은 localhost:8080 주소의 페이지가 보였다가, 또 한 번은 localhost:8090 주소의 페이지가 보이면 성공이다.