카테고리 없음

NginX - 로드밸런싱으로 무중단 배포 구현하기

gosikoca 2024. 8. 20. 09:46

로드밸런싱은 무엇인가?

로드밸런싱은 서버에 가해지는 부하를 분산시켜 주는 기술을 통칭한다.

한대의 서버에 부하가 집중되어 장애가 나지 않도록 트래픽을 관리해 각각의 서버에서 최적의 성능을 보여줄 수 있도록 한다.

 

    실습 환경

  • 인텔리제이
  • spring boot
  • mac

 

로컬에 nginx 설치

  • Homebrew 를 활용하였다.
brew install nginx
  • nginx 설치 확인:  nginx가 설치 여부 확인
    brew list nginx
  • nginx 실행:
    sudo nginx
  • nginx 중지: nginx 중지 명령어를 사용
    sudo nginx -s stop
  • nginx 재시작: 설정 변경 후 nginx를 재시작 명령어
    sudo nginx -s reload

 

Nginx.conf 파일 바꾸기

(기존 파일을 복사하여 하나 더 이름을 바꾸어 만들어서 만든다.  ex) my_nginx.conf )

cd /usr/local/etc/nginx/nginx.conf

 

nginx.conf 파일을 vi 명령어를 통해 연다.

vi nginx.conf

 

다른 conf 파일로 nginX 실행하기

 sudo nginx -c /usr/local/etc/nginx/my_nginx.conf

 

vi편집기를 이용하여 문서 편집 해주기

# /usr/local/etc/nginx/my_nginx.conf

events {
    worker_connections 1024;
}

http {
    # 에러 로그 설정 (경로는 환경에 따라 조정)
    error_log /usr/local/var/log/nginx/error.log;

    # upstream 블록 정의 (origin이라는 이름은 그저 마음대로 지정)
    upstream origin {
        server localhost:8080; -> 이용할 아무 포트
        server localhost:8090; -> 이용할 아무 포트
    }

	#최초 리슨 포트 지정
    server {
        listen 80;
        server_name localhost;

        #charset koi8-r;

        #access_log logs/host.access.log main;

	#여기서 위에 지정한 이름과 동일하게 지정해야 함
        location / {
            proxy_pass http://origin;
            root html;
            index index.html index.htm;
        }
    }
}

 

그러면 아래 그림과 같이 서버가 구성되었다.

 

Spring boot 와 인텔리제이를 활용해서 잘 실행되는지 확인해보기!!

아래와 같은 실시간 포트번호를 나타내 줄 컨트롤러 하나 생성

 

그 후 인텔리제이 우측 1시 방향에 edit Configuration 클릭

옆에 복사 버튼 누르면 똑같은 어플리케이션이 하나 더 생긴다.

 

그다음 modify option을 누른다.


1. 첫번째 방법

  • Vm option 선택
  • -Dserver.port=포트번호 (원하는 포트번호 입력)
  • -Dserver.port=8090

. 두번째 방법

  • environment variable 선택
  • server.port=포트번호 (원하는 포트번호 입력)
  • server.port=8090

그런 다음 ok

두개를 동시에 실행시켜 본다음

 

 

그런 다음 두개를 서버를 동시에 실행시켜 보면 잘 실행된다.

 

 

localhost에 접속하여 계속 새로고침 해보면 포트 번호가 실시간으로 다르게 화면에 나타난다.