EB 2개 생성 후 API 통신 시 TroubleShooting

EB를 통해 배포 자동화를 하고, 2 개의 EB끼리 API 통신을 하는 경우가 있다.
하지만 배포마다 EB 밑 단의 EC2의 공인 아이피가 바뀌므로, 상대 EB-ELB의 도메인을 질의했을 때, ELB의 Security Group에 요청하는 EC2의 정보가 없으므로, 요청이 거부된다. 간단하게 그림으로 표현하면 아래와 같다.170809_야놀자_EB_관련.PNG

위와 같은 현상은 보안 그룹을 규칙의 원본 또는 대상으로 지정할 경우 규칙은 보안 그룹과 연결된 모든 인스턴스에 영향을 주기 때문이다. 유입 트래픽은 퍼블릭 IP 주소 또는 탄력적 IP 주소가 아닌 원본 보안 그룹과 연결된 인스턴스의 프라이빗 IP 주소를 기반으로 허용된다. EB에서 제공하는 도메인의 경우, DNS 질의를 하기 때문에, VPC 외부로 통신을 했어야 하고, 공인 IP로 통신하게 된다. 그러므로 공인 IP를 상대 ELB SG에 추가하는 작업이 필요하다. 하지만 자동화 하는 방법은 없을까?? (참고로 internal ELB로 만들면 문제가 없이 도메인으로 정상 통신된다)

해결책 1. 배포 때마다 새로 생성되는 EC2에 대해서 Public IP를 고정하는 방법이 있다
⇒ 기존에 SG에 추가된 EIP를 disassociate 및 reassociate 하는 AWS CLI 스크립트 작성이 필요할 것으로 보이며, 상대 ELB에 해당 EIP만 SG에 추가하면 된다.

해결책 2. 배포 때마다 새로 생성되는 EC2의 Public IP를 불러와 상대 ELB SG에 추가하는 방법이 있다
⇒ EC2의 유저데이터에 메타데이터를 이용하여 새로 생성된 EC2의 Public IP를 가져와, AWS CLI를 이용하여 상대 측 ELB에 추가하는 스크립트를 이용하여 자동화 할 수 있다. 하지만 이 경우, 보안 상으로기존에 있던 SG의 삭제도 자동화가 필요하다.

해결책 3. EB 배포시 EC2를 Private network으로 두고, 모든 트래픽을 Public Network에 있는 NAT를 통해서 통신하도록 하는 방법
⇒ Public Subnet에 NAT Gateway를 생성하고, EIP를 배정합니다. EB에서 배포 시 Private network에 생성되더라도 모든 트래픽이 NAT를 통하기 때문에 NAT의 EIP만 상대 EB SG에 추가해서 통신하면 된다.

170809_야놀자_EB_관련_2.PNG

 

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중