우선 테스트 해보기 위해 같은 Spring Boot 서버를 다른 포트로 여러 개 만들어서 실행해놓겠습니다!
-Dserver.port=포트번호
저는 포트 번호를 기존에 있던 8080 포트와 새롭게 추가한 8081 포트를 사용하였습니다.
다음으로 Nginx를 설치하겠습니다!
저는 mac 환경이기 때문에 HomeBrew를 통해 설치하고 Mac 환경에서 진행하겠습니다!
$ brew install nginx
$ brew info nginx
이렇게 입력하면 default port가 설정된 설정 파일의 경로가 나오는데 해당 경로를 이용하여 다음 단계의 수정을 진행하면 됩니다!
$ sudo vim nginx.conf의 경로
$ sudo vim /opt/homebrew/etc/nginx/nginx.conf
저는 위와 같은 경로였기 때문에 저렇게 사용했습니다!
Nginx HTTP Load Balancing 공식 문서를 참고하시면 좋습니다!
경로를 지정해준뒤 upstream 내에서 로드밸런싱에 사용될 알고리즘을 정해야합니다. 사용 가능한 알고리즘은 다음과 같습니다. 저는 기본 설정이
클라이언트의 요청을 여러 대의 서버에 순차적으로 분배하는 알고리즘, 기본 설정
upstream sample {
...
}
연결된 횟수가 가장 적은 서버로 연결되는 알고리즘
upstream sample {
least_conn;
...
}
클라이언트 IP를 해싱하여 특정 클라이언트는 특정 서버로 연결, Stick Session 세션 방식처럼 동작 가능
upstream sample {
ip_hash;
...
}
사용자가 정의한 다양한 변수를 조합해 트래픽을 분산 가능
upstream sample {
hash $request_uri;
...
}
트래픽을 무작위로 분배
upstream sample {
random;
...
}
$ nginx -s reload