Post

[AWS] ELB(Elastic Load Balancer)

✅ ELB란?


EC2 인스턴스, 컨테이너 및 IP 주소와 같은 여러 대상에 대해 수신 애플리케이션 또는 네트워크트래픽을 여러 가용 영역에 배포합니다. 애플리케이션에 대한 트래픽이 시간이 지남에 따라 변경되므로 Elastic Load Balancing가 로드 밸런서를 확장하고, 대다수의 워크로드에 맞게 자동으로 조정할 수 있습니다.

로드 밸런서는 워크로드를 가상 서버와 같은 다수의 컴퓨팅 리소스로 분산합니다. 로드 밸런서를 사용하면 애플리케이션의 가용성(High Availability)과 내결함성(Fault Tolerant)이 높아집니다.

  • L7: Http, Https (ALB, CLB)
  • L4: TCP, UDP, TLS (NLB)

✅ELB 생성


☑️보안 그룹 생성

Untitled

EC2탭으로 가서 일단 elb용 보안그룹을 생성합니다. 새로 생성한 이유는 https 인바운드 규칙이 들어간 보안그룹을 따로 만들기 위함입니다.

☑️CLB(Classic Load Balancer) 생성

Untitled

첫번째로는 CLB를 만들어봅니다. EC2 탭에서 로드밸런서 탭에서 **로드밸런서 생성** 누른 다음, **Classic Load Balancer - 이전세대** 버튼을 누릅니다.

Untitled

네트워크 매핑에서는 제가 만든 vpc와 2a, 2c 서브넷으로 지정합니다.

Untitled

보안그룹도 아까 제가 만든 보안그룹을 선택합니다. 그리고 리스너를 정하는데 https에서 443리스너 포트를 인스턴스 포트에서는 http:80으로 합니다.

Untitled

보안 리스너는 전에 만든 ACM 인증서를 선택합니다. 상태검사는 기본 index.html로 합니다.

Untitled

인스턴스는 aws cloud9에서 만든 인스턴스와 개별로 만든 인스턴스 2개를 선택합니다.

Untitled

생성된 로드밸런서를 보면 DNS 엔드포인트가 있습니다. 복사합니다.

Untitled

여전히 https로 접속이 안되는데요

Untitled

Route53 탭에서 레코드를 만들어야합니다. 원래는 ‘값’이라는 입력값에 IP를 입력했다면 이번엔 **‘별칭’** 이라는 옵션을 체크하면 밑에 트래픽 라우팅 대상에 Application/Classic Load Balancer 선택후 아까 복사한 DNS서버를 붙여넣기합니다.

Untitled

이제 https로 접속이 되며 새로고침 할때마다 2개의 인스턴스가 번갈아가며**(Round Robin)** 요청됩니다!

☑️대상 그룹(Target Group)생성

Untitled

이번엔 EC2탭에서 대상그룹을 만들어 보겠습니다. 대상 유형은 인스턴스입니다.

Untitled

프로토콜 포트는 TCP 80으로 합니다. 그리고 제가 만든 vpc를 선택하고 상태검사는 그냥 “/”로 합니다.

☑️NLB(Network Load Balancer) 생성

Untitled

이제는 NLB를 만들어보겠습니다. 똑같이 로드밸런서 생성 버튼 누른 뒤 NLB를 선택합니다. 체계는 인터넷 경계! 이게 AWS에서는 번역이 됐다 안 됐다 하는데 **Internet-facing = 인터넷 경계**입니다. 이렇게 알고있어야 나중에 한글이 나오든 영어가 나오든 헷갈리지 않습니다.

Untitled

리스너 및 라우팅에서 TCP프로토콜로 80포트에 아까 만든 대상 그룹을 선택합니다. 443포트(https로 쓸)는 TLS로 합니다. 왜냐하면 NLB는 4계층이라 https, http가 아니라 TCP, TLS로 합니다.

Untitled

이제 마찬가지로 Route53탭에서 레코드를 생성합니다.

Untitled

이것도 역시 잘 됩니다. NLB는 IP Hash 알고리즘이라 새로고침 할때마다 웹서버가 바뀌지 않습니다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.