반응형
사내 프로젝트에 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번 서버
글을 마치며 궁금하신분은 댓글남겨주시면 감사하겠습니다.
반응형
'공부 > 성능개선' 카테고리의 다른 글
[ParkNav] 코어 로직 동시성제어 테스트 코드 작성 (0) | 2023.04.27 |
---|---|
[ParkNav] QueryDSL을 이용한 관리자 페이지 성능개선 (0) | 2023.04.27 |
[ParkNav] 예약처리 일관성 테스트 (0) | 2023.04.27 |
[ParkNav] 알고리즘 Version 0 ~ Version 2 (0) | 2023.04.27 |
[ParkNav] QueryDSL을 이용한 성능개선 (0) | 2023.04.19 |
댓글