/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 로 분배된 것을 볼 수 있다.
sudo vi /etc/nginx/conf.d/loadbalancing.conf

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