AWS ECS의 IPv6 대응은 까다로움

4429 단어 AWSECSelbipv6tech

요약

  • 이 기사는 AWS ECS가 IPv6에 대응하는 응용 프로그램을 구축하려 할 때 발생한 오류를 정리한 기사
  • 입니다.
  • 장애가 발생한 원인은 IP 주소(IPv6) 유형의 대상 그룹(이하 TG)
  • 때문입니다.
  • ECS 서비스를 만들 때 IPv6 유형의 TG를 사용하는 ELB를 선택하면 정기적으로 ELB에서 끊기고 작업이 재구성될 수 있음
  • (2022년 5월까지) ECS에서 IPv6를 지원하는 응용 프로그램을 구축할 때 IPv6를 지원하는 다른 AWS 서비스를 유연하게 활용할 수 있는 메커니즘
  • 이 필요하다.

    배경.


    작업 중에는 AWS ECS를 사용하여 IPv6 주소에 맞는 API 서버를 구축할 예정입니다.
    원래는 전원을 켤 때 사용하는 앱으로, 전원을 켤 때 IPv6 통신만 하면 된다.
    AWS로 옮겨도 가급적 사양을 변경하려 하지 않기 때문에 ELB와 ECS 임무 간 통신도 IPv6에서 하려고 한다.
    나는 TG가 IPv6 주소를 등록할 수 있다는 것을 알고 있기 때문에 IPv4 유형의 TG와 같이 구축하면 된다고 생각한다.

    ECS 서비스 작성 후


    ECS 서비스를 만들고 한동안 기다렸지만 TG의 헬스스테이션에는 헬스/un헬스가 표시되지 않았을 뿐만 아니라 계속 등록되지 않았기 때문에 컨트롤러에서 ECS 작업의 IPv6 주소를 수동으로 TG에 등록하면 안전합니다.
    이런 점에서 위화감이 있지만 이때 특별히 불신하지 않고 앱을 평가한 것이다.

    하지만 잠시 후 왠지 언헬스가 됐다.
    아니오, 헬스가 돼서 컬이 ALB에 접근할 수 있는 DNS 이름이기 때문에 프로그램은 괜찮을 겁니다.
    한동안 방치한 후 클라우드 트레일을 보니 대량의 이벤트가 발생했다RegisterTargets.

    사건의 상세한 상황을 살펴보니 모든 사건에 다음과 같은 오류 정보가 발생했다.
    "errorCode": "ValidationException",
    "errorMessage": "The IP address '10.***.***.***' is not a valid IPv6 address",
    
    어머, IPv6 유형의 TG인데 왜 IPv4 주소로 오류 메시지를 보내요?

    AWS 지원 문의


    그 후에 나는 또 여러 차례 새로운 ECS 서비스를 했는데 증상은 똑같았다.(※ Fargate/EC2형은 동일)
    해결할 수 없기 때문에 이 두 가지 증상에 대해 AWS 지원에 다음과 같은 내용을 문의했다.
  • ECS 서비스 생성 시 작업의 IPv6 주소가 TG에 자동으로 등록되지 않음
  • ECS 작업 약 1시간 동안 반복 재구성
  • AWS 지원 답변


    부분 발췌문
    이것은 정상적인 행동으로 기대되는 것이 아니다.
    ECS 서비스에서 시작된 ECS 임무는 NLB의 타겟 그룹에 등록할 수 없으며, 그 결과 타겟 그룹 등록에 실패한 지 약 1시간 만에 임무가 ECS 서비스에서 종료된 후 새 임무를 다시 시작하는 작업이 반복됐다.
    ECS 서비스:dev-ecs-서비스(제작된 ECS 서비스 이름)의 활동을 보면 목표 그룹에 대한 등록이 다음과 같은 오류 메시지로 인해 실패했음을 확인합니다.
    (service dev-ecs-service) failed to register targets in (target-group arn:aws:elasticloadbalancing:ap-northeast-1: xxxxxxxx) with (error The IP address '10.xxx.xxx.xxx' is not a valid IPv6 address)
    IPv6 유형의 대상 그룹임에도 불구하고 대상 그룹에 ECS 작업을 등록할 때 IPv4의 주소가 사용되어 대상 등록이 실패했습니다.
    에이, IPv6 유형의 TG가 IPv4를 사용하다니, 이게 어떻게 된 일입니까?내 생각엔
    원인은 아직 밝혀지지 않았기 때문에 며칠을 기다린 후에 다음과 같이 대답했다.
    ■ 작업이 시간당 한 번씩 멈추는 이유
    조사 및 검증 결과 ECS 서비스에서 시작하여 ALB/NLB 목표 그룹에 등록된awsvpc 네트워크 형식의 ECS 작업에서 현재 예상되는 행위임을 알 수 있습니다.
    이것은 현재 ECS 서비스 사양의 제한사항임을 이해해 주시기 바랍니다.
    ALB/NLB의 목표 그룹과 연결된 ECS 서비스에서awsvpc 네트워크 형식의 ECS Fargate 작업을 시작하면 ECS 서비스는 이 작업을 IP 주소 형식의 목표로 목표 그룹에 등록합니다.
    이 때 당사의 검증 등에서 현재 ECS 서비스에서 작업 IPv4 주소를 사용하여RegisterTargets API를 실행하고 있음을 확인하였습니다.
    응, 분명히 IPv6 유형인데 IPv4 주소를 등록해야 한다는 말은 좀

    현재(2022년 5월) 해결 방법


    ECS에서 IPv6 통신을 사용하려면 다음 대응이 필요합니다.
  • TG는 IPv4 유형을 사용하고 NLB에서 IPv6 주소를 고정한다(NLB ECS는 IPv4 통신이다)
  • Lambda 함수를 이용하여awscli를 실행하여 ECS 작업의 IPv6 주소를 TG에 자동으로 등록하는 메커니즘을 만듭니다
  • 내부 통신도 IPv4가 가능하다면 1의 방법은 간단하게 구축할 수 있다. IPv4 유형이기 때문에 TG에 자동으로 등록할 수 있다.
    NLB의 TG에 ALB를 등록할 수 있기 때문에 NLB→ALB→ECS를 구성할 수도 있다.
    나는 아래의 보도가 참고가 될 수 있다고 생각한다.
    https://dev.classmethod.jp/articles/alb-type-target-group-for-nlb/
    IPv6를 통해서만 통신을 하고 싶다면 수동으로 TG에 IPv6 주소를 등록할 수도 있지만 번거롭기 때문에 2가지 방법으로 작업의 IPv6 주소를 자동으로 등록할 수 있다.
    이 메서드는 ECS 서비스를 작성할 때 ELB를 설정하지 않고 ECS 서비스와 작업을 시작해야 합니다.
    더 구체적으로 2의 방법은 ECS 임무RUNNING를 수행할 때TG에 IPv6 주소 등록의 cli, Lambda 함수를 설정하여 ECS 임무STOPPED를 수행하는 cliTG에서 IPv6 주소 등록 해제이다.
    2 방법은 다른 기사로 설명해 줬으면 좋겠다.

    총결산


    ECS의 IPv6 대응은 2022년 5월까지 최소한의 수준으로 IPv6 통신과 같은 방법과 구조를 추가해야 한다는 점을 깨달았다.
    IPv6 대응 시스템을 구축하고 싶은 장면이 그렇게 많지 않은데 참고가 됐으면 좋겠어요.

    좋은 웹페이지 즐겨찾기