본문 바로가기

카테고리 없음

nlb endpoint를 이용해 private VPC EC2를 외부로 노출하기

728x90

개요

  • NAT, IGW가 없는 VPC의 EC2를 외부에 노출시키기 위한 작전
  • EC2는 Private Subnet에 있고 IGW, NAT도 없어서 인터넷에서 다운로드가 불가능하다. 이를 위해 TGW를 이용해 인터넷을 사용할 수 있게 할 수 있음
  • 추가로 EC2에 설치된 애플리케이션인 nginx를 외부에 노출시키기 위해 A VPC에 ALB - Endpoint, B VPC에 internal NLB - EC2 이런 구조로 만드는 것이다.

 

준비물

  • NAT, IGW 없는 B VPC의 Private Subnet에 위치한 Private IP를 단 EC2

  • 리스너는 80 포트로 ec2 대상그룹으로 전달하기

  • internal NLB는 B VPC의 Private Subnet에 위치한다.
  • 보안그룹으로는 A VPC CIDR 대역을 80 포트 허용한다

  • 교차 영역 로드 밸런싱은 꼭 켜둬야한다. 그래야 추후 ALB의 타겟그룹에서 NLB의 엔드포인트 서비스가 지정되었을 때 상태 검사 fail이 안 뜬다

 

엔드포인트 서비스 생성

  1. VPC > 엔드포인트 서비스 로 접근하기
  2. 로드밸런서 유형에서 네트워크 선택하면 연결 가능한 internal NLB가 나타난다
  3. 지원 리전을 굳이 설정 안 해도 됨.

4. 생성 완료되면 서비스 이름을 기록해둔다.

5. 승인이 필요하다면 엔드포인트 서비스의 <엔드포인트 연결> 탭에서 진행하면 된다. 이미 승인해서 선택할 수 없지만, <엔드포인트 연결 요청 수락>을 선택하면 됨.

 

엔드포인트

  1. 엔드포인트 생성하기 에서 NLB 및 GWLB를 사용하는 엔드포인트 서비스 선택
  2. 서비스 설정에 엔드포인트 서비스 이름 복사한 거 붙여넣기

3. 서브넷은 A VPC의 Public Subnet, Private Subnet 모두 가능하다.

4. 보안그룹은 아래에서 만들 ALB의 보안그룹을 HTTP 80으로 허용 하면 된다.

5. 그리고 서브넷 연결된 IPv4 주소를 미리 적어둔다. 이제 이 IP주소가 A VPC의 ALB 타겟이 될 IP이다.

 

ALB 생성

  • 이제 A VPC에 External ALB를 만들면 된다.
  • 보안그룹은 일반적으로 하는 HTTP 80 0.0.0.0/0으로 열면 된다.

 

타겟그룹

  • 사용할 포트는 nginx여서 HTTP:80으로 했고, 타겟그룹은 위에서 적어둔 IP 주소로 타겟이 되는 것이다.
  • 대상 유형은 반드시 IP로 설정하기

 

결과

  • ALB DNS로 들어가면 웹 페이지가 정상적으로 나타난다. EC2가 있는 VPC는 IGW도 NAT도 없지만, endpoint service와 인터넷과 연결되는 외부 ALB를 통해 EC2의 nginx 애플리케이션이 외부로 노출이 가능한 것이다.

 

정리

ALB

NLB

728x90