이 문서에서는 영역 중복 구성에서 Azure Red Hat OpenShift의 웹앱 워크로드에 대한 포괄적인 개요를 제공합니다. 영역 중복 서비스는 서비스 및 데이터를 가용성 영역에 복제하여 단일 실패 지점으로부터 보호하고 고가용성을 제공합니다.
Azure Red Hat OpenShift를 사용하여 프로덕션 환경을 빌드하기 전에 Azure Red Hat OpenShift 랜딩 존 가속기를 읽어 보세요.
아키텍처
이 아키텍처의 Visio 파일을 다운로드합니다.
워크플로
- 사용자가 Azure에 요청을 보냅니다.
- Azure Front Door는 요청을 수신하고 Azure Red Hat OpenShift에서 호스트되는 웹 애플리케이션으로 요청을 라우팅합니다.
- 웹 애플리케이션은 Azure Key Vault, Azure Cosmos DB 및 Azure Container Registry를 사용하여 요청을 실행합니다.
- 웹 애플리케이션은 사용자에게 응답을 다시 보냅니다.
구성 요소
- Microsoft Entra ID 또는 Azure AD B2C 는 사용자를 인증합니다. 이 아키텍처에서 Microsoft Entra ID는 외부 리소스에 대한 안전하고 세분화된 액세스를 제공합니다.
- Azure Front Door 는 모든 인터넷 요청에 대한 공용 인터페이스입니다. 백 엔드 서비스에 대한 전역 HTTP 역방향 프록시 및 캐시 역할을 합니다. Azure Front Door는 계층 4 DDoS(분산 서비스 거부) 공격으로부터 보호를 추가하는 등 이 아키텍처의 보안 및 성능을 향상시킵니다.
- Azure Red Hat OpenShift 는 API 애플리케이션 및 서비스를 호스트하고 백 엔드 서비스에 대한 인터페이스를 제공하는 Kubernetes 기반 컨테이너 오케스트레이터입니다. Azure Red Hat OpenShift는 이 아키텍처의 기본 컴퓨팅 플랫폼 역할을 합니다.
- Container Registry 는 Docker 및 OCI(Open Container Initiative) 규격 컨테이너 이미지를 지원합니다. Container Registry는 영역 중복성을 지원하므로 영역 오류에 대해 고가용성 및 복원력을 제공합니다. 또한 여러 지역에 서비스를 복제하는 지역 복제를 지원합니다. 이 아키텍처에서 Container Registry는 워크로드의 일부인 로컬로 관리되는 컨테이너 이미지에 대한 ARO 클러스터 프라이빗 액세스를 제공합니다.
- Azure Red Hat OpenShift는 가상 네트워크 통합을 사용하여 프라이빗 가상 네트워크를 통해 백 엔드 서비스에 연결합니다. 가상 네트워크 통합은 이 아키텍처의 Azure Red Hat OpenShift 및 기타 Azure 서비스와 함께 보안 네트워크를 제공합니다.
- Azure Cosmos DB 는 프런트 엔드 서비스를 위한 NoSQL 문서 데이터베이스를 제공합니다. Azure Cosmos DB는 이 아키텍처의 워크로드에서 사용자 데이터를 저장하는 데 사용됩니다.
- 프라이빗 엔드포인트를 사용하면 프라이빗 가상 네트워크에서 PaaS Azure 서비스에 연결할 수 있으며 이러한 서비스에서 퍼블릭 엔드포인트를 사용하지 않도록 설정할 수 있습니다. 이 아키텍처에서 가상 네트워크 통합을 사용하는 프라이빗 엔드포인트는 PaaS 서비스와 통신하는 동안 Azure Red Hat OpenShift의 네트워크 트래픽을 비공개로 유지합니다.
- Azure 프라이빗 DNS 프라이빗 엔드포인트 서비스에 필요한 DNS 레코드를 구성하고 업데이트합니다. 이 아키텍처에서 Azure 프라이빗 DNS 프라이빗 네트워크의 이름 확인에 사용됩니다.
- Key Vault 는 Azure 서비스에서 액세스하는 비밀 및 인증서를 안전하게 저장합니다. 이 아키텍처에서 Azure Key Vault는 Azure Red Hat OpenShift에서 실행되는 애플리케이션에 대한 비밀을 안전하게 저장합니다.
- Azure Monitor 및 Application Insights는 가시성을 위해 서비스 로그 및 애플리케이션 성능 메트릭을 수집합니다. 이 아키텍처에서 Azure Monitor는 플랫폼 및 워크로드 로그 모두에 대한 로그 동기화입니다. Application Insights는 특히 워크로드 코드에서 시작되는 로그 및 메트릭을 위한 것입니다.
대안
- Azure 관리형 DNS를 사용하는 것이 좋지만 사용자 고유의 DNS 공급자를 사용할 수 있습니다.
- 대부분의 사용자가 워크로드를 호스트하는 Azure 지역 가까이에 있고 콘텐츠 캐싱이 필요하지 않은 경우 Azure Front Door 대신 Azure 애플리케이션 Gateway를 사용해야 합니다. Azure DDoS Protection을 사용하여 인터넷 연결 Application Gateway 서비스를 보호합니다.
- 프런트 엔드 API, 백 엔드 API 또는 둘 다를 호스팅하는 대신 영역 중복성이 있는 프리미엄 Azure API Management 인스턴스를 배포합니다. API Management 영역 중복성에 대한 자세한 내용은 Azure API Management를 가용성 영역 지원으로 마이그레이션을 참조하세요.
- Azure Red Hat OpenShift 대신 Azure Virtual Machines에서 OCP(OpenShift Container Platform) 또는 OKD(Kubernetes의 원본 커뮤니티 배포)를 사용할 수 있습니다. OCP 또는 OKD는 Azure Red Hat OpenShift와 같이 완전히 플랫폼 관리형 서비스에 대한 IaaS(Infrastructure-as-a-Service) 대안입니다. 영역 중복을 위해 Azure Virtual Machine Scale Sets를 사용해야 합니다. 자세한 내용은 Azure Red Hat OpenShift를 참조하세요.
시나리오 정보
이 아키텍처는 영역 중복 서비스를 고가용성을 제공하고 영역 오류에 복원력이 있는 솔루션으로 구성하는 방법을 설명합니다.
가용성 영역은 각 Azure 지역에서 별도의 물리적 위치입니다. 가용성 영역은 한 지역의 여러 독립 영역에 솔루션을 분산하여 한 영역이 실패할 때 애플리케이션이 계속 작동할 수 있도록 합니다. 이 아키텍처는 많은 지역에서 찾을 수 있는 가용성 영역 인프라를 기반으로 합니다. Azure 가용성 영역을 지원하는 지역 목록은 가용성 영역이 있는 Azure 지역을 참조 하세요.
호스팅 플랫폼이 대규모인 경우 고가용성 유지가 어려운 경우가 많습니다. 고가용성은 지금까지 데이터 일관성 및 고성능 절충을 통해 복잡하고 비용이 많이 드는 다중 지역 배포가 필요했습니다. 가용성 영역은 이러한 많은 문제를 해결합니다. 대부분의 일반 Azure 서비스 및 많은 특수 Azure 서비스는 가용성 영역에 대한 지원을 제공합니다. 이 아키텍처의 모든 Azure 서비스는 영역 중복이므로 배포 및 관리가 간소화됩니다. 자세한 내용은 가용성 영역을 지원하는 Azure 서비스를 참조 하세요.
SLA(서비스 수준 계약)를 유지하기 위해 영역 중복 Azure Red Hat OpenShift는 영역 오류를 포함하여 오류를 관리하고 완화합니다. 영역 중복은 영역 오류에 대해 0의 복구 시간을 제공합니다. 한 지역의 단일 영역을 사용할 수 없는 경우 데이터가 손실되지 않고 워크로드가 계속 실행됩니다. 영역 중복성은 배포 시 구성되고 서비스에서 관리되므로 영역 고정 또는 영역 배포를 관리할 필요가 없습니다.
이 아키텍처 에서 Azure Red Hat OpenShift 클러스터는 해당 클러스터를 지원하는 Azure 지역의 세 가지 가용성 영역에 배포됩니다. 클러스터는 3개의 컨트롤 플레인 노드와 3개 이상의 작업자 노드로 구성됩니다. 중복성을 개선하기 위해 노드는 영역 전체에 분산됩니다.
Azure Front Door, Microsoft Entra ID 및 Azure DNS는 영역 및 지역 전체 중단에 대한 복원력이 있는 전역적으로 사용 가능한 서비스입니다. 이 아키텍처의 다른 모든 서비스는 영역 중복입니다.
잠재적인 사용 사례
Azure Red Hat OpenShift는 Kubernetes를 사용하는 컨테이너 오케스트레이션 서비스입니다. 다음과 같은 많은 사용 사례에 적합합니다.
- 은행업
- 주식 거래
- 전자 상거래
- 소셜 미디어
- 웹 애플리케이션
- 모바일 애플리케이션
- 일괄 처리 애플리케이션
- 미디어 스트리밍
- 기계 학습 워크로드
권장 사항
대부분의 시나리오의 경우 다음 권장 사항을 적용합니다.
Azure Front Door
- 모든 프런트 엔드 애플리케이션에서 Azure 관리형 인증서를 사용하여 인증서 잘못 구성 및 만료 문제를 방지합니다.
- 경로에서 캐싱을 사용하도록 설정하여 가용성을 향상시킵니다. Azure Front Door 캐시는 동적 콘텐츠와 정적 콘텐츠를 AZURE POP(Point-of-presence) 에지 노드에 배포합니다. 캐싱은 원본 서버의 부하를 줄이고 성능을 향상시킵니다.
- Azure Front Door Premium을 배포하고 Microsoft 관리 규칙 집합을 사용하여 WAF(웹 애플리케이션 방화벽) 정책을 구성합니다. 모든 사용자 지정 도메인에 정책을 적용합니다. 방지 모드를 사용하여 원본 서비스 오류를 일으킬 수 있는 웹 공격을 완화합니다.
Azure Red Hat OpenShift
- Azure Red Hat OpenShift가 배포된 Azure 지역이 가용성 영역을 지원하는지 확인합니다. 자세한 내용은 가용성 영역 지원이 있는 Azure 지역을 참조하세요.
- Azure Red Hat OpenShift 클러스터는 일부 서비스에 따라 달라집니다. 해당 서비스가 영역 중복성을 지원하고 구성되었는지 확인합니다. 자세한 내용은 가용성 영역이 지원되는 Azure 서비스를 참조하세요.
- 컨테이너에서 상태를 제거하고 대신 Azure Storage 또는 데이터베이스 서비스를 사용합니다.
- 영역의 하드웨어 오류와 같은 중단에도 불구하고 애플리케이션 서비스를 지속적으로 제공하도록 적절한 중단 예산 구성을 사용하여 배포에 여러 복제본을 설정합니다.
- Azure Red Hat OpenShift에 대한 보안 액세스 요청이 Azure Front Door WAF를 바이패스할 수 없도록 하려면 Azure Front Door 트래픽만 허용합니다. 특정 Azure Front Door 인스턴스에 대한 액세스를 제한하는 방법에 대한 자세한 내용은 Azure Front Door를 사용하여 Azure Red Hat OpenShift에 대한 보안 액세스를 참조 하세요.
Container Registry
- 영역 중복성을 제공하므로 프리미엄 Container Registry 서비스 계층을 사용합니다. 레지스트리 서비스 계층 및 제한에 대한 자세한 내용은 Container Registry 서비스 계층을 참조 하세요.
- 컨테이너 레지스트리가 배포되는 지역은 가용성 영역을 지원해야 합니다.
- ACR 작업은 가용성 영역을 지원하지 않습니다.
자세한 내용은 복원력 및 고가용성을 위해 Container Registry에서 영역 중복 사용 및 Azure Red Hat OpenShift에서 Container Registry 사용을 참조하세요.
Azure Cosmos DB
- Azure Cosmos DB 계정에 로컬 읽기/쓰기 지역을 추가할 때 영역 중복을 사용하도록 설정합니다.
- 지속적인 백업을 사용합니다.
- Azure Cosmos DB 계정에 대한 Azure Private Link를 구성합니다. 프라이빗 엔드포인트를 사용하도록 설정하면 퍼블릭 엔드포인트를 사용하지 않도록 설정합니다.
Key Vault
Key Vault는 가용성 영역을 사용할 수 있는 모든 지역에서 영역 중복입니다. 이 아키텍처에서 Key Vault는 프라이빗 엔드포인트를 사용하도록 설정하고 퍼블릭 엔드포인트를 사용하지 않도록 설정하여 배포됩니다. Key Vault의 프라이빗 엔드포인트에 대한 자세한 내용은 Key Vault와 Private Link 통합을 참조하세요.
프라이빗 Azure DNS 영역
DNS 관리를 간소화하려면 프라이빗 엔드포인트를 프라이빗 Azure DNS 영역과 통합합니다. 자세한 내용은 Azure 프라이빗 엔드포인트 DNS 구성을 참조하세요.
고려 사항
이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Well-Architected Framework를 참조하세요.
안정성
안정성은 애플리케이션이 고객에 대한 약속을 충족할 수 있도록 합니다. 자세한 내용은 안정성대한
이 아키텍처는 가용성, 복원력 및 신뢰할 수 있는 글로벌 서비스 기능을 제공하여 안정성을 보장합니다.
가용성
가용성 영역 인프라가 제대로 구현되면 이 아키텍처는 다른 솔루션보다 저렴한 비용 및 낮은 운영 오버헤드를 위한 뛰어난 가용성을 제공합니다. 이 아키텍처는 영역 중복 서비스가 정의된 SLA 내에서 계속 작동하는 동안 오류를 견딜 수 있기 때문에 Azure 지역에서 영역 오류의 위험을 완화합니다.
지역 오류는 가능성은 낮지만 가능합니다. 지역 오류의 경우 지역 내의 모든 가용성 영역에서 서비스를 사용할 수 없습니다. 이 영역 중복 아키텍처를 다중 지역 아키텍처와 결합하여 지역 오류의 위험을 완화합니다. 전체 지역을 사용할 수 없는 경우 복구 시간을 줄이기 위해 다중 지역 아키텍처를 계획합니다.
다중 지역 디자인은 단일 지역의 다중 영역 디자인보다 더 복잡하고 비용이 많이 들지만 다중 지역 디자인은 가용성과 전반적인 안정성을 더욱 최적화할 수 있는 기회를 제공합니다.
참고 항목
위험 평가를 수행하여 솔루션에 다중 지역 아키텍처가 필요한지 확인합니다.
복원력
가용성 영역을 기반으로 하는 다중 영역 디자인은 대부분의 조직의 비즈니스 요구 사항을 충족하거나 초과하는 가용성 및 복원력을 제공합니다. 그러나 재해 복구를 위해 보조 지역에 데이터를 복제하려는 경우 옵션은 사용하는 Azure 서비스에 따라 달라집니다.
예를 들어, Azure Storage는 블록 blob에 대한 개체 복제를 지원합니다. Azure Cosmos DB와 같은 Azure 데이터 서비스는 연속 백업이 있는 다른 Azure 지역에 데이터 복제를 제공합니다. 재해가 발생한 경우 이러한 기능을 사용하여 솔루션을 복원할 수 있습니다. 자세한 내용은 Azure Cosmos DB에서 특정 시점으로 복원하는 지속적인 백업을 참조하세요.
글로벌 서비스
Azure Front Door 및 Microsoft Entra ID와 같은 글로벌 서비스의 오류는 드물지만 실패의 영향은 높을 수 있습니다. 오류가 발생하는 경우 복구를 개선하려면 Runbook을 준비하고 연습합니다.
예를 들어 Runbook을 사용하여 Azure 애플리케이션 Gateway를 배포하고 Azure Front Door가 복원될 때까지 트래픽을 리디렉션하도록 DNS 레코드를 변경하여 Azure Front Door 가동 중지 시간을 줄일 수 있습니다.
자세한 내용은 ID 및 액세스 관리 인프라의 복원력 구축을 참조하세요.
보안
우수한 보안은 중요한 데이터 및 시스템에 대한 고의적인 공격과 악용을 방어합니다. 자세한 내용은 보안대한
- 프라이빗 클러스터를 배포하는 것이 좋습니다.
- 공용 인터넷에서 액세스하지 않는 Azure 서비스에서 프라이빗 엔드포인트를 사용합니다.
- 기본적으로 Azure의 모든 서비스 간 통신은 암호화된 TLS(전송 계층 보안)입니다. HTTPS 트래픽만 허용하도록 Azure Front Door를 구성하고 최소 TLS 버전을 설정합니다.
- 관리 ID는 사용 가능한 Azure 서비스 간 통신을 인증합니다. 자세한 내용은 Azure 리소스에 대한 관리 ID란?을 참조하세요.
- 클러스터에서 비밀, 인증서 및 연결 문자열 관리하고 보호하려면 Azure Red Hat OpenShift 클러스터를 Azure Arc 지원 Kubernetes에 연결합니다. Key Vault 비밀 공급자 확장을 사용하여 비밀을 가져옵니다.
- 클러스터, 컨테이너 및 애플리케이션에 대한 보안을 제공하도록 컨테이너용 Microsoft Defender를 구성합니다. Defender for Containers는 Azure Arc 지원 Kubernetes를 통해 지원됩니다. Microsoft Defender 또는 다른 이미지 검사 솔루션으로 이미지를 검사하여 취약성을 검색합니다.
- Microsoft Entra ID를 사용하여 Azure Red Hat OpenShift 클러스터에서 사용자(예: SRE, SecOps 또는 애플리케이션 개발자)를 인증하도록 Microsoft Entra 통합을 구성합니다.
비용 최적화
비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 개선하는 방법을 모색하는 것입니다. 자세한 내용은 비용 최적화대한
영역 중복 아키텍처는 서비스가 단일 지역에 배포되기 때문에 다중 지역 대안보다 비용이 저렴합니다. 하지만 다음과 같은 몇 가지 비용 영향을 고려해야 합니다.
- 일부 서비스는 영역 중복을 달성하기 위해 최소한의 인스턴스 또는 복제본을 배포해야 합니다.
- ZRS(영역 중복 스토리지) 및 LRS(로컬 중복 스토리지)의 가격 책정은 다릅니다. 자세한 내용은 스토리지 가격 책정을 참조하세요.
- 프라이빗 엔드포인트는 대부분 프리미엄 Azure 서비스 SKU에서 사용할 수 있습니다. 프라이빗 엔드포인트에는 시간당 요금 및 대역폭 요금이 발생합니다. 자세한 내용은 Private Link 가격 책정을 참조하세요.
리소스를 미리 예약하여 비용을 최적화합니다. 이 아키텍처의 많은 서비스는 예약 용량 가격 책정에 적합합니다. 자세한 내용은 예약을 참조 하세요.
Azure 가격 계산기를 사용하여 비용을 예측합니다.
운영 우수성
운영 우수성은 애플리케이션을 배포하고 프로덕션 환경에서 계속 실행하는 운영 프로세스를 다룹니다. 자세한 내용은 운영 우수성대한
PaaS(Platform as a Service)인 모든 Azure 서비스는 Azure Monitor와 통합됩니다. Azure Monitor 모범 사례(안정성, 보안, 비용 최적화, 운영 우수성 및 성능 효율성)를 따라 다음을 수행합니다.
- 비즈니스 요구 사항의 컨텍스트에서 애플리케이션 상태를 정량화하는 상태 모델을 빌드합니다.
- 적절한 양의 로그 데이터 수집을 구성합니다.
- Azure 대시보드를 만들어 운영 팀을 위한 단일 보기로 데이터를 통합합니다.
- 성공적인 경고 전략을 만듭니다.
- Application Insights를 앱에 통합하여 애플리케이션 성능 메트릭을 추적합니다.
- 직접 작업이 필요할 때 알림을 제공하려면 Container Insights 메트릭 경고 또는 Azure Red Hat OpenShift 경고 UI와 같은 경고 시스템을 사용합니다.
- 리소스의 상태에 대한 인사이트를 얻고 잠재적인 문제를 예측하기 위해 Azure Red Hat OpenShift를 모니터링하고 로깅하는 다양한 방법을 고려합니다.
- Azure Red Hat OpenShift 책임 매트릭스를 검토하여 Microsoft, Red Hat 및 고객이 클러스터에 대한 책임을 공유하는 방법을 이해합니다.
- IaC(Infrastructure as Code)를 배포하기 위한 템플릿 언어인 Bicep을 사용하여 서비스 배포를 자동화합니다. 이 아키텍처의 Azure 서비스에는 프라이빗 엔드포인트가 있으므로 Azure Pipelines 또는 GitHub 호스팅 실행기의 Microsoft 호스팅 에이전트를 사용할 수 없습니다. 대신 Azure Pipelines 또는 GitHub 호스팅 실행기의 자체 호스팅 에이전트와 같은 솔루션을 사용합니다.
- Azure Load Testing 및 Azure Chaos Studio와 같은 서비스를 사용하여 전체 솔루션의 성능 및 복원력을 테스트하기 위해 워크로드의 유효성을 지속적으로 검사합니다.
성능 효율성
성능 효율성은 워크로드의 크기를 조정하여 사용자가 효율적인 방식으로 요구 사항을 충족하는 기능입니다. 자세한 내용은 성능 효율성대한
- Azure Front Door에서 자산을 캐시하여 에지 위치에 워크로드를 배포합니다.
- 구독 한도 및 할당량을 검토하여 서비스가 수요에 맞게 크기 조정되는지 확인합니다.
- Application Insights를 사용하여 애플리케이션 성능을 모니터링합니다.
- 영역 간 연결로 인한 대기 시간을 측정하는 성능 테스트 워크로드입니다.
- 워크로드에 적합한 가상 머신 크기를 선택합니다. 밀도 증가의 이점을 얻을 수 있을 만큼 크지만 클러스터가 실패한 노드의 워크로드를 처리할 수 없을 정도로 크지 않은 크기를 선택합니다.
- Pod 요청 및 제한을 사용하여 클러스터 내에서 컴퓨팅 리소스를 관리합니다. Pod 요청 및 제한은 Pod에 컴퓨팅 리소스를 할당하는 Kubernetes 스케줄러를 알려줍니다. 제한 범위를 사용하여 프로젝트에서 리소스 소비를 제한합니다.
- 애플리케이션 배포 매니페스트에서 Pod 리소스 요청 및 제한을 정의하고 Azure Policy를 사용하여 적용합니다.
- CPU 및 메모리 요청 값을 최적화하고 Vertical Pod Autoscaler를 사용하여 클러스터 리소스의 효율성을 최대화합니다.
- Horizontal Pod Autoscaler를 사용하여 수요를 충족하도록 Pod 크기를 조정합니다.
- 클러스터에 리소스가 부족하여 더 많은 배포를 지원할 때 머신 크기를 조정하도록 ClusterAutoScaler 및 MachineAutoScaler를 정의합니다.
시나리오 배포
이 아키텍처를 배포하려면 Azure Red Hat OpenShift 랜딩 존 가속기 및 연결된 GitHub 리포지토리를 참조하세요.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
주요 작성자:
- Daniel Mossberg | Azure 고객 엔지니어용 FastTrack
- 타루사와 히로 | Azure 고객 엔지니어용 FastTrack
기타 기여자:
- 아요바미 아요데지 | Azure 고객 엔지니어용 FastTrack
- Daniel Larsen | FastTrack for Azure 고객 엔지니어
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.