다음을 통해 공유


Azure Container Registry의 안정성

Azure Container Registry 는 컨테이너 배포에 대한 프라이빗 Docker 컨테이너 이미지 및 관련 아티팩트를 저장하고 관리하는 데 사용되는 관리되는 컨테이너 레지스트리 서비스입니다.

Azure를 사용하는 경우 안정성은 공유 책임입니다. Microsoft는 복원력 및 복구를 지원하는 다양한 기능을 제공합니다. 이러한 기능이 사용하는 모든 서비스 내에서 작동하는 방식을 이해하고 비즈니스 목표 및 가동 시간 목표를 충족하는 데 필요한 기능을 선택할 책임이 있습니다.

이 문서에서는 일시적인 오류, 가용성 영역 중단 및 지역 중단을 포함하여 다양한 잠재적인 중단 및 문제에 대해 Container Registry를 복원하는 방법을 설명합니다. 또한 백업을 사용하여 다른 유형의 문제에서 복구하는 방법을 설명하고 Container Registry SLA(서비스 수준 계약)에 대한 몇 가지 주요 정보를 강조 표시합니다.

안정성을 위한 프로덕션 배포 권장 사항

프로덕션 워크로드의 경우 다음 작업을 수행하는 것이 좋습니다.

  • 가장 포괄적인 안정성 기능을 제공하는 Container Registry의 프리미엄 계층을 사용합니다. 또한 프리미엄 계층은 프로덕션 컨테이너 워크로드에 필수적인 더 높은 성능 제한, 향상된 보안 기능 및 고급 기능을 제공합니다. 서비스 계층 및 기능에 대한 자세한 내용은 Container Registry 서비스 계층을 참조하세요.

  • 가용성 영역을 지원하는 지역에 Container Registry를 프로비전합니다.

  • 다중 지역 시나리오의 경우 특정 지리적 및 규정 준수 요구 사항에 따라 여러 지역에 레지스트리를 배포하도록 지역 복제를 구성합니다.

안정성 아키텍처 개요

Container Registry는 고가용성 및 데이터 내구성을 제공하기 위해 분산된 Azure 인프라를 기반으로 합니다. 이 서비스는 안정성을 보장하기 위해 함께 작동하는 몇 가지 주요 구성 요소로 구성됩니다. 다음 다이어그램에서는 핵심 서비스 아키텍처를 보여 줍니다.

클라이언트 액세스, 컨트롤 플레인, 데이터 평면 및 스토리지 계층 구성 요소가 있는 Container Registry 서비스 아키텍처를 보여 주는 다이어그램

  • 컨트롤 플레인은 레지스트리 구성, 인증 구성 및 복제 정책에 대한 홈 지역의 중앙 집중식 관리 구성 요소입니다.

  • 데이터 평면은 지역 및 가용성 영역에서 컨테이너 이미지 밀어넣기 및 끌어오기 작업을 처리하는 분산 서비스입니다.

  • 스토리지 계층은 컨테이너 이미지 및 아티팩트를 유지하는 콘텐츠 주소 지정 가능한 Azure Storage 솔루션입니다. 여기에는 자동 중복 제거, 미사용 암호화 및 기본 제공 복제가 포함됩니다.

Microsoft는 다음과 같은 유형의 유지 관리를 포함하는 기본 Container Registry 인프라를 관리할 책임이 있습니다.

  • 레지스트리 관리를 위한 컨트롤 플레인 유지 관리

  • 지역 및 가용성 영역에서 컨테이너 이미지 작업에 대한 데이터 평면 유지 관리

고객은 다음 작업을 담당합니다.

  • 애플리케이션 수준 복원력: 컨테이너 애플리케이션 및 오케스트레이션 플랫폼에서 적절한 재시도 논리 및 장애 조치(failover) 처리를 구현합니다.

  • 영역 복원력 구성: 컨테이너 레지스트리가 가용성 영역을 지원하는 지역에 배포되었는지 확인합니다.

  • 지역 복제 구성: 지리적 배포, 규정 준수 및 성능 요구 사항에 따라 지역 복제에 적합한 지역을 선택합니다.

또한 Container Registry는 컨테이너 빌드 및 유지 관리 작업을 자동화하는 데 도움이 될 수 있는 작업을 지원합니다. 작업은 Microsoft에서 관리하는 컴퓨팅 인프라에서 실행되며 수동, 이벤트 기반 또는 예약된 트리거를 지원합니다. 자세한 내용은 Container Registry 작업을 사용하여 컨테이너 이미지 빌드 및 유지 관리 자동화를 참조하세요.

Note

Container Registry는 클라우드 기반 Container Registry와 동기화되는 온-프레미스 또는 원격 복제본인 연결된 레지스트리를 지원합니다. 연결된 레지스트리를 사용하는 경우 안정성 요구 사항을 충족하도록 구성해야 합니다. 연결된 레지스트리는 이 문서의 범위를 벗어납니다.

일시적인 오류에 대한 복원력

일시적인 오류는 구성 요소에서 짧고 간헐적인 오류입니다. 클라우드와 같은 분산 환경에서 자주 발생하며 작업의 일반적인 부분입니다. 일시적인 오류는 짧은 시간 후에 스스로 수정됩니다. 일반적으로 영향을 받은 요청을 다시 시도하여 애플리케이션이 임시 오류를 처리할 수 있는 것이 중요합니다.

모든 클라우드 호스팅 애플리케이션은 클라우드 호스팅 API, 데이터베이스 및 기타 구성 요소와 통신할 때 Azure 임시 오류 처리 지침을 따라야 합니다. 자세한 내용은 임시 오류 처리를 위한 권장 사항을 참조하세요.

Container Registry는 여러 메커니즘을 통해 일시적인 오류를 내부에서 처리합니다. 이 서비스는 레지스트리 작업에 대한 자동 재시도 논리를 구현하고 효율적인 리소스 사용을 위해 연결 풀링을 유지 관리합니다. Container Registry 작업은 밀어넣기 및 끌어오기 작업의 안전한 재시도를 허용하는 idempotent로 설계되었습니다. 작업(Task)은 여러 유형의 작업(Operation)을 수행할 때 발생하는 일시적인 오류를 자동으로 처리합니다.

Container Registry를 사용하는 클라이언트 애플리케이션의 경우 레지스트리 작업을 수행할 때 지수 백오프를 사용하여 적절한 재시도 정책을 구현합니다. 일반적인 일시적인 오류에 대한 기본 제공 재시도 메커니즘을 포함하는 공식 Docker 클라이언트 또는 Container Registry SDK를 사용합니다.

가용성 영역 오류에 대한 복원력

가용성 영역은 Azure 지역 내에서 물리적으로 별도의 데이터 센터 그룹입니다. 한 영역이 실패하면 서비스가 나머지 영역 중 하나로 전환될 수 있습니다.

영역 중복은 지역 내의 여러 가용성 영역에 레지스트리 데이터 및 작업을 분산하여 단일 영역 오류로부터 컨테이너 레지스트리를 보호합니다. 컨테이너 이미지 끌어오기 및 푸시 작업은 영역 중단 중에 계속 작동하며 정상 영역으로 자동 장애 조치(failover)가 수행됩니다.

영역 중복은 가용성 영역을 지원하는 지역의 모든 레지스트리에 대해 기본적으로 사용하도록 설정되므로 추가 비용 없이 리소스의 복원력이 자동으로 향상됩니다. 이 향상된 기능은 기본 및 표준을 비롯한 모든 서비스 계층에 적용되며 새 레지스트리와 기존 레지스트리 모두에 적용되었습니다.

중요합니다

Azure Portal 및 기타 도구에는 아직 영역 중복 업데이트가 정확하게 반영되지 않았을 수 있습니다.

레지스트리 구성의 zoneRedundancy 속성은 여전히 false로 표시될 수 있지만 지원되는 지역의 모든 레지스트리에 대해 영역 중복이 활성화되어 있습니다.

Microsoft는 이 기본 동작을 더 투명하게 반영하도록 포털 및 API 화면을 적극적으로 업데이트하고 있습니다. 이전에 사용하도록 설정된 모든 기능은 예상대로 계속 작동합니다.

Considerations

Considerations

  • 작업: 컨테이너 레지스트리 작업은 현재 가용성 영역을 지원하지 않습니다. 영역 중복은 레지스트리 서비스 자체에 적용되지만 작업(Task)이나 작업(Operation)에는 적용되지 않습니다.

  • 지역 복제: 레지스트리에서 지역 복제를 사용하는 경우 가용성 영역이 있는 지역에서 만든 모든 복제본이 자동으로 영역 중복으로 생성됩니다.

Cost

영역 중복은 추가 비용 없이 컨테이너 레지스트리에 포함됩니다.

가용성 영역 지원 구성

  • 영역 중복 레지스트리를 만듭니다. 지원되는 지역에서 레지스트리를 만들면, 자동으로 영역 중복성을 가집니다. 새 레지스트리를 만드는 방법에 대한 자세한 내용은 Container Registry에서 영역 중복 레지스트리 만들기를 참조하세요.

  • 기존 레지스트리에서 영역 중복을 사용하도록 설정합니다. 가용성 영역이 있는 지역에 있는 레지스트리는 자동으로 영역 중복이 됩니다. 영역 중복을 사용하도록 설정할 필요가 없습니다.

  • 영역 중복을 사용하지 않도록 설정합니다. 영역 중복을 사용하지 않도록 설정할 수는 없습니다.

모든 영역이 정상인 경우의 동작

이 섹션에서는 Container Registry 리소스가 영역 중복을 위해 구성되고 모든 가용성 영역이 작동할 때 예상되는 사항에 대해 설명합니다.

일반 작업 중의 Container Registry 영역 중복을 보여 주는 다이어그램.

  • 영역 간의 트래픽 라우팅: Container Registry는 내부 라우팅 기능을 사용하여 지역 내의 모든 가용성 영역에 데이터 평면 작업을 자동으로 분산합니다. 레지스트리 서비스는 외부 부하 분산 장치를 요구하지 않고 요청을 정상 영역으로 자동으로 라우팅합니다.

  • 영역 간 데이터 복제: 컨테이너 이미지, 매니페스트 및 메타데이터를 포함한 레지스트리 데이터는 여러 가용성 영역에서 비동기식으로 복제됩니다. 고가용성 및 데이터 내구성을 유지하기 위해 영역 간에 변경 내용이 빠르게 복제됩니다. 복제는 비동기이지만 일반적으로 몇 분 내에 완료되며 복제 중에 모든 영역을 읽기 및 쓰기 작업에 사용할 수 있습니다.

영역 오류 중 동작

이 섹션에서는 Container Registry 리소스가 영역 중복을 위해 구성되고 가용성 영역 중단이 발생할 때 예상되는 사항에 대해 설명합니다.

영역을 사용할 수 없게 되면 Container Registry는 레지스트리 작업에 미치는 영향을 최소화하면서 장애 조치(failover) 프로세스를 자동으로 처리합니다.

영역 실패 시 Container Registry 동작을 보여 주는 다이어그램. 자동 장애 조치(failover)는 정상 영역으로 라우팅되며, 영역 하나가 사용할 수 없는 것으로 표시되어 있습니다.

  • 감지 및 응답: Container Registry 플랫폼은 가용성 영역에서 오류를 자동으로 감지하고 응답을 시작합니다. 서비스는 트래픽을 나머지 정상 영역으로 자동으로 라우팅합니다. 영역 장애 조치(failover)를 시작하는 데 수동 개입이 필요하지 않습니다.

  • 알림을: 영역이 다운된 경우 Microsoft는 자동으로 알리지 않습니다. 그러나 Azure Service Health 를 사용하여 영역 오류를 포함하여 서비스의 전반적인 상태를 파악할 수 있으며, 문제를 알리도록 Service Health 경고를 설정할 수 있습니다.

    Azure Monitor에서 레지스트리 가용성 메트릭을 모니터링할 수도 있습니다.

  • 활성 요청: 가용성 영역을 사용할 수 없는 경우 잘못된 가용성 영역의 리소스에 연결된 진행 중인 모든 요청이 종료됩니다. 다시시도해야 합니다.

  • 예상 데이터 손실: 잘못된 영역에서 최근에 수행된 쓰기는 다른 지역에 복제되지 않을 수 있습니다. 즉, 영역이 복구될 때까지 손실될 수 있습니다. 데이터 손실은 일반적으로 15분 미만이 될 것으로 예상되지만 그 시간이 보장되는 것은 아닙니다.

  • 예상 가동 중지 시간: 트래픽이 정상 영역으로 리디렉션되므로 자동 장애 조치(failover) 중에 약간의 가동 중지 시간이 발생할 수 있습니다. 이 가동 중지 시간은 일반적으로 대부분의 레지스트리 작업에 대해 몇 초 정도입니다. 일시적인 오류 처리 모범 사례에 따라 애플리케이션에 대한 영역 장애 조치(failover)의 영향을 최소화하는 것이 좋습니다.

  • 트래픽 경로 변경: 플랫폼은 구성을 변경하지 않고도 트래픽을 정상 영역으로 자동으로 다시 라우팅합니다.

영역 복구

영향을 받는 가용성 영역이 복구되면 Container Registry는 복구된 영역을 포함하여 사용 가능한 모든 영역에 작업을 자동으로 분산합니다. 이 서비스는 수동 개입을 요구하거나 서비스 중단을 일으키지 않고 트래픽 및 데이터 배포의 균형을 조정합니다.

영역 오류 테스트

Container Registry 플랫폼은 영역 중복 레지스트리에 대한 트래픽 라우팅, 장애 조치(failover) 및 장애 복구(failback)를 관리합니다. 이 기능은 완전히 관리되므로 가용성 영역 오류 프로세스를 시작하거나 유효성을 검사할 필요가 없습니다.

지역 전체 오류에 대한 복원력

Container Registry는 레지스트리에서 프리미엄 계층을 사용하는 경우 지역 복제를 통해 원시 다중 지역 지원을 제공합니다. 지역 복제는 원하는 여러 지역에 레지스트리 복제본을 만듭니다. 레지스트리 리소스를 배포하는 지역을 홈 지역이라고 합니다.

지역 복제를 사용하면 지역 가동 중단에 대한 복원력을 사용할 수 있습니다. 레지스트리가 지역 복제된 상황에서 지역 가동 중단이 발생하면 선택한 다른 지역에서 레지스트리 데이터를 계속 사용할 수 있습니다. 지역 복제를 사용하도록 설정하지 않으면 지역 중단 발생 시 데이터를 사용할 수 없게 될 수 있습니다.

지역 복제를 사용하여 해당 지역 내의 컨테이너 이미지에 대한 로컬 액세스 권한을 얻고 전역적으로 분산된 애플리케이션의 대기 시간을 줄일 수도 있습니다.

Container Registry를 배포하고 지역 복제를 사용하도록 설정하는 경우 Microsoft는 Azure Traffic Manager를 사용하여 복제본 간에 데이터 평면 요청을 배포하고 지역 복제본을 사용할 수 없는 경우 복제본 간에 자동으로 장애 조치(failover)합니다.

Container Registry 지역 복제는 Azure 쌍을 이루는 지역을 활용하지 않습니다. 특정 지리적, 성능 및 규정 준수 요구 사항에 따라 복제를 위해 Azure 지역의 조합을 임의로 선택할 수 있습니다. 각 지역 복제된 레지스트리는 레지스트리 엔드포인트로 작동합니다. 이미지 밀어넣기, 끌어오기 및 관리 작업을 포함하여 대부분의 레지스트리 작업을 지원합니다.

이 섹션에서는 안정성과 관련된 지역에서 복제에 대한 정보를 요약합니다. 자세한 내용은 Container Registry의 지역 복제를 참조하세요.

지역 지원

지역 복제는 프리미엄 계층이 지원되는 모든 Azure 지역에서 사용할 수 있습니다. Azure가 해당 지역과 쌍을 이루는지 여부에 관계없이 모든 지역 조합에 복제할 수 있습니다.

Requirements

지역 복제를 사용하려면 프리미엄 계층을 사용해야 합니다.

Considerations

  • 영역 중복 복제본: 가용성 영역이 있는 지역에서 만드는 모든 복제본은 자동으로 영역 중복입니다.

  • 컨트롤 플레인: 컨트롤 플레인은 홈 지역에서 실행됩니다. 홈 지역을 사용할 수 없는 경우 컨트롤 플레인 작업을 사용할 수 없으며 레지스트리의 구성을 수정하지 못할 수 있습니다.

  • 작업: Container Registry 작업은 현재 지역 복제본을 지원하지 않습니다. 작업은 항상 홈 지역에서 실행됩니다. 홈 지역을 사용할 수 없는 경우 작업이 실행되지 않습니다.

Cost

각 지역에서 복제된 지역은 해당 지역의 프리미엄 계층 가격 책정에 따라 별도로 청구됩니다. 초기 복제 및 지속적인 동기화 중에 수행되는 지역 간 데이터 전송에도 송신 요금이 적용됩니다.

다중 지역 지원 구성

레지스트리를 만드는 동안 지역 복제를 구성하거나 기존 프리미엄 레지스트리에 추가할 수 있습니다. 지역 복제는 Azure Portal, Azure CLI, Azure PowerShell 또는 Azure Resource Manager 템플릿을 통해 구성할 수 있습니다.

  • 지역 복제된 레지스트리를 만듭니다. 추가 지역을 지정하여 레지스트리를 만든 후 지역 복제를 구성합니다.

  • 기존 레지스트리에서 지역 복제를 사용하도록 설정합니다. 지역 복제 기능을 사용하도록 설정하려면 기존 기본 또는 표준 계층 레지스트리를 프리미엄 계층으로 업그레이드합니다. 복제 지역은 언제든지 변경할 수 있습니다. 자세한 내용은 지역 복제 구성을 참조하세요.

  • 지역 복제를 사용하지 않도록 설정합니다. Azure Portal 또는 명령줄 도구를 통해 개별 지역 복제본을 제거합니다. 홈 지역 레지스트리를 제거할 수 없습니다.

모든 지역이 정상인 경우의 동작

이 섹션에서는 레지스트리가 지역 복제용으로 구성되고 모든 지역이 작동할 때 예상되는 사항에 대해 설명합니다.

Container Registry 다중 지역 작업을 보여 주는 다이어그램. 글로벌 클라이언트는 Traffic Manager를 통해 여러 지역의 레지스트리 엔드포인트에 연결합니다.

  • 지역 간 트래픽 라우팅: Container Registry는 각 지역 엔드포인트가 읽기 및 쓰기를 포함하여 모든 데이터 평면 작업을 독립적으로 제공할 수 있는 활성-활성 구성에서 작동합니다. 컨테이너 밀어넣기 및 끌어오기 작업과 같은 데이터 평면 작업은 성능 기반 기준이 있는 Traffic Manager를 사용하여 성능에 가장 적합한 지역 엔드포인트를 결정해 자동으로 라우팅됩니다.

  • 지역 간 데이터 복제: 지역 복제는 최종 일관성과 함께 비동기 복제를 사용하여 구성된 모든 지역에서 컨테이너 이미지와 아티팩트가 자동으로 동기화됩니다. 이 서비스는 콘텐츠 주소 지정 가능한 스토리지를 사용하여 고유한 이미지 계층만 효율적으로 복제합니다. 이 방법은 대역폭 사용량 및 복제 시간을 최소화합니다. 읽기 및 쓰기 작업은 모든 지역 복제된 지역에서 작동합니다. 모든 지역에서 변경된 내용은 다른 모든 지역에 복제됩니다.

    복제는 일반적으로 변경 후 몇 분 내에 완료됩니다. 그러나 데이터 복제 시점은 확실하게 보장할 수 없습니다. 큰 컨테이너 이미지 또는 고주파 업데이트는 모든 지역에서 복제하는 데 더 오래 걸릴 수 있습니다.

지역 오류 중 동작

이 섹션에서는 레지스트리가 지역 복제를 위해 구성되고 주 지역에서 중단이 발생할 때 예상되는 사항에 대해 설명합니다.

지역을 사용할 수 없게 되면 컨테이너 작업은 대체 지역 엔드포인트를 계속 사용할 수 있습니다.

지역별 실패 시의 Container Registry 동작을 보여 주는 다이어그램.

  • 감지 및 응답: Container Registry는 각 지역 복제본의 상태를 모니터링하고 트래픽을 다른 지역으로 리디렉션합니다.

  • 알림을: Microsoft는 지역이 다운된 경우 자동으로 알리지 않습니다. 그러나 Azure Service Health 를 사용하여 지역 오류를 포함하여 서비스의 전반적인 상태를 파악할 수 있으며, 문제를 알리도록 Service Health 경고를 설정할 수 있습니다.

    Azure Monitor의 각 지역 엔드포인트에 대한 레지스트리 가용성 메트릭을 모니터링할 수도 있습니다.

  • 활성 요청: 현재 사용할 수 없는 지역으로 전송 중인 활성 요청은 실패하며 해당 요청을 정상 지역으로 보낼 수 있도록 다시 시도해야 합니다.

  • 예상 데이터 손실: 결함이 있는 지역에서 최근에 수행된 쓰기는 다른 지역에 복제되지 않을 수 있습니다. 이 오류는 지역이 복구될 때까지 이러한 쓰기가 손실될 수 있음을 의미합니다. 일반적으로 데이터 손실은 15분 미만이 될 것으로 예상되지만 그 시간이 보장되는 것은 아닙니다.

  • 예상 가동 중지 시간: 데이터 평면 작업의 경우 장애 조치(failover)가 완료되는 동안 데이터 평면 작업에 약간의 가동 중지 시간이 예상되며 일반적으로 1~2분이 소요됩니다.

    홈 지역을 사용할 수 없는 경우 지역이 복구될 때까지 컨트롤 플레인 작업을 사용할 수 없습니다.

  • 트래픽 경로 변경: 지역을 사용할 수 없게 되면 컨테이너 작업이 정상 지역의 다른 복제본으로 자동으로 라우팅됩니다. 클라이언트는 레지스트리와 상호 작용하는 엔드포인트를 변경할 필요가 없습니다. Microsoft는 라우팅, 장애 조치(failover) 및 장애 복구(failback)를 자동으로 처리합니다.

지역 복구

지역이 복구되면 Traffic Manager 라우팅을 통해 해당 지역 엔드포인트에 대한 데이터 평면 작업이 자동으로 다시 시작됩니다. 서비스는 비동기 복제를 최종 일관성과 함께 사용하여 가동 중단 중에 발생하는 모든 변경 내용을 동기화합니다.

지역 오류 테스트

레지스트리와 연결된 지역 중 하나의 실패를 시뮬레이션할 수는 없지만 지역 간에 장애 조치(failover)하는 애플리케이션의 기능을 테스트할 수 있습니다. 지역 복제본을 일시적으로 사용하지 않도록 설정하여 지역 장애 조치(failover)를 시뮬레이션하는 방식으로 Traffic Manager 라우팅에서 지역 복제본을 제거할 수 있습니다. 그런 다음 실제로 지역 가동 중단이 발생하지 않고 컨테이너 작업이 대체 지역으로 성공적으로 장애 조치(failover)되는지 확인할 수 있습니다. 자세한 내용은 복제에 대한 라우팅을 일시적으로 사용하지 않도록 설정하는 방법을 참조하세요.

복제본을 다시 사용하도록 설정하면 Traffic Manager에서 다시 활성화된 복제본으로 트래픽 라우팅을 다시 시작합니다. 또한 메타데이터 및 이미지는 모든 지역에서 데이터 일관성을 보장하기 위해 다시 사용하도록 설정된 복제본에 최종 일관성과 동기화됩니다.

백업 및 복원

Container Registry는 레지스트리에서 외부 스토리지 또는 대체 레지스트리로 컨테이너 이미지 및 아티팩트 내보내기를 지원합니다. Container Registry 가져오기 및 내보내기 기능 또는 표준 Docker 명령을 사용하여 재해 복구 시나리오에 대한 중요한 컨테이너 이미지의 복사본을 만듭니다.

대부분의 솔루션의 경우 백업에만 의존해서는 안 됩니다. 대신 이 가이드에 설명된 다른 기능을 사용하여 복원력 요구 사항을 지원합니다. 그러나 백업은 다른 방법이 사용하지 않는 일부 위험으로부터 보호합니다. 자세한 내용은 중복도, 복제 및 백업이란?을 참조하세요.

서비스 수준 약정

Azure 서비스의 SLA(서비스 수준 계약)는 각 서비스의 예상 가용성과 해당 가용성 예상 결과치를 달성하기 위해 솔루션이 충족해야 하는 조건을 설명합니다. 자세한 내용은 온라인 서비스 SLA를 참조하세요.