AWS #10 EC2 ELB

최동민·2022년 12월 19일
0

Elastic Load Balancer

로드밸런싱

사용하는 유저는 다양한 인스턴스에 접속을 할텐데, 모든 인스턴스를 활용하기 위해서는 클라이언트 단에서는 모든 IP주소를 다 알아야 할 뿐만 아니라, 인스턴스 하나가 떨어져 새로 하나가 올라오면 IP가 바뀌게 될 것이고, 이 경우에는 또 별도의 조치까지도 취해주어야 한다.

인스턴스가 수도 없이 많을 때에는 관리비용이 엄청나게 증가하게 될 것.
오토스케일링이 정말 좋지만, 부하를 분산해주는 서비스가 없이는 이를 활용하기가 굉장히 힘들다.

그래서 나온 서비스가 ELB에서 제공하는 로드밸런싱 서비스이다.

다수의 인스턴스들을 로드밸런서에서 한대로 묶어 트래픽을 하나의 경로로 받아서 분산해주는 서비스이다.
유저 입장에서는 하나의 주소로 접속하기만 해도 로드벨런서가 알아서 통신 트래픽들을 분산해주는 것이다.

인스턴스가 떨어져 나가거나, 새로운 인스턴스가 생성되어도 자동으로 처리를 해준다.

Load(부하)를 Balance(분배)해주는 서비스이다.

  • ELB의 특징

  • ELB의 종류

GateWay Load Balance - 트래픽을 먼저 체크
트래픽을 먼저 일종의 네트워크 어플라이언스에 전달시켜 EC2에 도달하기 전 검사하고 분석, 인증, 로깅하는 작업을 수행한다.

  • 대상 그룹 (Target Group)

ALB(Application Load Balance)

유저가 ALB를 통해 통신 - 똑똑한 ALB는 주소를 읽어들이기에 대상 그룹을 인식하여 따라간다.

  • 아키텍쳐
    인스턴스들의 고가용성, 장애 내구성 확보 가능

실습

고급 세부 정보에서 아래 내용 입력
인스턴스는 각각 자신의 meta-data 정보를 불러올 수 있다.
웹 서버를 설치 후, index.html에다 인스턴스아이디를 밀어넣고 웹서버를 실행하는 작업을
EC2 인스턴스가 올라갈 때 자동으로 스크립트로 실행하겠다 라는 내용을 정의해둔 것. 이를 사용자데이터라고 한다.

오토스케일링으로 들어가 버전 2로 수정해준다.
원하는 용량과 최소 용량도 2로 업데이트

이제 사용자데이터를 통해 미리 정해진 스크립트를 실행한 버전으로 인스턴스가 올라가게 될 것.

좌측 메뉴 대상그룹(target group)에서 간단히 대상그룹 생성 후 사용 가능한 인스턴스 2개를 체크 후 아래에 보류 중인 것으로 포함을 클릭. 그리고 대상그룹을 생성한다.

대상그룹이 생성되었다.

이 대상그룹으로 로드밸런싱을 해보자.

우리는 ALB를 선택한다.

HTTP로 통신시 대상그룹을 기존에 만들어둔걸로 지정

생성된 로드밸런서

오토스케일링 그룹에서 로드벨런싱 편집 클릭

타겟그룹 지정 후 업데이트

이제 여기에서 생성되는 모든 인스턴스들은 대상 그룹에 들어가게 된다.

오토스케일링을 통해 대상그룹에 들어가는 것이고,
로드밸런서가 실제로 트래픽을 분산하는 대상이 된다

  • 웹서버가 중지되면 어떻게 될까?
    로드벨런서 입장에서는 웹서버가 죽으면 보여줄게 없으니 비정상인 상황.
    오토스케일링 그룹 입장에서는 웹서버가 올라가 있는지 내려가 있는지 관심이 없고 EC2만 정상적으로 올라가있는지만 신경씀.
    ELB 입장에서는 트래픽 분산하기 위해 트래픽을 보냈는데 아무런 트래픽도 주지 않는다 - 502 Gateway 에러 발생.
    오토스케일링 단에서 서버는 올라가 있지만 웹서버가 없다 라는 걸 인식하고 이를 처리를 할 수 있게 해주어야 함.
    ELB 입장에서는 트래픽 신호를 요청해도 아무것도 받지 못하고 있기에 비정상으로 인식하고 있음.

오토스케일링 그룹에서 상태 확인을 ELB에 맡겨주면 위의 문제를 인식하게 된다.

이제는 오토스케일링도 ELB가 인식한 문제를 공유받게 된다.
오토스케일링 그룹에서도 이를 날리게 된다.

profile
코드를 두드리면 문이 열린다

0개의 댓글