로드 밸런서 없이 ECS 컨테이너(EC2/ECS 서비스)에 도메인 이름을 추가하는 방법은 무엇입니까?

로드 밸런서 없이 ECS 컨테이너(EC2/ECS 서비스)에 도메인 이름을 추가하는 방법은 무엇입니까?

ECS 서비스(Fargate가 아닌 EC2)에 도메인 이름을 추가하는 방법을 찾고 있습니다.

분명히 말하면 DNS가 도메인 이름 A 또는 AAAA 이름을 확인하는 솔루션을 찾고 있습니다.(A 또는 AAAA를 가리키는 경우 CNAME일 수 있음). 이것이 어떤 네트워크 모드에서 작동하는지는 중요하지 않습니다. 컨테이너는 host, bridge, 중 하나에 배치될 수 있습니다.awsvpc 솔루션이 작동하는 경우!

awsvpcFargate 외부에서는 실행할 수 없습니다.

AWS VPC가 필요한 솔루션은 ECS/EC2와 호환되지 않으며 Fargate에서만 실행 가능한 것으로 보입니다. 이유여기:

awsvpc 네트워크 모드를 사용하는 각 Amazon ECS 작업은 이를 호스팅하는 Amazon EC2 인스턴스에 연결된 고유한 탄력적 네트워크 인터페이스(ENI)를 받습니다.네트워크 인터페이스 수에는 기본 할당량이 있습니다.Amazon EC2 Linux 인스턴스에 연결할 수 있습니다.기본 네트워크 인터페이스는 해당 할당량에 대해 하나로 계산됩니다..

따라서 a는 t3.medium2개의 작업만 실행할 수 있고 심지어 t3.2xlarge3개만 실행할 수 있습니다(제한).여기)

서비스 검색이 실행 가능하지 않습니다.

서비스 검색은 네트워크 컨테이너 유형 host에 대한 SRV 유형 DNS 레코드만 추가합니다 . bridge우리가 실행하는 대부분의 소프트웨어는 SRV 레코드를 이해하지 못합니다. A 및 AAAA 레코드가 필요합니다.

awsvpc서비스 검색은 네트워크 유형 컨테이너 에 대한 A 및 AAAA 레코드를 생성합니다 . 다시 awsvpc실행 가능하지 않게 됩니다.

AWS App Mesh는 실행 가능하지 않습니다.

우리는 앱 메시 설정을 시도했고 거의 즉시 우리 작업이 필요하다는 말을 들었습니다.awsvpc

̅\(트)

로드 밸런서는 실행 불가능한 것으로 보입니다.

이는 일부 서비스에서 작동할 수 있습니다. 그러나 서비스가 HTTP가 아니거나 서비스가 SSL 클라이언트 인증서로 클라이언트를 인증해야 하는 큰 구멍에 빠지게 됩니다.

비 HTTP/클라이언트 SSL 서비스에 대해 많은 IP 로드 밸런서를 생성하는 것은 비용이 많이 듭니다.

<호언장담>

AFAIK, Kubernetes는 이것을 사소한 것으로 만들었을 것입니다. docker swarm에도 이런 기능이 있습니다. 우리가 이 사소한 일 하나를 찾으려고 얼마나 많은 시간을 소비했는지 정말 놀랐습니다.<\rant>

질문

로드 밸런서 없이 ECS/EC2 컨테이너에 도메인 이름을 추가하는 방법은 무엇입니까?

답변1

명확히 하자면, ECS 컨테이너에 고유하고 탄력적인 네트워크 인터페이스를 연결하는 것을 원하지 않습니다(인스턴스당 제한으로 인해). 이는 테라포밍 등이 쉽기 때문입니다.

systemd를 통해 자신만의 AppMesh 솔루션을 구축하십시오.

systemd 시작을 통해 실행되는 bash 스크립트를 사용하여 IMDS에 액세스하여 ECS 서비스에 대한 공개 IP 주소를 조회한 다음 AWS CLI를 사용하여 DNS 레코드를 업데이트합니다. 이것은 분명히매우지연 바인딩이므로 TTL을 매우 낮게 설정해야 합니다.

다음 답변: "그러지 마세요"

답변2

나는 그 질문에 대해 명확하지 않습니다. 서비스 검색은 도메인 이름(네임스페이스)을 지원합니다. 내가 알 수 있는 한 실제로는 필수입니다. 즉, ECS 서비스에 SD를 사용하려면 정의해야 하는 임의의 네임스페이스(예: .local 또는 .my.domain)가 어디에 있는지 myservice참조해야 합니다 .myservice.<domain><domain>여기에 예가 있습니다.SD를 사용하는 스택.

참고로 이 모든 것은내부클러스터에 대한 정보와 내부 서비스 검색이 작동하는 방식(예: ECS 서비스가 다른 ECS 서비스를 검색하는 방식)

[편집] ECS 서비스를 노출하고 싶지만 로드 밸런서를 사용하고 싶지 않은 경우 다른 옵션은 API GW를 다음과 같이 사용하는 것입니다.이 블로그 게시물에 설명된. 일반적으로 Fargate 작업의 임의 공용 IP 주소는 일시적이고 Fargate 작업이 왔다 갔다 할 때 정렬을 유지하기 위한 복잡한 메커니즘을 구축해야 하기 때문에 R53에서 임의의 공용 IP 주소를 등록하고 싶지 않습니다. 당신도 고려했나요?앱 러너?

답변3

관련 정보