인프라

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

김도리개발자 2023. 2. 26. 15:40

private 영역의 ec2 인스턴스를 타겟으로 하는 ALB(Application Load Balancer)를 구성해보자

 

웹서버를 외부와 직접적인 통신이 가능한 public 영역에 그대로 두는 것은 실제 웹서비스를 제공하는데 있어 보안 측면에서 그렇게 적절한 방법은 아니다.

따라서 웹서버를 외부와 직접적인 통신이 제한되어 있는 private 영역에 두고, 이를 ALB를 통해 트래픽을 분산하고 웹 서비스를 제공할 수 있는 환경을 구성해보자

  • target group 생성

EC2 > 로드 밸런싱 > 대상 그룹
타겟 그룹 생성하기
target group name 입력 및 vpc로 lab-vpc 선택
태그 값 설정 후 다음 버튼 클릭
private ec2 인스턴스들을 선택하여 중간의 below 버튼 클릭 후 create target group 버튼 클릭
타겟 그룹 생성 완료!

 

  • 로드 밸런서 생성하기

ec2 > 로드 밸런싱 > 로드밸런서 메뉴를 클릭하고 우측 상단의 create load balancer 버튼 클릭
application load balancer로 create 하기
load balancer의 이름 입력
vpc로 lab-vpc 선택해주고, 맵핑으로는 public-subnet-a1, public-subnet-c1 선택

  • 로드밸런서의 타겟이 private subnet들인데 네트워크 맵핑이 public subnet인 이유는?
    • ec2 인스턴스 같은 리소스들처럼 로드밸런서도 네트워크 인터페이스의 ip를 통해서 통신을 하게 되는데 외부 인터넷과 통신하기 위해서는 네트워크 인터페이스가 인터넷 게이트웨이를 통해 외부 인터넷과 통신이 가능한 subnet에 위치해야 한다.
    • 외부에서의 트래픽이 public subnet에 위치한 로드밸런서의 네트워크 인터페이스를 통해 들어오게 되면 이 트래픽이 private subnet의 ec2 인스턴스로 이동하게 되고, 통신이 가능해진다.

create new sg
새로 만들 보안 그룹의 이름과 설명, vpc, 인바운드 규칙, 태그를 입력 후 생성한다.
보안 그룹 생성 완료
로드밸런서의 보안 그룹으로 새로 만든 lab-vpc-alb-private-sg 선택
리스너 80포트의 디폴트 액션에는 위에서 만들어 줬던 타겟 그룹으로 선택
태그값 입력 후 create load balancer 버튼 클릭
생성 완료

 

  • 로드밸런서 잘 작동 하는지 확인

DNS name 복사하기
새탭에서 열어보기

  • AZ 2c 영역에 있는 EC2 인스턴스인 private-ec2-c1의 프라이빗 IP 주소와 동일한 것으로 잘 보인다.

새로고침 하기

  • AZ 2a 영역에 있는 EC2 인스턴스인 private-ec2-a1의 프라이빗 IP 주소와 동일한 것으로 잘 보인다.

 

  • 새로고침을 계속 해보면 인스턴스의 정보가 번갈아 가며 출력이 되는 것을 볼 수 있다.

 

트래픽이 전달되는 과정은 사용자의 request가 application load balancer를 통해서 private subnet의 ec2 인스턴스로 전달이 되고, request에 대한 response가 alb를 통해 인터넷으로 나가 결과적으로 웹브라우저에 출력이 된다.