안녕하세요
이번 시간에는 이전 시간에 생성했던 애플리케이션 로드밸런서에 오토스케일링 그룹을 연결하여
새로 생성된 서버도 로드 밸런서를 통해 트래픽이 흐르는지 테스트를 진행하겠습니다.
실습을 진행하기 앞서 네트워크 설정은 이전 포스팅에서 확인해 주시면 됩니다.
1. 내 서버 이미지 생성하기
내 서버 이미지를 만든 후 기존 Private Server를 반납합니다. 내 서버 이미지를 사용하지 않고 바로 Launch Configuration으로 만들어도 상관없지만 그럴 경우 Init Script를 통해 서버가 부팅될 때 자동으로 nginx가 설치되게 끔 해주어야 합니다.
2. 오토스케일링 Launch Configuration 생성
Auto Scaling Group은 다음과 같이 Launch Configuration에 정의된 템플릿을 사용하여 서버의 스케일을 조절합니다.
3. 오토스케일링 그룹(Auto Scaling Group) 생성하기
다음으로 Auto Scaling Group을 생성합니다. 이전 포스팅에서 타겟 그룹을 생성하지 않고 오셨다면 타겟 그룹을 먼저 생성한 후 Auto Scaling Group을 생성합니다.
서버 이름 Prefix (최대 7글자) | Scale-Out에 의해 생성되는 서버 이름의 Prefix (저는 hyuk으로 설정) |
최소 용량 | 그룹의 최소 서버 수 (2로 설정) |
최대 용량 | 그룹에서 생성 가능한 최대 서버 수 (4로 설정) |
기대 용량 | 서버의 수는 기대 용량 값에 따라서 조정 (2로 설정) |
쿨다운 기본값 | 서버 생성 시 모니터링 이벤트 아람이 발생하더라도 반응하지 않고 무시하도록 설정한 기간 (기본값 300초) |
헬스 체크 보류 시간 | 서버 인스턴스가 생성되어 상태가 '운영 중'으로 변했더라도 서버의 업데이트 설치 등 작업에 의해 헬스 체크에 정상 응답하지 못하는 경우가 생길 경우 이 해당 기간 동안에는 헬스 체크에 실패하더라도 서버 헬스에 이상이 있다고 판단하지 않음. (기본값 300초) |
헬스 체크 유형 | 헬스 체크 유형을 결정 (로드밸런서) |
오토스케일링에 의해 서버가 정상적으로 생성되었더라도 Init Script나 Health Check가 제대로 되지 않는다면 헬스 체크 보류 시간이 지난 후 자동적으로 서버를 Terminate 시킵니다. 다음과 같이 설정하면 빈 값에는 기본적으로 Default 값이 들어가며 기대 용량만큼 서버가 생성됩니다. 헬스 체크 유형은 로드밸런서를 선택한 후 생성한 타겟 그룹을 연결합니다. Auto Scaling Group을 지울 때는 설정에서 최소, 최대, 기대 용량을 0으로 만든 후에 지울 수 있습니다.
4. 이벤트 설정하기
1) 서버 증가(Increase) 이벤트 룰 설정하기
CPU 사용률에 따라 서버를 증가시키기 위해 네이버 클라우드 플랫폼에서는 Event Rule이라는 기능을 제공하고 있습니다. Cloud Insight (Monitoring)을 구독한 후 Configuration - Event Rule에서 다음과 같이 설정할 수 있습니다. 감시 대상은 오토 스케일링 그룹으로 선택하고 템플릿을 통해 구체적인 조건을 설정합니다. 저의 경우 CPU 사용률이 30% 이상이 1분간 지속된다면 서버가 1개만큼 증가하게 끔 설정하였습니다.
2) 서버 감소(Decrease) 이벤트 룰 설정하기
똑같이 Event Rule에 서버를 감소시키는 이벤트를 설정해 줍니다. 서버탭에서 오토스케일링 그룹에서 설정한 최소 용량 2, 기대 용량 2로 2대의 서버가 생성된 것을 확인할 수 있습니다. 오토스케일링으로 생성되는 서버의 이름을 지정할 순 없습니다. 오토 스케일링 정책 외에도 알람 메세지, Integration, Cloud Functions 등을 액션으로 설정해 줄 수도 있습니다.
5. 부하 발생시키기
(0) Stress를 통해 서버에 CPU 부하 발생시키기
Linux에서 다음과 같이 stress라는 모듈을 통해 서버에 부하를 발생시킬 수 있습니다. 부하에 따라 서버가 증감되는 것을 확인할 수 있도록 서버에 부하를 걸어보겠습니다. 기본적으로 부하가 발생하더라도 서버가 생성되고 부팅된지 얼마 되지 않았다면 헬스 체크 보류 시간, Event Templates으로 설정한 조건의 시간만큼 지나야 서버가 생성되고 반납됩니다.
(1) 2개 서버 중 1개 서버에 CPU 부하
apt update
apt install stress
stress -c 2 //2cpu 100%
현재 한 개의 서버 스펙이 Standard로 2CPU 8 Memory이기 때문에 2 CPU면 50%의 부하를 걸어줄 수 있습니다. (총 CPU 4개 중에 2개를 100% 부하)
(2) 3개 서버 중 1개 서버에 CPU 부하
CPU 부하가 발생했을 때 자동으로 서버가 증가하는 이벤트 룰을 걸어주었기 때문에 서버가 3개 일 때 33%가 된 것을 확인할 수 있습니다. (총 CPU 6개 중에 2개를 100% 부하)
(3) 4개 서버 중 1개 서버에 CPU 부하
CPU 부하가 발생했을 때 자동으로 서버가 증가하는 이벤트 룰을 걸어주었기 때문에 서버가 4개 일때 25%가 된 것을 확인할 수 있습니다. (총 CPU 8개 중에 2개를 100% 부하, 중간에 오류로 서버가 Health Check가 제대로 되지 않아 서버 이름은 바뀌었습니다.)
(4) Target Group 상태 확인
Target Group을 확인하면 오토스케일링 그룹으로 인해 생성된 서버가 타겟 그룹에 잘 잡히는 것을 확인할 수 있습니다.
(5) 부하 해제 후 서버 감소 확인
다음과 같이 부하를 해제했을 때 서버가 하나씩 반납되는 것을 확인할 수 있습니다. 헬스 체크 보류 시간과 Templates에 조건으로 생성된 시간만큼 지난 후 천천히 반납되는 것을 알 수 있습니다.
이번 시간에는 이전 시간에 생성했던 애플리케이션 로드밸런서에 오토스케일링 그룹을 연결하여
새로 생성된 서버도 로드 밸런서를 통해 트래픽이 흐르는지 테스트를 진행해봤습니다.
이렇게 서버를 유연하게 확장 가능한 점이 클라우드 환경의 큰 이점이라고 생각합니다.
감사합니다.
'Cloud > Naver Cloud' 카테고리의 다른 글
[NCP] Auto Scaling에서 Scale-Out 시 Init Script 적용하기 (0) | 2023.10.31 |
---|---|
[NCP] NCP에서 외부(가비아)에서 구매한 도메인 Global DNS에 도메인 등록하기 (0) | 2023.10.30 |
[NCP] NCP에서 LoadBalancer 구성 후 웹 서버 로드밸런싱 테스트하기 (1) | 2023.10.26 |
[NCP] NCP에서 기존 LVM에 LV 용량 증설 및 축소, VG에서 PV 추가 및 제거하기 -Linux (1) | 2023.10.19 |
[NCP] NCP에서 LVM fstab, mount, LV, VG, PV 제거(삭제)하기 -Linux (1) | 2023.10.19 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!