인프라

ALB를 통한 이중화 네트워크 구성 (public ec2)

김도리개발자 2023. 2. 24. 02:50

Application Load Balancer를 이용해서 네트워크 이중화를 구성하고, 트래픽을 분산시키는 방식에 대해 알아보자

 

  • EC2의 로드 밸런싱 > 타겟 그룹 설정하기

좌측 메뉴의 로드 밸런싱 > 대상 그룹으로 들어감

  • 로드 밸런서는 기본적으로 트래픽을 받으면 리스너를 통해 타겟 그룹으로 전달하게 되는데 우선 로드 밸런서를 통해 들어온 트래픽을 받을 대상인 타겟 그룹을 먼저 생성한다.

  • ALB는 protocol HTTP, HTTPS를 지원한다.
  • 여기서 설정한 protocol과 port는 ALB와 타겟이 되는 EC2 인스턴스 사이의 통신에 대한 것인데 타겟이 되는 인스턴스들이 여기서 설정하는 protocol과 port로 오는 요청만 받아들인다는 의미이다.

  • 헬스 체크 : 타겟이 되는 인스턴스의 상태가 정상적인지 지속적으로 체크하는 것

타겟 입력 후 Next 버튼 클릭
public-ec2-a1, public-ec2-c1를 선택한 후 include as pending below 버튼 클릭

  • Register targets : 로드 밸런서를 통해 트래픽을 받을 대상을 의미함

타겟으로 등록 완료 후 Create target

 

  • 타겟 그룹으로 트래픽을 분산시켜 줄 로드 밸런서를 만든다.

로드밸런서 메뉴에 들어가서 우측 상단의 Create load balancer
Application Load Balancer의 Create 버튼 클릭

  • 트래픽 : 외부 인터넷에서 들어오는 트래픽을 분산시키는 로드 밸런서를 만들고 있기 때문에 Internet Facing 선택

  • 네트워크 매핑 : 로드 밸런서가 어느 가용영역의 어떤 서브넷으로 트래픽을 보낼지 결정
  • 로드 밸런서의 scheme이 internet facing일 경우 말 그대로 인터넷과 연결되기 때문에 여기서 선택한 Subnet의 라우트 테이블에는 인터넷 게이트웨이를 통해 외부와 통신 가능하다.

보안 그룹 새로 만들어야 해서 Create new security group 클릭
이름, VPC, 인바운드 규칙, 태그 설정 후 보안 그룹 생성 완료
다시 돌아가 SG로 방금 만든 보안 그룹 선택함

  • 리스너와 라우팅 : 로드 밸런서의 트래픽 혹은 request가 들어오게 되면 타겟 그룹으로 전달이 되는데 리스너, 룰에 따라 트래픽 혹은 request가 어느 타겟 그룹으로 갈지 결정이 됨
  • 리스너가 로드 밸런스로 들어온 트래픽 또는 request를 받아 들이고 정보를 분석해서 이를 기반으로 어느 타겟 그룹으로 트래픽을 전달할지 그 역할을 수행하는데 여기서 관련 정보를 해석하고 어느 타겟 그룹으로 전달할지 판단내는 기준이 바로 룰이다.
  • 타겟 그룹을 만들기 위해서는 alb와 타겟이 되는 ec2 인스턴스 사이의 통신에 대한 protocol과 port를 지정해야 하는데 외부 / 클라이언트와 alb 사이의 통신에 대한 protocol과 port를 지정하는 것이라고 보면 된다.
  • 디폴트 액션 : 리스너가 전달받은 트래픽 혹은 request에 대한 기본 액션을 설정하는 것으로, 리스너의 룰이다.

다른 값들이 잘 들어갔나 요약쪽 정독 하고 create 버튼 클릭
로드 밸런서 생성 완료

 

  • 리스너와 룰 확인하기

로드 밸런서를 클릭 후 리스터 탭으로 가서 룰에 링크 걸려 있는 상세보기

  • 로드 밸런서를 만들 때 디폴트 액션으로 설정 했었던 타겟 그룹으로 트래픽을 보내라는 규칙을 확인할 수 있다.
    • 이 룰을 통해 특정 요청이나 헤더 등을 포함하고 있을 때 특정 타겟으로 트래픽을 보낼 수 있는 경로 기반 라우팅도 구성할 수 있다.

로드 밸런서의 디테일 탭에서 DNS 네임 복사
웹사이트에서 열면 이렇게 뜸
public-ec2-a1
public-ec2-c1

  • 웹사이트에서 로드 밸런서의 DNS 네임을 열었을 때 private ip address를 보면 public-ec2-a1의 프라이빗 ip 주소와 같은 것을 볼 수 있다.
    • 로드 밸런서가 들어온 트래픽을 public-ec2-a1으로 보낸 것을 볼 수 있다.

새로고침 하면

  • 이 웹사이트를 새로고침 했을 때 private ip address를 보면 public-ec2-c1의 프라이빗 ip 주소와 같은 것을 볼 수 있다.
    • 로드 밸런서가 들어온 트래픽을 이번엔 public-ec2-c1으로 보낸 것을 볼 수 있다.

 

 

웹브라우저에서 확인한 것 처럼 외부에서 ALB에 접근하게 되면 리스너가 트래픽을 체크하고 정해진 규칙, 설정값에 따라 타겟 그룹, 타겟으로 지정된 인스턴스로 트래픽을 전달하게 된다.

해당 인스턴스는 전달받은 트래픽에 대한 응답 트래픽을 보내고, 웹페이지(호스트 정보)가 나오게 되는 것이다.

두 인스턴스 데이터의 메타 데이터가 이렇게 번갈아서 나오는 이유는 로드 밸런서가 트래픽을 두 인스턴스로 번갈아 보낸다는 것인데 바로 이렇게 네트워크가 이중화로 구성되어 있는 것으로 이해할 수 있다.

 

https://www.inflearn.com/course/lecture?courseSlug=aws-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EC%9D%B8%ED%94%84%EB%9D%BC-%EA%B8%B0%EB%B3%B8&unitId=111941 

 

학습 페이지

 

www.inflearn.com