[AWS] nginx - Load Balancing

Hyunjun Kim·2025년 5월 20일

실습 - (AWS 환경)

목록 보기
16/61

/etc/nginx/conf.d 에서
sudo vi loadbalancing.conf

upstream backend {
    server $server1:9000;
    server $server2:9000;
}

server {
    server_name loadbalancing;
    listen 8083;

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


upstream이라는 키워드로 서버의 묶음, 서버의 그룹을 지정해야함.
upstream은 protocol 블록 하위에, 그리고 server 블록이랑 같을 레벨로 선언을 해 줘야 함.

server1, server2 에는 ec2 ip주소를 넣으면 됨.

서버 블록에다가 서버 이름을 지정하고 아까랑 다르게 8083 포트로 새로 지정.

location 에서 모든 path에 대해 proxy_pass http://<논리적인 upstream이름>;
<> 위치에 논리적인 upstream 이름이오면 자동으로 이름을 찾아서 upstream한테 연결시켜 줌.

그래서 아무 설정 안 하면, backend에 적혀있는 서버들에 대해서 roundrobin으로 골고루 1대1대1 모두 균등하게 분배하는 라운드 로빈 규칙이 적용됨.


loadbalancing 규칙은 저번에 했던 AWS LB 규칙들의 리스트와 거의 비슷하다.

server $target $option; 의 형식으로 규칙에 따라서 server들에 옵션을 지정할 수 있다. 추가설정은 server 설정 줄의 마지막에 온다.

저장하고 reload.

~/node 위치로 이동해서
tail -f server.log 로 확인할 수 있게 세팅하고

mac에서

curl -XGET $server1:8083/user

로 확인해보자.

중간에 server2 의 연결이 끊겼다가 다시 시도했었는데,
nohup node server.js > server.log 2>&1 & echo $! > run.pid 로 실행시키는 것을 까먹고 왜 자꾸 server 1로만 연결되는지 모르고 헤매고 있었다. 잘 켜져있는지 꼭 확인하자.

server 1,2,1,2, 반복하면 거의 1대1로 번갈아가면서 로그가 찍히는 것을 볼 수 있다.

customer 로의 연결도 잘 작동하는 것을 볼 수 있다.

sudo vi loadbalancing.conf

weight 8 : 2 설정

~/node 로 이동해서
tail -f server.log

대강 8:2 로 분배된 것을 볼 수 있다.


Failover

sudo vi /etc/nginx/conf.d/loadbalancing.conf

평소에는 안 쓰다가 다른 서버들이 모두 못 쓰게 되었을 때 사용하는 서버. failover를 대비한 전략이라고 보면 됨.

profile
Data Analytics Engineer 가 되

0개의 댓글