티스토리 뷰

Elastic Load Balancing(ELB, 로드 밸런서)은 앞서 나왔던 로드 밸런서의 역할을 하는 AWS 서비스입니다.

클라이언트의 요청을 직접 받고 로드 밸런서가 관리하는 서버들에게 요청을 골고루 전달해줍니다.

로드 밸런서도 일종의 서버지만 AWS에서 로드 밸런서의 기능을 하는 서버를 내부적으로 관리해주기 때문에 우리는 SSH로 직접 접속할수는 없습니다.

로드 밸런서가 받은 요청을 특정 인스턴스들 혹은 Auto Scaling 그룹으로 전달하도록 설정할 수 있습니다.

로드 밸런서는 너무 많은 요청을 처리하거나 정상적으로 동작하지 않는 서버에는 요청을 보내지 않습니다.

Pricing

애플리케이션 로드 밸런서의 요금은 월 22$ 정도입니다.

 

네트워크 트래픽 분산—Elastic Load Balancing 요금 –Amazon Web Services

명시된 경우를 제외하고 요금에는 VAT 및 해당 판매세를 비롯한 관련 조세 공과가 포함되지 않습니다. 청구지 주소가 일본으로 되어 있는 고객의 경우 AWS 사용 시 일본 소비세의 적용을 받게 됩

aws.amazon.com

대상 그룹

대상 그룹(Target Group)은 로드 밸런서가 요청을 전달할 서버들을 묶어둔 개념적인 그룹입니다.

이 대상 그룹 내에는 인스턴스나 Auto Scaling 그룹이 포함될 수 있습니다.

로드 밸런서에는 대상 그룹 A, B 모두 등록되어 있기 때문에 클라이언트가 ALB(Application Load Balancer)로 보낸 요청들을 4개의 EC2 인스턴스가 나눠서 처리하게 됩니다.

로드 밸런서에 직접 인스턴스나 Auto Scaling 그룹을 등록하지 않고 대상 그룹이라는 개념을 중간에 두는 이유는 하나의 로드 밸런서에 여러 대상 그룹들을 연결할 수 있기 때문입니다.

상태 검사

위에서 말했듯이 로드 밸런서는 관리하는 서버 중 정상적으로 동작하고 있는 서버에만 요청을 전달해줍니다.

정상적으로 동작하는지 확인하는 상태 검사(Health Check) 과정을 거치게 됩니다.

상태 검사를 위해 서버에 물어보는 주기도 설정할 수 있으며, 몇 번 연속으로 비정상 코드를 응답해야만 비정상 상태로 변경할지도 설정할 수 있습니다.

Auto Scaling 그룹, 대상 그룹, 로드 밸런서 구성

1. 로드 밸런서 생성

[로드 밸런싱] ⇒ [로드 밸런서] ⇒ [로드 밸런서 생성] 버튼을 클릭합니다.

2. Application Load Balancer 클릭

HTTP, HTTPS 요청을 받아야 하므로 [Application Load Balancer]의 [생성] 버튼을 클릭합니다.

3. Load Balancer 구성

이름과 리스너, 가용 영역을 지정하고 다음으로 넘어갑니다.

4. 보안 그룹

보안 그룹은 이전에 만들어 둔 web 보안 그룹만 선택하고 다음으로 넘어갑니다.

5. 대상 그룹 생성

라우팅 구성은 클라이언트로부터 받은 요청을 전달할 대상 그룹을 지정하는 곳입니다.

먼저 대상 그룹을 만들어야 합니다.

다음과 같이 설정합니다.

로드 밸런서에서 관리하는 모든 인스턴스를 대상으로 /health 요청을 주기적으로 날리고 HTTP 상태코드 200을 응답하는지 확인하게 됩니다.

💡 /health 상태 검사 라우팅은 따로 미리 구현되어 있어야 합니다.

6. 인스턴스 추가 X

Auto Scaling 그룹 자체를 대상 그룹에 등록할 수 있으므로 인스턴스는 등록하지 않고 다음으로 넘어갑니다.

7. Auto Scaling 그룹 등록

[Auto Scaling] ⇒ [Auto Scaling 그룹] 메뉴를 클릭하고 EXERCISE-GROUP에서 [세부 정보] ⇒ [로드 밸런싱] ⇒ [편집]을 클릭합니다.

이전에 만든 로드 밸런서를 대상 그룹에 추가해줍니다.

[로드 밸런싱] ⇒ [대상 그룹] 메뉴에서 exercise-target-group을 클릭해 대상(target) 탭을 클릭해보면 Auto Scaling 그룹 내에 있는 인스턴스가 대상으로 올바르게 등록된 것을 확인할 수 있습니다.

Load Balancer로 요청 날려보기

[로드 밸런싱] ⇒ [로드 밸런서] 메뉴를 클릭한 뒤 [exercise-lb] 로드 밸런서를 클릭합니다.

DNS 주소로 브라우저에서 접속을 시도하면 샘플 애플리케이션이 올바르게 실행됩니다.

💡 해당 주소를 nginx에 server_name으로 등록하지 않았잖아! 근데 왜?

nginx에서 요청을 받았을 때 정확히 일치하는 서버가 없더라도 요청에 가장 근접한 서버를 찾아서 실행해주기 때문입니다.

'Infra > AWS' 카테고리의 다른 글

로드 밸런서에 도메인 등록 실습 + HTTPS  (0) 2022.03.25
AWS Route 53을 이용한 도메인 등록  (0) 2022.03.25
다중 서버(auto scaling)  (0) 2022.03.13
AWS EC2 - Windows(Putty), Mac OS(Terminal)  (0) 2022.03.12
운영 서버의 특징  (0) 2022.02.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함