Today Keys :Endpoint, Service, 엔드포인트, 서비스, Private Link, VPC, AWS, cloud, 아마존, Amazon, NLB, ELB
이번 포스팅은 VPC Endpoint Service를 생성하고, 생성한 Endpoint Service를 Endpoint(Private link)로
생성해서 직접 사용해보는 예제입니다.
본 에제에서 다뤄지는 최종 그림은 다음과 같습니다.
※ 설명에 필요한 컴포넌트만 넣었으면, 전체 컴포넌트가 표기되진 않았습니다.
관련 포스팅 : AWS - VPC : Part 11 [Endpoint-3]
AWS - VPC : Part 9 [Endpoint-2]
AWS - VPC : Part 8 [Endpoint-1]
Endpoint Service는 Endpoint-3 포스팅에서 언급된 것처럼 앞단에 NLB(Network Load Balancer를 구성해야 합니다 .
NLB 구성은 다음과 같이 '인터넷 연결'과 '내부' 용으로 나뉘는 데,
Endpoint-4 포스팅에서는 '인터넷 연결'로 생성한 로드밸런서로 Endpoint Service를 만들고
Endpoint-5에서 '내부'로 생성한 로드밸런서로 Endpoint Service를 각각 만들 것입니다.
(실제 Endpoint Service를 만드는 데는 차이는 없긴합니다.)
NLB를 다음과 같이 생성해 놓았습니다.
서로 다른 AZ에 1개씩 Instance를 생성하였고, 80 서비스를 각각 올려두었습니다.
구성도로 보면 다음과 같습니다.
제 로컬 PC에서 ELB에 대한 도메인을 확인해보면, ELB에 할당된 인스턴스의 EIP로 응답하는 것을 볼 수 있습니다.
앞서 NLB를 생성 할 때. '인터넷 연결'용으로 만들었기 때문에 NLB 생성 시에 할당한 EIP로 응답합니다.
AWS의 ELB를 생성한 VPC가 아닌 다른 VPC이 인스턴스에서 확인을 해도 동일하게 보입니다.
정상적으로 서비스가 되는지 보기 위해서 curl로 확인해보니
제가 설정한 'ZIGISPACE - SVR#1'과 'ZIGISPACE - SVR#2' 라는 값이 정상적으로 보입니다.
다음은 다른 VPC의 인스턴스에서 Traceroute에 대한 값입니다.
실제 통신이 IGW를 통해서 공인 IP로 통신합니다.
이제 본격적으로 Endpoint Service를 만듭니다.
NLB를 생성한 곳에서 Endpoint Service를 생성합니다.
Endpoint Service 생성 시에는 어떤 NLB로 연결할지 고르게 되어 있습니다.
앞서 만든 'ZIGI-ELB-Pub'로 선택합니다.
아래 옵션 중에 '엔드포인트 연결 수락 필수'가 기본적으로 체크되어 있습니다.
여기서는 체크되어 있다는 것만 인지하고 뒤에서 보겠습니다..
서비스 생성 버튼을 누르면 다음과 같이 Endpoint Service 생성이 완료됩니다.
생성이 완료된 안내창과 생성 후 세부정보를 보면 Endpoint Service의 DNS 이름이 있습니다.
이제 이 이름으로 Endpoint를 생성 할 수 있습니다.
이제 Endpoint를 만들겠습니다.
Endpoint를 생성할 때, 예전 포스팅에서는 기본 AWS 서비스로 Endpoint를 만들었다면,
이번에는 '이름으로 서비스 찾기'를 합니다.
그리고 서비스 이름에 앞서 만든 Endpoint Service의 DNS이름을 선택하면 해당 서비스를 찾을 수 있습니다.
Endpint를 만들 VPC와 사용 영역별로 서브넷을 지정합니다.
하나의 가용 영역에 하나의 서브넷만 지정이 가능합니다.
'엔드포인트 생성' 버튼을 누르면 다음과 같이 Endpoint를 만들어 지는 데,
바로 사용 할 수 있는 것이 아니라, '수락 대기 중' 상태로 뜹니다.
앞서 Endpoint Service를 만들 때 '엔드포인트 연결 수락 필수'가 체크되어 있기 때문입니다.
만약 체크를 해제하면 바로 사용할 수 있지만, 그게 아니라면 이렇게 수락이 필요합니다.
Endpoint Service 쪽에서 보면 '엔드포인트 연결' 탭에 수락대기 중인 Endpoint가 확인됩니다.
해당 Endpoint를 선택해서 요청을 수락하면,
이렇게 다시 한 번 요청을 수락할 것인지 묻는 데, 수락을 합니다.
Endpoint가 사용이 가능한 상태로 바뀌게 됩니다.
이제 Endpoint를 만든 VPC에서 Endpoint 도메인으로 질의를 하면,
Endpoint 생성 시에 지정한 VPC의 서브넷으로 Endpoint가 만들어집니다.
Endpoint로 서비스를 호출하면 정상적으로 서비스가 호출되는 것을 확인 할 수 있습니다.
실제 Trace를 직어보면 바로 Endpoint로 만들어진 VPC 내의 서브넷을 호출하고 정상적으로 완료되는 것을 볼 수 있습니다.