본문 바로가기
공부/성능개선

[NCP] Load Balancer 적용

by 얼빵이 2024. 8. 13.
반응형

사내 프로젝트에 Load Balancer 적용이 필요하여

네이버 클라우드 플랫폼을 이용한 로드벨런서 적용기를 남긴다

 

도입 계기

  • 로드벨런서는 순간적으로 몰리는 트래픽 분산과 특정 서버가 장애가 발생 된 경우 대응하기 위해 적용하기로 하였다

 

구성

  • 1대의 로드벨런서
  • 2대 이상의 서버

구현

 

1. 애플리케이션 로드 벨런서 생성

  • 각각의 로드벨런서 별로 지원하는 프로토콜이 다르니 필요 한 부분을 체크하여 진행하자

 

2. 각각 항목에 맞는 정보를 입력해준다

  • VPC가 생성되어있지 않다면 생성해줘야한다 2대의 서버 세팅 당시 설정했음으로 글에서는 패스하도록 한다.
  • 서브넷 생성이 안되어있다면 생성을 진행하자
  • 나는 공인 IP가 필요함으로 공인 IP를 신청한다.

 

3. 서브넷 생성

  • 필요한 정보를 입력해주고 꼭 용도를 LoadBalancer용으로 변경하도록 하자
  • 변경하지 않을경우 로드벨런서 설정 시 서브넷 목록에 나오지 않게 된다.

 

4. 로드벨런서 리스너 설정

  • 나는 HTTP와 HTTPS 통신 모두 사용하기때문에 두개의 80,443을 설정해주었다

 

5. Target Group 선택하기

  • Target Group 이 없다면 생성을 진행하고 넘어가자

 

6. Target Group 생성

  • 프로토콜은 HTTP, 80으로 설정 후 넘어간다

 

7. Health Check 설정

  • 로드 벨런서가 작동될때 어떤 기준으로 작동될지를 정하는 부분이다
  • 나는 Actuator Health Check를 사용중이기때문에 해당 경로로 설정하고 GET으로 진행했다
  • 경로는 / (루트)로 해도 무방하다
  • Health Check 주기는 최소가 5초인데 나는 5초로 설정 후 진행했다
    ( 5초마다 체크하여 서버에 이상이 있는경우 다른쪽으로만 진행되도록 변경됨 )

  • Spring 프로젝트를 사용중인데 Nginx에 80포트를 스프링 프로젝트로 포워딩 되도록 변경해뒀다 
server {
        server_name 127.0.0.1;

        include /etc/nginx/conf.d/project.inc;

        location / {
                proxy_pass $project_url;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";

        }
        listen 80;
        client_max_body_size 2G;
}

 

 

8. Target 추가

  • Health Check를 진행 할 서버를 모두 오른쪽으로 옮겨준다
  • 이후 생성을 마쳐준다

 

 

9. Target Group 상태 확인

  • Target상태 확인을 진행했을때 Status가 Up으로 나온다면 성공이다
  • 테스트 시 즉시 반영이 되는것 같진 않다

 

10. 로드벨런서 생성 확인

  • 접속 정보의 주소로 접근 시 사이트가 정확히 나온다면 성공이다

 

 

11. 도메인 연결

  • 나는 가비아 도메인을 사용하고있기때문에 로드벨런서의 공인 IP를 가비아에 연결하여 도메인 연결을 진행했다.

 

12. 테스트

  • /status/health 의 경우 로드 벨런서가 상태를 확인하는 부분이다
  • 사이트를 한번씩 요청했을때 양쪽으로 분산되어 한번씩 요청되는것을 확인할수있다.
  • 1번 서버

 

  • 2번 서버

 

 

글을 마치며 궁금하신분은 댓글남겨주시면 감사하겠습니다.

반응형

댓글