미스터 역마살

AWS 네트워크 #07 - ELB 본문

IT/AWS

AWS 네트워크 #07 - ELB

Mr. YeokMaSsal 2021. 7. 26. 22:40
728x90
반응형

지난이야기

AWS 네트워크 #01 - VPC

AWS 네트워크 #02 - Subnet

AWS 네트워크 #03 - ROUTE TABLE, NAT GATEWAY

AWS 네트워크 #04 - Security Group

AWS 네트워크 #05 - EC2 생성 (Batstion host, private ec2)

AWS 네트워크 #06 - bastion host를 통한 private ec2 접속

 

ELB란?

ELB(Elastic Load Balancer)란 트래픽의 분산을 통해 부하를 줄여주는 기능을 한다. AWS에서는 ELB를 통해 로드밸런싱을 하여 다량의 트래픽에도 서버가 죽지않도록 관리해주는 역할을 하게된다. 

이번에는 ELB를 생성하여 이전시간에 만들었던 아파치에 접속하여 실제 로드밸런싱이 제대로 이루어지고 있는지 테스트를 해볼 것이다.

 

ELB 생성

01. 로드밸런싱 메뉴에서 로드벨런서를 선택 하고 Load Banlancer 생성을 클릭한다.

 

02. ALB 선택

LoadBanlancing에는 4가지가 있다.

  • ALB(Application Load Balancer) : HTTP 및 HTTPS 트래픽을 사용하는 웹 애플리케이션을 위한 유연한 기능이 필요한 경우 사용
  • NLB(Network Load Balancer) : 애플리케이션에 초고성능, 대규모 TLS 오프로딩, 중앙 집중화된 인증서 배포, UDP에 대한 지원 및 고정 IP 주소가 필요한 경우 사용
  • GLB(Gateway Load Balancer) ; GENEVE를 지원하는 타사 가상 어플라이언스 플릿을 배포 및 관리해야 할 경우 사용

우린 HTTP 통신을 해야하니 ALB로 선택한다.

 

03. ALB 설정

설정은 아래와 같이 한다.

  • ALB 이름 입력
  • VPC : 기존 생성 했던 test-vpc 선택
  • 가용영역 : 가용영역은 반드시 public subnet을 선택 해야 하므로 만들어 놓은 public subnet 2개를 선택함

 

04. elb를 위한 새 보안그룹 생성

보안그룹 생성시 새 보안 그룹을 선택하고 80번 포트에 대해 public-sg와 private-sg를 인바운드로 넣어준다.

 

05. 라우팅 설정

elb가 라우팅할 대상을 선택하는 화면이다.

대상그룹의 이름을 test-target으로 설정하고 상태검사에 index.html 을 작성한다.

상태검사란 elb가 주기적으로 해당 인스턴스의 상태가 가동중인지 체크하는 것으로써 상태검사 경로는 체크 경로를 설정하는것을 말한다.

 

06. 대상그룹에 인스턴스 추가

대상그룹이 생성 되었고 이제 대상그룹에 포함될 인스턴스를 추가한다.

우리가 생성 하였던 private ec2 2개를 대상그룹으로 추가한다.

그런다음 생성 버튼을 누른다.

 

그럼 이렇게 elb 모니터링 화면에 추가된것을 볼수 있으며 DNS 이름을 통해 어디서든 나의 WAS에 접근이 가능하다.

 

대상그룹의 Health check 및 로드밸런싱 테스트

이제 ELB 생성 및 대상그룹 생성이 끝났다.
ELB 생성이 끝나게 되면 ELB는 대상그룹에 포함한 인스턴스가 정상적으로 작동 하고 있는지 Healcheck를 하게 된다.

먼저 대상그룹 메뉴로 가게되면 대상그룹 목록이 보인다. test-target을 클릭해보자

 

그럼 이렇게 모니터링 화면이 나오게 되는데 대상 개수가 health 체크가 끝나게 되면 healthy와 unhealthy로 분리된다.

지금 보게 되면 2개모두 unhealthy로 나타난다. 이렇게 되면 elb에서 가용할수 있는 인스턴스가 없다는 얘기이므로 접속이 불가능 하다. 어떻게 해야 할까?

 

먼저 왜 이런 문제가 발생하는지 알아봐야 한다.

최초 elb를 생성할때 만들었던 elb-sg는 private-sg와 public-sg가 모두 인바운드 규칙에 포함되어 있어 통신이 가능하지만 ap가 있는 private-sg는 elb-sg를 인바운드에 추가하지 않았기 때문에 접근 자체가 불가능 하다.

따라서 private-sg의 인바운드 규칙에 elb-sg를 추가시켜줘야한다. (모든 TCP or 80번 포트)

추가해주고 1~5분정도 기다리게 되면 아래와 같이 healthy로 바뀐걸 확인 할 수 있다.

그럼 이제 테스트를 해보자

아 그전에 elb-sg에 80번 포트에 대해서 내 ip를 인바운드 규칙에 추가 해주자

그런다음 로드밸런서 메뉴에서 DNS 이름을 복사한후 인터넷 새창에서 입력 후 엔터를 치게 되면 아래와 같이 PRIVATE SUBNET에 생성 해둔 index.html 파일이 호출되는 것을 알 수 있다.

여기서 새로고침(F5)를 해보면 EC2의 정보가 변경되는것을 확인 할 수 있게 이렇게 순차적으로 들어오는 트래픽에 대해서 ELB가 Round robin 방식으로 로드밸런싱을 진행 하게 된다.

 

끝으로

여기까지 AWS의 네트워크 아키텍처를 구성해보고 실습을 해보았다.

다음부터는 AWS에서 관리하는 DBMS 인 RDS에 대해서 알아보고 기존 On-premise 환경에서 RDS로 넘어갈때 어떻게 하는지 알아보도록 하자

 

 

 

728x90
Comments