본문 바로가기
카테고리 없음

Nginx로 간단한 로드밸런서 만들기|집에서도 따라할 수 있는 방법

by by_merry 2026. 4. 24.

로드밸런서는 여러 대의 서버에 요청을 나눠주는 역할을 한다. 처음에는 “이걸 집에서 어떻게 만들지?” 싶지만, 사실 Nginx만 있으면 생각보다 쉽게 만들 수 있다.

이번 글에서는 집에 있는 컴퓨터나 가상머신 3대를 사용해서, Nginx로 가장 기본적인 로드밸런서를 만드는 방법을 설명해보겠다.

준비할 것은 단 3가지다.

  • 로드밸런서 역할을 할 Ubuntu 서버 1대
  • 웹서버 역할을 할 Ubuntu 서버 2대
  • 같은 와이파이 또는 같은 네트워크

예를 들어 이렇게 구성한다고 해보자.

  • 로드밸런서 서버: 192.168.0.100
  • 웹서버 A: 192.168.0.101
  • 웹서버 B: 192.168.0.102

1. 먼저 웹서버 2대를 만든다

로드밸런서는 뒤에 있는 서버로 요청을 보내기 때문에, 먼저 웹서버 두 대가 정상적으로 열리는 상태여야 한다.

웹서버 A와 B 각각에서 Apache를 설치한다.

sudo apt update
sudo apt install apache2 -y

설치가 끝났다면, 각 서버의 기본 페이지를 조금 다르게 바꿔보자. 그래야 어떤 서버로 연결되었는지 쉽게 확인할 수 있다.

웹서버 A에서는:

echo "This is Server A" | sudo tee /var/www/html/index.html

웹서버 B에서는:

echo "This is Server B" | sudo tee /var/www/html/index.html

이제 브라우저에서 각각의 IP로 접속하면:

  • 192.168.0.101 → This is Server A
  • 192.168.0.102 → This is Server B

처럼 서로 다른 화면이 나와야 한다.

2. 로드밸런서 서버에 Nginx를 설치한다

이제 192.168.0.100 역할을 하는 서버에 접속해서 Nginx를 설치한다.

sudo apt update
sudo apt install nginx -y

설치가 끝났다면, Nginx 설정 파일을 수정해야 한다.

sudo nano /etc/nginx/sites-available/default

기존 내용은 지우고, 아래 내용을 넣는다.

upstream backend {
    server 192.168.0.101;
    server 192.168.0.102;
}

server {
    listen 80;

    location / {
        proxy_pass http://backend;
    }
}

이 설정의 뜻은:

  • backend라는 이름으로 서버 두 대를 등록하고
  • 누군가 접속하면 그 요청을 두 서버에 번갈아 보내라

는 의미다.

즉, 기본적인 라운드 로빈 로드밸런서가 만들어진 것이다.

3. 설정이 맞는지 확인하고 다시 시작한다

설정 파일을 저장했다면, Nginx가 문법 오류 없이 잘 읽는지 먼저 확인한다.

sudo nginx -t

정상이라면 아래처럼 나온다.

syntax is ok
test is successful

그다음 Nginx를 다시 시작한다.

sudo systemctl restart nginx

4. 이제 로드밸런서 주소로 접속해본다

브라우저에서 로드밸런서 서버의 주소인:

http://192.168.0.100

으로 접속해보자.

그러면 처음에는:

This is Server A

가 보일 수 있고, 새로고침하면:

This is Server B

가 나올 수 있다.

즉, 접속할 때마다 서버 A와 B를 번갈아 사용하고 있는 것이다.

이게 바로 가장 기본적인 라운드 로빈 로드밸런서다.

5. 서버 하나를 꺼보면 더 쉽게 이해된다

이번에는 웹서버 B를 일부러 꺼보자.

sudo systemctl stop apache2

그러면 원래라면 절반의 접속은 서버 B로 가다가 실패했을 것이다.

하지만 Nginx에 아래처럼 설정을 추가하면, 고장 난 서버를 자동으로 잠시 제외할 수 있다.

upstream backend {
    server 192.168.0.101 max_fails=3 fail_timeout=30s;
    server 192.168.0.102 max_fails=3 fail_timeout=30s;
}

이 뜻은:

  • 3번 연속 실패하면
  • 30초 동안 그 서버를 사용하지 않는다

는 의미다.

그래서 서버 B가 꺼져 있어도, 이후에는 자동으로 서버 A만 계속 사용하게 된다.

실제로 직접 해보면 “아, 그래서 큰 사이트가 서버 한 대가 고장 나도 계속 열리는구나”를 훨씬 쉽게 이해할 수 있다.

6. 서버가 3대 이상이어도 방법은 똑같다

만약 서버가 더 많다면, upstream 안에 계속 추가하면 된다.

upstream backend {
    server 192.168.0.101;
    server 192.168.0.102;
    server 192.168.0.103;
    server 192.168.0.104;
}

그러면 Nginx가 4대의 서버에 순서대로 요청을 나눠준다.

나도 처음에는 로드밸런서가 엄청 비싸고 복잡한 장비인 줄 알았다. 그런데 직접 해보니, 집에 있는 노트북 두세 대와 Ubuntu, 그리고 Nginx만으로도 충분히 연습할 수 있었다.

특히 서버 A와 B 화면이 번갈아 나오는 것을 보면, 로드밸런서가 실제로 어떻게 작동하는지 바로 이해된다.

한 줄로 정리하면

Nginx는 upstream과 proxy_pass 설정만으로도 여러 대의 서버에 요청을 나눠주는 간단한 로드밸런서를 만들 수 있다. 집에서도 Ubuntu 서버 몇 대만 있으면 직접 따라해볼 수 있다.