[Nginx] L4 대신 Nginx 웹서버로 로드밸런싱 하는 방법

[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 localhost:8080;
    server localhost:8090;
}

server {

바라보기를 원하는 서버 주소들을 입력해주면 된다.

와스(WAS)는 2대이고 각각 로컬호스트의 8080 포트, 8090 포트라고 가정한다.

위 예시는 localhost로 도메인이 같지만, 도메인이 다른 경우도 상관없다.

위와 같이 규칙을 아무것도 적지 않는다면 라운드로빈 방식으로 동작한다.

라운드로빈이란 쉽게 생각해서 균등하게 돌아가면서 방문한다고 이해하면 된다.

그런데 만약 처음 접속한 서버에 계속 머물러있게 하고 싶다면 해시 방식을 사용하면 된다.

다음과 같이 쓰면 된다.

[TO-BE] (해시 방식)

#gzip  on;

upstream myserver {

    ip_hash;


    server localhost:8080;
    server localhost:8090;
}

server {

(2) 프록시 패스 입력

[AS-IS]

location / {
    root   html;
    index  index.html index.htm;
}

[TO-BE]

location / {
    #root   html;
    #index  index.html index.htm;
    proxy_pass
http://myserver;
}

이어서 프록시 패스 값을 입력한다.

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 주소의 페이지가 보이면 성공이다.

참고사이트 : https://kamang-it.tistory.com/entry/WebServernginxnginx%EB%A1%9C-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%8B%B1-%ED%95%98%EA%B8%B0