LoadBalancer 란 ?
로드밸런서란 네트워크 트래픽을 분산시켜주는 기술이다. 여러대의 서버나 하드웨어 장비를 통해서 트래픽을 분산시켜준다. AWS에서도 로드밸런서 서비스를 지원한다. AWS 의 로드밸런서 서비스는 Amazon Elastic Load Balancing 으로, EC2 인스턴스 나 컨테이너 등을 사용하여 서비스를 제공하는 경우, 트래픽을 자동으로 분산시켜준다. 기본적으로 round robin 방식으로 트래픽을 분산시킨다고 한다.
Auto Scaling 이란 ?
AWS 오토스케일링은 인스턴스의 수를 자동적으로 (auto) 늘리거나 줄이는 기능이다. 트래픽이 많으면 이를 처리하기 위해서 서버의 성능을 높여야 할 것이다. 반대로 트래픽이 서버 사양에 비해서 적다면 굳이 성능이 좋은 서버를 사용할 필요도 없고, 이는 자원 낭비일 것이다. 따라서 상황에 맞게 오토스케일링을 하여 문제를 해결해야 할 것이다.
오토스케일링에는 두가지 종류가 있다.
1) Autoscale UP & Autoscale Down 오토스케일 업 / 다운
오토스케일 업 / 다운은 장치(CPU, 메모리, 디스크...) 의 성능을 높이거나(UP) 낮추는 방식(DOWN)으로 문제를 해결하는 방식이다.
2) Autoscale OUT & Autoscale IN 오토 스케일 아웃 / 오토스케일 인
오토스케일 아웃 / 인은 노드들을 클러스터로 구성하는 경우에, 노드의 개수를 늘려주거나 (OUT) 노드의 개수를 줄여주는(IN) 방식으로 문제를 해결하는 방식이다.
Application LoadBalancer 구성하기
로드밸런서와 오토스케일링 그룹을 이용해서 웹서비스를 제공해보기로 한다.
EC2 > LoadBalancer 선택하고, 생성하기를 누른다. Applicatino Load Balancer 타입으로 선택했다.
네트워크는 사전에 구성해둔 vpc를 선택했다.
보안그룹 또한 기존에 만들어 두었다. 모든 IPv4 대역에서 ssh 서비스와 http 서비스를 허용한 보안그룹이다.
기본 설정은 다음과 같이 디폴트 값으로 구성했다.
라우팅 설정에서, 타켓 그룹을 지정할 수 있다. 타켓 그룹이 없으므로, Create target group을 눌러 하나 생성한다.
인스턴스 타입으로 선택해서 구성한다.
타겟그룹의 이름과 vpc를 설정한다. vpc를 로드밸런서 구성했을 때 선택한 vpc와 동일한 것으로 선택했다.
설정을 완료후 Create 를 누르고 대시보드에 돌아오면 새로운 타겟 그룹이 생성된 것을 확인할 수 있다.
다시 로드 밸런서 구성으로 돌아오자 !! 새로고침 버튼을 누르면 방금 생성한 타겟그룹이 목록에 뜨는데 이것을 선택한다.
모든 설정을 완료했으니 로드밸런서를 생성한다. 로드밸런서 대시보드에서 확인할 수 있다.
Auto Scaling 그룹 구성하기
오토스케일링 그룹을 생성한다.
이름을 new-web-as로 간단히 설정해주었다.
시작 템플릿을 선택한다. 나는 apache 웹서비스를 설치하고 서비스를 실행하도록 만들어 놓은 시작 템플릿을 선택했다.
네트워크 구성은 편집하기를 눌러서, 로드밸런서에서 사용한 것과 동일한 vpc를 선택해주어야 한다. 사용할 서브넷도 추가해주자.
위에서 만든 로드밸런서를 드디어 오토스케일링 그룹에 연결을 해볼 때이다. 기존 로드밸런서 연결을 선택한다.
상태 확인 유형에 ELB 항목이 있다. 이는 Elastic LoadBalancer로, 설정해두면 health check와 함께 인스턴스들을 관리해준다. 만약 인스턴스들 중에서 한 인스턴스가 웹 서비스 실행에 문제가 발생해서 웹서비스가 멈췄다고 가정해보자. ELB를 켜두면, 문제가 있는 인스턴스의 상태가 unhealthy 임을 감지한다. 문제가 발생한 인스턴스를 자동으로 지우고, 새로운 인스턴스를 생성한다. 즉 ELB는 단순히 인스턴스의 개수 뿐만 아니라 정상적으로 서비스를 실행하는지까지 관리해준다.
상태 확인 유예 기간의 경우 디폴트 값이 300초인데, 너무 긴 것같아서 100초로 설정했다. (본인 편한대로 구성하면 될 것 같다.)
그룹 크기는 원하는 인스턴스의 개수를 설정하는 항목이다. 원하는 용량을 3으로 지정했으므로 기본적으로 오토 스케일링 그룹은 인스턴스의 개수를 3개로 맞춰서 관리해주게 될 것이다.
구성을 완료하였으므로, 생성한다. 대시보드를 확인하면 새로운 오토 스케일링 그룹이 생성된 것을 확인할 수 있다. 인스턴스의 개수도 3개가 된 것을 확인할 수 있다. 원하는 용량을 3개로 설정해주었기 때문이다.
로드밸런싱 결과 확인하기
로드밸런서 대시보드로 이동해서 DNS 주소를 복사한다.
브라우저에 DNS 주소를 붙여넣으면 아래와 같이 웹서비스가 잘 실행되는 것을 확인할 수 있다.
새로 고침하여 다시 접속하면 이번에는 ip 주소가 다른 호스트 (즉, 다른 인스턴스)로 트래픽이 간 것을 확인할 수 있다. 로드밸런서가 라운드 로빈 방식으로 잘 동작하고 있다
'Cloud Engineering > AWS' 카테고리의 다른 글
AWS Private Link 생성하는 방법 (VPC Endpoint) (0) | 2023.05.17 |
---|---|
[AWS] RDS 생성하기 & EC2 인스턴스에서 RDS 접속하기 (0) | 2023.03.10 |
[AWS] S3 Bucket AWS CLI 설치 및 명령어 정리 (0) | 2023.03.08 |
[AWS] Amazon VPC 구성하기 - 라우팅테이블/NAT게이트웨이/인터넷게이트웨이/EC2인스턴스 (0) | 2023.03.08 |
[AWS] S3 Bucket 생성하기 & S3 퍼블릭 ACL 설정하기 (0) | 2023.03.07 |