네트워크 모드 선택 - Amazon Elastic Container Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

네트워크 모드 선택

인바운드 및 아웃바운드 네트워크 연결을 설계하기 위해 앞서 언급한 접근 방식은AWS, 컨테이너 내부에 있지 않더라도. 컨테이너를 실행할 때AWS를 사용하려면 다른 수준의 네트워킹을 고려해야 합니다. 컨테이너를 사용하는 주요 이점 중 하나는 여러 컨테이너를 단일 호스트에 압축 할 수 있다는 것입니다. 이 작업을 수행 할 때 동일한 호스트에서 실행중인 컨테이너를 네트워크화하는 방법을 선택해야합니다. 다음은 선택할 수 있는 옵션입니다.

호스트 모드

host네트워크 모드는 Amazon ECS에서 지원되는 가장 기본적인 네트워크 모드입니다. 호스트 모드를 사용하면 컨테이너의 네트워킹이 컨테이너를 실행하는 기본 호스트에 직접 연결됩니다.


                    호스트 네트워크 모드를 사용하는 컨테이너가있는 네트워크의 아키텍처를 보여주는 다이어그램입니다.

포트에서 수신 대기 하는 Express 응용 프로그램을 사용 하 여 Node.js 컨테이너를 실행 하는 가정3000위 다이어그램에서 설명한 것과 유사합니다. 이 경우host네트워크 모드를 사용하는 경우 컨테이너는 기본 호스트 Amazon EC2 인스턴스의 IP 주소를 사용하여 포트 3000에서 트래픽을 수신합니다. 이 모드는 사용하지 않는 것이 좋습니다.

이 네트워크 모드를 사용하면 심각한 단점이 있습니다. 각 호스트에서 태스크의 인스턴스화를 하나 이상 실행할 수 없습니다. 이는 첫 번째 작업만 Amazon EC2 인스턴스의 필수 포트에 바인딩할 수 있기 때문입니다. 컨테이너 포트를 사용할 때 컨테이너 포트를 다시 매핑 할 수있는 방법도 없습니다.host네트워크 모드. 예를 들어 응용 프로그램이 특정 포트 번호에서 수신 대기해야하는 경우 포트 번호를 직접 다시 매핑 할 수 없습니다. 대신 응용 프로그램 구성을 변경하여 포트 충돌을 관리해야 합니다.

사용할 때 보안 영향도 있습니다host네트워크 모드. 이 모드를 사용하면 컨테이너가 호스트를 가장 할 수 있으며 컨테이너가 호스트의 개인 루프백 네트워크 서비스에 연결할 수 있습니다.

host네트워크 모드는 Amazon EC2 인스턴스에서 호스팅되는 Amazon ECS 작업에 대해서만 지원됩니다. Fargate 에서 Amazon ECS를 사용할 때는 지원되지 않습니다.

브리지 모드

다음으로 바꿉니다.bridge모드에서 가상 네트워크 브리지를 사용하여 호스트와 컨테이너의 네트워킹 사이에 레이어를 만듭니다. 이렇게하면 호스트 포트를 컨테이너 포트에 다시 매핑하는 포트 매핑을 만들 수 있습니다. 매핑은 정적 또는 동적일 수 있습니다.


                    정적 포트 매핑과 함께 브리지 네트워크 모드를 사용하는 네트워크 아키텍처를 보여주는 다이어그램입니다.

정적 포트 매핑을 사용하면 컨테이너 포트에 매핑 할 호스트 포트를 명시 적으로 정의 할 수 있습니다. 위의 예제를 사용하여 포트80호스트의 포트에 매핑되고 있습니다.3000컨테이너에 추가합니다. 컨테이너화된 응용 프로그램과 통신하려면 트래픽을 포트로 보냅니다.80Amazon EC2 인스턴스의 IP 주소로 설정합니다. 컨테이너화 된 응용 프로그램의 관점에서 포트의 인바운드 트래픽이3000.

트래픽 포트만 변경하려는 경우 정적 포트 매핑이 적합합니다. 그러나 이것은 여전히 사용하는 것과 동일한 단점이 있습니다.host네트워크 모드. 각 호스트에서 태스크의 인스턴스화를 하나 이상 실행할 수 없습니다. 이는 정적 포트 매핑이 단일 컨테이너 만 포트 80에 매핑 할 수 있기 때문입니다.

이 문제를 해결하려면bridge네트워크 모드를 다음 다이어그램에 표시된 대로 동적 포트 매핑으로 설정합니다.


                    동적 포트 매핑과 함께 브리지 네트워크 모드를 사용하는 네트워크 아키텍처를 보여주는 다이어그램입니다.

포트 매핑에 호스트 포트를 지정하지 않으면 Docker가 임시 포트 범위에서 사용되지 않는 임의의 포트를 선택하여 컨테이너의 공용 호스트 포트로 할당하도록 할 수 있습니다. 예를 들어, 포트에서 수신 대기하는 Node.js 응용 프로그램3000에는 다음과 같은 임의의 높은 수의 포트가 할당 될 수 있습니다.47760Amazon EC2 호스트에서 해당 호스트를 선택합니다. 이렇게하면 호스트에서 해당 컨테이너의 여러 복사본을 실행할 수 있습니다. 또한 각 컨테이너는 호스트에 자체 포트를 할당 할 수 있습니다. 컨테이너의 각 복사본은 포트에서 트래픽을 수신합니다.3000. 그러나 이러한 컨테이너로 트래픽을 보내는 클라이언트는 임의로 할당된 호스트 포트를 사용합니다.

Amazon ECS를 사용하면 각 작업에 임의로 할당된 포트를 추적할 수 있습니다. 이 작업은 로드 밸런서 대상 그룹을 자동으로 업데이트하고AWS Cloud Map서비스 검색을 사용하여 작업 IP 주소 및 포트 목록을 가질 수 있습니다. 따라서 다음을 사용하여 작동하는 서비스를 더 쉽게 사용할 수 있습니다.bridge모드를 동적 포트와 함께 사용합니다.

그러나, 사용의 한 가지 단점은bridge네트워크 모드는 서비스 통신에 대한 서비스를 잠그기가 어렵다는 점입니다. 서비스는 사용되지 않는 임의의 포트에 할당될 수 있으므로 호스트 간에 광범위한 포트 범위를 열어야 합니다. 그러나 특정 서비스가 다른 특정 서비스와만 통신할 수 있도록 특정 규칙을 만드는 것은 쉽지 않습니다. 서비스에는 보안 그룹 네트워킹 규칙에 사용할 특정 포트가 없습니다.

bridge네트워크 모드는 Amazon EC2 인스턴스에서 호스팅되는 Amazon ECS 작업에 대해서만 지원됩니다. Fargate 에서 Amazon ECS를 사용할 때는 지원되지 않습니다.

AWSVPC 모드

와 함께awsvpc네트워크 모드에서 Amazon ECS는 각 작업에 대해 ENI (엘라스틱 네트워크 인터페이스) 를 생성 및 관리하며, 각 작업은 VPC 내에서 자체 프라이빗 IP 주소를 받습니다. 이 ENI는 기본 호스트 ENI와 별개입니다. Amazon EC2 인스턴스에서 여러 작업을 실행하는 경우 각 작업의 ENI도 별개입니다.


                    AWSVPC 네트워크 모드를 사용하는 네트워크 아키텍처를 보여주는 다이어그램입니다.

앞의 예에서 Amazon EC2 인스턴스는 ENI에 할당됩니다. ENI는 호스트 수준에서 네트워크 통신에 사용되는 EC2 인스턴스의 IP 주소를 나타냅니다. 각 작업에는 해당 ENI 및 사설 IP 주소도 있습니다. 각 ENI는 분리되어 있으므로 각 컨테이너는 포트에 바인딩할 수 있습니다.80작업 ENI에. 따라서 포트 번호를 추적할 필요가 없습니다. 대신 포트로 트래픽을 보낼 수 있습니다.80작업 ENI의 IP 주소에서

사용의 장점은awsvpc네트워크 모드는 각 작업에 트래픽을 허용하거나 거부하는 별도의 보안 그룹이 있다는 것입니다. 즉, 보다 세분화된 수준에서 작업과 서비스 간의 통신을 제어할 수 있는 유연성이 향상됩니다. 동일한 호스트에 있는 다른 작업에서 들어오는 트래픽을 거부하도록 작업을 구성할 수도 있습니다.

awsvpc네트워크 모드는 Amazon EC2와 Fargate 에서 호스팅되는 Amazon ECS 작업에 대해 지원됩니다. Fargate 를 사용할 때awsvpc네트워크 모드가 필요합니다.

를 사용할 때awsvpc네트워크 모드에서는 몇 가지 문제를 염두에 두어야 합니다.

ENI 트렁킹으로 작업 밀도 향상

사용의 가장 큰 단점은awsvpc네트워크 모드를 Amazon EC2 인스턴스에서 호스팅하는 작업을 사용하는 경우 EC2 인스턴스에 연결할 수 있는 ENI 개수에는 한도가 있다는 것입니다. 이렇게 하면 각 인스턴스에 배치할 수 있는 작업 수가 제한됩니다. Amazon ECS는 사용 가능한 ENI 수를 늘려 작업 밀도를 높일 수 있는 ENI 트렁킹 기능을 제공합니다.


                        ENI 트렁킹과 함께 AWSVPC 네트워크 모드를 사용하는 네트워크 아키텍처를 보여주는 다이어그램입니다.

ENI 트렁킹을 사용할 때 기본적으로 두 개의 ENI 첨부 파일이 사용됩니다. 첫 번째는 인스턴스의 기본 ENI이며 모든 호스트 수준 프로세스에 사용됩니다. 두 번째는 Amazon ECS가 생성하는 트렁크 ENI입니다. 이 기능은 특정 Amazon EC2 인스턴스 유형에서만 지원됩니다.

이 예를 생각해 보십시오. ENI 트렁킹이 없으면c5.large인스턴스는 두 개의 작업만 호스팅할 수 있습니다. 그러나 ENI 트렁킹을 사용하면c5.large인스턴스는 최대 10개의 작업을 호스팅할 수 있습니다. 각 작업마다 다른 IP 주소와 보안 그룹이 있습니다. 사용 가능한 인스턴스 유형 및 해당 밀도에 대한 자세한 내용은 단원을 참조하십시오.지원되는 Amazon EC2 인스턴스 유형Amazon Elastic Container Service.

ENI 트렁킹은 지연 시간 또는 대역폭 측면에서 런타임 성능에 영향을 미치지 않습니다. 그러나 작업 시작 시간이 늘어납니다. ENI 트렁킹을 사용하는 경우 자동 크기 조정 규칙 및 작업 시작 시간에 의존하는 기타 워크로드가 예상대로 작동하는지 확인해야 합니다.

자세한 내용은 단원을 참조하십시오.탄력적 네트워크 인터페이스 트렁킹이 있음Amazon Elastic Container Service.

IP 주소 소모 방지

각 작업에 별도의 IP 주소를 할당하면 전체 인프라를 단순화하고 뛰어난 수준의 보안을 제공하는 보안 그룹을 유지 관리할 수 있습니다. 그러나 이 구성은 IP 소진으로 이어질 수 있습니다.

사용자의 기본 VPCAWS계정에 미리 프로비저닝된 서브넷이 있는/20CIDR 범위 즉, 각 서브넷에는 4,091개의 사용 가능한 IP 주소가 있습니다. 내 여러 IP 주소 참고/20범위는 AWS 전용 용도를 위해 예약되어 있습니다. 이 예를 생각해 보십시오. 고가용성을 위해 3개의 가용 영역에 있는 3개의 서브넷에 애플리케이션을 분산합니다. 이 경우 3개 서브넷에서 약 12,000개의 IP 주소를 사용할 수 있습니다.

ENI 트렁킹을 사용하면 시작하는 각 Amazon EC2 인스턴스에는 두 개의 IP 주소가 필요합니다. 하나의 IP 주소는 기본 ENI에 사용되고 다른 IP 주소는 트렁크 ENI에 사용됩니다. 인스턴스의 각 Amazon ECS 작업에는 하나의 IP 주소가 필요합니다. 매우 큰 워크로드를 시작하는 경우 사용 가능한 IP 주소가 부족할 수 있습니다. 이로 인해 Amazon EC2 시작 실패 또는 작업 시작 실패가 발생할 수 있습니다. 이러한 오류는 사용 가능한 IP 주소가 없는 경우 ENI가 VPC 내에 IP 주소를 추가할 수 없기 때문에 발생합니다.

를 사용할 때awsvpc네트워크 모드를 사용하려면 IP 주소 요구 사항을 평가하고 서브넷 CIDR 범위가 요구 사항을 충족하는지 확인해야 합니다. 서브넷이 작고 주소 공간이 부족하기 시작하는 VPC PC를 이미 사용하기 시작한 경우 보조 서브넷을 추가할 수 있습니다.


                        ENI 트렁킹과 함께 AWSVPC 네트워크 모드를 사용하는 네트워크 아키텍처를 보여주는 다이어그램입니다.

ENI 트렁킹을 사용하면 호스트와 다른 IP 주소 공간에서 ENI를 사용하도록 Amazon VPC CNI를 구성할 수 있습니다. 이렇게 하면 Amazon EC2 호스트와 작업에 중복되지 않는 다른 IP 주소 범위를 제공할 수 있습니다. 예제 다이어그램에서 EC2 호스트 IP 주소는172.31.16.0/20IP 범위 그러나 호스트에서 실행 중인 작업에는100.64.0.0/19범위. 두 개의 독립적인 IP 범위를 사용하면 너무 많은 IP 주소를 소비하고 인스턴스에 충분한 IP 주소를 남기지 않는 작업에 대해 걱정할 필요가 없습니다.

IPv6 이중 스택 모드 사용

awsvpc네트워크 모드는 IPv6 이중 스택 모드에 대해 구성된 VPC와 호환됩니다. 듀얼 스택 모드를 사용하는 VPC 는 IPv4, IPv6 또는 둘 다를 통해 통신할 수 있습니다. VPC 각 서브넷은 IPv4 CIDR 범위와 IPv6 CIDR 범위를 둘 다 가질 수 있습니다. 자세한 내용은 단원을 참조하십시오.VPC IP 주소 지정Amazon VPC 사용 설명서.

VPC 및 서브넷에 대한 IPv4 지원을 비활성화하여 IPv4 소모 문제를 해결할 수 없습니다. 그러나 IPv6 지원을 사용하면 외부 전용 인터넷 게이트웨이와 같은 몇 가지 새로운 기능을 사용할 수 있습니다. 외부 전용 인터넷 게이트웨이에서는 공개적으로 라우팅되는 IPv6 주소를 사용하여 인터넷에 대한 아웃바운드 연결을 시작할 수 있습니다. 그러나 외부 전용 인터넷 게이트웨이에서는 인터넷 연결을 허용하지 않습니다. 자세한 내용은 단원을 참조하십시오.외부 전용 인터넷 게이트웨이Amazon VPC 사용 설명서.