Phase 2 — Azure Front Door (Standard) 사용한 글로벌 라우팅 (Azure CLI)
I’m happy to translate the article for you, but I don’t have the content of the post itself—only the source line you provided. Could you please paste the text you’d like translated (excluding the source line, which I’ll keep unchanged)? Once I have the article’s content, I’ll translate it into Korean while preserving all formatting, markdown, code blocks, URLs, and technical terms.
개요
1단계에서는 지역별 App Service를 배포했습니다.
2단계에서는 Azure Front Door (Standard)를 사용하여 글로벌 진입점을 추가함으로써 아키텍처를 확장합니다 – 모든 작업은 Cloud Shell의 Azure CLI를 통해 수행합니다.
일반적인 요청 흐름:
User
↓
Azure Front Door (Global Edge)
↓
Origin Group
↓
App Service (SEA)
쿼터 제한으로 단일 지역만 사용하더라도, 이 설정은 다음을 제공합니다:
- 글로벌 Anycast 진입점
- 엣지 TLS 종료
- 헬스 프로브 기반 라우팅
- 미래를 대비한 다지역 확장
단일 리소스 그룹의 리소스
- Azure Front Door 프로필 (Standard)
- 엔드포인트
- 오리진 그룹
- 오리진 (앱 서비스)
- 라우트
RG=rg-afd-lab
PROFILE_NAME=afd-profile
ENDPOINT_NAME=afd-endpoint
프런트 도어 프로필 만들기
az afd profile create \
--resource-group $RG \
--profile-name $PROFILE_NAME \
--sku Standard_AzureFrontDoor
엔드포인트 만들기
az afd endpoint create \
--resource-group $RG \
--profile-name $PROFILE_NAME \
--endpoint-name $ENDPOINT_NAME \
--enabled-state Enabled
엔드포인트 호스트 이름 가져오기
az afd endpoint show \
--resource-group $RG \
--profile-name $PROFILE_NAME \
--endpoint-name $ENDPOINT_NAME \
--query hostName -o tsv
다음과 같은 호스트 이름을 받게 됩니다:
.z01.azurefd.net
원본 그룹 만들기
ORIGIN_GROUP=app-origin-group
az afd origin-group create \
--resource-group $RG \
--profile-name $PROFILE_NAME \
--origin-group-name $ORIGIN_GROUP \
--probe-request-type GET \
--probe-protocol Https \
--probe-path "/" \
--probe-interval-in-seconds 30
이렇게 하면 /에 대해 30초마다 상태 검사를 수행합니다.
원본 추가 (앱 서비스)
az afd origin create \
--resource-group $RG \
--profile-name $PROFILE_NAME \
--origin-group-name $ORIGIN_GROUP \
--origin-name sea-origin \
--host-name app-sea-3446.azurewebsites.net \
--origin-host-header app-sea-3446.azurewebsites.net \
--priority 1 \
--weight 1000 \
--enabled-state Enabled
중요
origin-host-header는 App Service 호스트 이름과 일치해야 합니다.- HTTPS 인증서 검증은 기본적으로 적용되며, 일치하지 않을 경우 오류가 발생합니다.
라우트 생성 (표준 SKU는 도메인이 필요합니다)
az afd route create \
--resource-group $RG \
--profile-name $PROFILE_NAME \
--endpoint-name $ENDPOINT_NAME \
--route-name app-route \
--origin-group $ORIGIN_GROUP \
--supported-protocols Http Https \
--patterns-to-match "/*" \
--forwarding-protocol MatchRequest \
--https-redirect Enabled \
--link-to-default-domain Enabled
--link-to-default-domain Enabled 옵션을 생략하면, 명령이 다음과 같이 실패합니다:
(BadRequest) At least one domain is required for the route.
라우트 확인
az afd route list \
--resource-group $RG \
--profile-name $PROFILE_NAME \
--endpoint-name $ENDPOINT_NAME \
-o table
다음과 같이 표시됩니다:
ProvisioningState = SucceededDeploymentStatus = Succeeded
DeploymentStatus = NotStarted인 경우, 라우트가 아직 엣지에서 활성화되지 않은 것입니다.
활성화 트리거
curl https://
첫 번째 요청은 Front Door가 전 세계에 배포되도록 합니다. 성공적인 응답 예시는 다음과 같습니다:
Hello from Southeast Asia
다음과 같은 응답을 받으면:
404 Not Found
X-Cache: CONFIG_NOCACHE
라우트가 아직 엣지에 완전히 배포되지 않은 상태입니다 (구성 수준 문제이며 백엔드 문제는 아닙니다).
백엔드 직접 확인
curl -I https://app-sea-3446.azurewebsites.net
- 백엔드가
200을 반환하면 문제는 라우트 활성화에 있습니다. - 라우트가 여전히 멈춰 있다면 삭제하고 다시 생성하십시오:
az afd route delete # add appropriate identifiers
az afd route create # repeat the creation command
재생성은 전역 재배포를 강제합니다.
원본 그룹 검사
az afd origin-group show \
--resource-group $RG \
--profile-name $PROFILE_NAME \
--origin-group-name $ORIGIN_GROUP
확인해야 할 핵심 필드:
"probePath": "/""probeProtocol": "Https""provisioningState": "Succeeded"
아키텍처 다이어그램 (텍스트 버전)
Internet
↓
Azure Front Door Edge (Anycast)
↓
Origin Group
↓
App Service (SEA)
단일 지역만 사용하더라도 이제 다음을 갖게 됩니다:
- 전역 진입점
- 엣지 TLS 종료
- 헬스 프로브 라우팅
- 프로덕션 준비 구조
- 다중 지역 확장 기능
Phase 2의 주요 교훈
- Standard SKU는 라우트에 대한 도메인 연결이 필요합니다.
DeploymentStatus = NotStarted는 엣지가 아직 활성화되지 않았음을 나타냅니다.CONFIG_NOCACHE 404는 백엔드 오류가 아니라 구성 수준의 응답입니다.- route object는 전역 엣지 배포를 트리거합니다.
- 활성화 전에 헬스 프로브가 성공해야 합니다.
다음 단계 (Phase 3)
- Web Application Firewall (WAF) 추가
- 맞춤 도메인 + 관리형 TLS 구성
- Azure Monitor 진단 활성화
- 활성/수동 장애 조치 구현
- 다중 지역으로 확장