여러 Azure 지역에 Azure API Management 서비스 인스턴스 배포

적용 대상: 프리미엄

Azure API Management 다중 지역 배포를 사용하면 API 게시자는 하나 이상의 지원되는 Azure 지역에서 기존 API Management 인스턴스에 지역 API 게이트웨이를 추가할 수 있습니다. 다중 지역 배포를 사용하면 지리적으로 분산된 API 소비자가 느끼는 요청 대기 시간을 줄일 수 있으며 한 지역이 오프라인으로 전환되는 경우 서비스 가용성이 개선됩니다.

지역을 추가할 때 다음을 구성합니다.

  • 지역에서 호스트할 배율 단위의 수.

  • 해당 지역에서 지원하는 경우 선택적 영역 중복성.

  • 기존 지역 또는 지역에서 네트워킹이 구성된 경우 추가된 지역의 가상 네트워크 설정.

Important

단일 지역에 고객 데이터를 저장할 수 있는 기능은 현재 아시아 태평양 지역의 동남 아시아 지역(싱가포르)에서만 사용할 수 있습니다. 다른 모든 지역의 경우 고객 데이터는 지역에 저장됩니다.

다중 지역 배포 정보

  • API Management 인스턴스의 게이트웨이 구성 요소만 여러 지역에 복제됩니다. 인스턴스의 관리 평면 및 개발자 포털은 원래 서비스를 배포한 지역인 지역에서만 호스트됩니다.

  • 가상 네트워크에서 API Management 인스턴스가 배포(삽입)되었을 때 이에 대한 보조 위치를 구성하려면 VNet 및 서브넷 지역이 구성하는 보조 위치와 일치해야 합니다. 주 지역에서 가용성 영역을 추가, 제거 또는 사용하도록 설정하거나 주 지역의 서브넷을 변경하는 경우 API Management 인스턴스의 VIP 주소가 변경됩니다. 자세한 내용은 Azure API Management 서비스의 IP 주소를 참조하세요. 그러나 보조 지역을 추가하는 경우 모든 지역에 자체 프라이빗 VIP가 있기 때문에 주 지역의 VIP는 변경되지 않습니다.

  • API 및 정책 정의와 같은 게이트웨이 구성은 추가하는 주 지역과 보조 지역 간에 정기적으로 동기화됩니다. 지역 게이트웨이에 대한 업데이트를 전파하는 데 일반적으로 10초 미만이 걸립니다. 다중 지역 배포는 둘 이상의 지역에서 API 게이트웨이의 가용성을 제공하고 한 지역이 오프라인 상태가 되면 서비스 가용성을 제공합니다.

  • API Management가 트래픽 관리자 엔드포인트에 대한 퍼블릭 HTTP 요청을 수신하는 경우(외부 VNet 및 API Management의 비네트워크 모드에 적용됨) 트래픽은 가장 낮은 대기 시간에 따라 지역 게이트웨이로 라우팅되므로 지리적으로 분산된 API 소비자가 경험하는 대기 시간을 줄일 수 있습니다.

  • 각 지역(주 지역 포함)의 게이트웨이에는 https://<service-name>-<region>-01.regional.azure-api.net의 URL 패턴(예: https://contoso-westus2-01.regional.azure-api.net)을 따르는 지역 DNS 이름이 있습니다.

  • 지역이 오프라인으로 전환되면 API 요청은 실패한 지역 주위에 있는 가장 가까운 다음 게이트웨이로 자동 라우팅됩니다.

  • 주 지역이 오프라인 상태가 되면 API Management 관리 평면 및 개발자 포털을 사용할 수 없게 되지만, 보조 지역은 최신 게이트웨이 구성을 사용하여 API 요청을 계속 처리합니다.

필수 조건

  • 아직 API Management 서비스 인스턴스를 만들지 않은 경우 API Management 서비스 인스턴스 만들기를 참조하세요. 프리미엄 서비스 계층을 선택합니다.
  • API Management 인스턴스가 가상 네트워크에 배포된 경우 추가하려는 위치 및 동일한 구독 내에서 가상 네트워크, 서브넷 및 공용 IP 주소를 설정해야 합니다. 가상 네트워크 필수 구성 요소를 참조하세요.

추가 위치에 API Management 서비스 배포

  1. Azure Portal에서 API Management 서비스로 이동하고 왼쪽 메뉴에서 위치를 선택합니다.
  2. 위쪽 막대에서 + 추가를 선택합니다.
  3. 드롭다운 목록에서 추가된 위치를 선택합니다.
  4. 해당 위치에서 배율 단위 수를 선택합니다.
  5. 필요에 따라 하나 이상의 가용성 영역을 선택합니다.
  6. API Management 인스턴스가 가상 네트워크에 배포된 경우 해당 위치에서 가상 네트워크 설정을 구성합니다. 해당 위치에서 사용할 수 있는 기존 가상 네트워크, 서브넷 및 공용 IP 주소를 선택합니다.
  7. 추가를 선택하여 확인합니다.
  8. 모든 위치를 구성할 때까지 이 프로세스를 반복합니다.
  9. 위쪽 막대에서 저장을 선택하여 배포 프로세스를 시작합니다.

API Management 서비스 지역 제거

  1. Azure Portal에서 API Management 서비스로 이동하고 왼쪽 메뉴에서 위치를 선택합니다.
  2. 제거할 위치에 대해 테이블의 오른쪽 끝에 있는 ... 단추를 사용하여 상황에 맞는 메뉴를 선택합니다. 삭제를 선택합니다.
  3. 삭제를 확인하고 저장을 선택하여 변경 내용을 적용합니다.

지역 백 엔드 서비스로 API 호출 라우팅

기본적으로 각 API는 요청을 단일 백 엔드 서비스 URL로 라우팅합니다. 다양한 지역에 Azure API Management 게이트웨이를 구성했더라도 API 게이트웨이는 하나의 지역에만 배포된 동일한 백 엔드 서비스로 요청을 전달합니다. 이런 경우 성능 향상은 Azure API Management 내에서 요청에 특정한 지역에 캐시된 응답에서만 발생하고 전 세계의 백 엔드에 계속 연결하는 경우 대기 시간이 길어질 수 있습니다.

시스템의 지리적 분포를 활용하려면 Azure API Management 인스턴스와 동일한 지역에 백 엔드 서비스를 배포해야 합니다. 그런 다음, 정책과 @(context.Deployment.Region) 속성을 사용하여 백 엔드의 로컬 인스턴스로 트래픽을 라우팅하면 됩니다.

  1. Azure API Management 인스턴스로 이동하여 왼쪽 메뉴에서 API를 선택합니다.

  2. 원하는 API를 선택합니다.

  3. 인바운드 처리의 화살표 드롭다운에서 코드 편집기를 선택합니다.

    API 코드 편집기

  4. 조건부 choose 정책과 결합된 set-backend를 사용하여 파일의 <inbound> </inbound> 섹션에 적절한 라우팅 정책을 생성합니다.

    예를 들어 다음 XML 파일은 미국 서부와 동아시아 지역에 해당합니다.

    <policies>
        <inbound>
            <base />
            <choose>
                <when condition="@("West US".Equals(context.Deployment.Region, StringComparison.OrdinalIgnoreCase))">
                    <set-backend-service base-url="http://contoso-backend-us.com/" />
                </when>
                <when condition="@("East Asia".Equals(context.Deployment.Region, StringComparison.OrdinalIgnoreCase))">
                    <set-backend-service base-url="http://contoso-backend-asia.com/" />
                </when>
                <otherwise>
                    <set-backend-service base-url="http://contoso-backend-other.com/" />
                </otherwise>
            </choose>
        </inbound>
        <backend>
            <base />
        </backend>
        <outbound>
            <base />
        </outbound>
        <on-error>
            <base />
        </on-error>
    </policies>
    

Traffic Manager를 사용하여 지역 백 엔드로 라우팅

Azure Traffic Manager를 사용하여 백 엔드 서비스를 진행하고, API 호출을 Traffic Manager에 전달하고, Traffic Manager가 라우팅을 자동으로 확인하도록 할 수도 있습니다.

  • 트래픽 분산 및 장애 조치(failover)의 경우 지리적 라우팅 방법으로 Traffic Manager를 사용하는 것이 좋습니다. API Management 백 엔드와 함께 가중 라우팅 메서드로 Traffic Manager를 사용하지 않는 것이 좋습니다.

  • 유지 관리 작업 중 트래픽 제어의 경우 우선 순위 라우팅 방법을 사용하는 것이 좋습니다.

API Management 지역 게이트웨이에 대한 사용자 지정 라우팅 사용

API Management는 가장 짧은 대기 시간에 따라 요청을 지역 게이트웨이로 라우팅합니다. API Management에서 이 설정을 재정의할 수는 없지만 사용자 지정 라우팅 규칙을 통해 고유한 Traffic Manager를 사용할 수 있습니다.

  1. 고유한 Azure Traffic Manager를 만듭니다.
  2. 사용자 지정 도메인을 사용하는 경우 API Management 서비스 대신 Traffic Manager에서 사용합니다.
  3. Traffic Manager에서 API Management 지역별 엔드포인트를 구성합니다. 지역별 엔드포인트는 https://<service-name>-<region>-01.regional.azure-api.net의 URL 패턴을 따릅니다(예: https://contoso-westus2-01.regional.azure-api.net).
  4. Traffic Manager에서 API Management 지역별 상태 엔드포인트를 구성합니다. 지역별 상태 엔드포인트는 https://<service-name>-<region>-01.regional.azure-api.net/status-0123456789abcdef의 URL 패턴을 따릅니다(예: https://contoso-westus2-01.regional.azure-api.net/status-0123456789abcdef).
  5. Traffic Manager의 라우팅 방법을 지정합니다.

지역 게이트웨이에 대한 라우팅 사용 안 함

일부 조건에서는 지역 게이트웨이 중 하나에 대한 라우팅을 일시적으로 사용하지 않도록 설정해야 할 수 있습니다. 예시:

  • 새 지역을 추가한 후 지역 백 엔드 서비스를 구성하고 테스트하는 동안 비활성화된 상태로 유지합니다.
  • 지역에서 정기적인 백 엔드 유지 관리 중
  • 사용할 수 없는 지역을 시뮬레이션하는 계획된 재해 복구 훈련 중 또는 지역 오류 발생 시 트래픽을 다른 지역으로 리디렉션하려면

API Management 인스턴스의 지역 게이트웨이에 대한 라우팅을 사용하지 않도록 설정하려면 게이트웨이의 disableGateway 속성 값을 true로 업데이트합니다. 서비스 만들기 또는 업데이트 REST API, Azure CLI의 az apim update 명령, set-azapimanagement Azure PowerShell cmdlet 또는 기타 Azure 도구를 사용하여 값을 설정할 수 있습니다.

참고 항목

사용자 지정 라우팅 솔루션이 아닌 API Management의 기본 라우팅을 사용하는 경우에만 지역 게이트웨이에 대한 라우팅을 사용하지 않도록 설정할 수 있습니다.

Azure CLI를 사용하여 지역 게이트웨이를 사용하지 않도록 설정하려면 다음을 수행합니다.

  1. az apim show 명령을 사용하여 API Management 인스턴스에 대해 구성된 위치, 게이트웨이 상태 및 지역 URL을 표시합니다.

    az apim show --name contoso --resource-group apim-hello-world-resource \
        --query "additionalLocations[].{Location:location,Disabled:disableGateway,Url:gatewayRegionalUrl}" \
        --output table
    

    예제 출력:

    Location    Disabled    Url
    ----------  ----------  ------------------------------------------------------------
    West US 2   True        https://contoso-westus2-01.regional.azure-api.net
    West Europe True        https://contoso-westeurope-01.regional.azure-api.net
    
  2. az apim update 명령을 사용하여 미국 서부 2와 같은 사용 가능한 위치에서 게이트웨이를 사용하지 않도록 설정합니다.

    az apim update --name contoso --resource-group apim-hello-world-resource \
    --set additionalLocations[location="West US 2"].disableGateway=true
    

    업데이트하는 데 몇 분 정도 걸릴 수 있습니다.

  3. 지역 게이트웨이 URL로 전송되는 트래픽이 다른 지역으로 리디렉션되는지 확인합니다.

지역 게이트웨이에 대한 라우팅을 복원하려면 disableGateway 값을 false로 설정합니다.

가상 네트워킹

이 섹션에서는 API Management 인스턴스가 가상 네트워크에 삽입될 때 다중 지역 배포에 대한 고려 사항을 제공합니다.

  • 각 지역 네트워크를 독립적으로 구성합니다. 추가된 지역의 가상 네트워크에 필요한 네트워크 보안 그룹 규칙과 같은 연결 요구 사항은 주 지역의 네트워크와 동일합니다.
  • 다른 지역의 가상 네트워크는 피어링할 필요가 없습니다.

Important

내부 VNet 모드로 구성된 경우 각 지역 게이트웨이는 포트 1443에서 API Management 인스턴스에 대해 구성된 Azure SQL 데이터베이스에 대한 아웃바운드 연결이 있어야 하며, 이는 지역에만 있습니다. 보조 지역의 네트워크에 대해 구성하는 경로 또는 방화벽 규칙에서 이 Azure SQL 데이터베이스의 FQDN 또는 IP 주소에 대한 연결을 허용하는지 확인합니다. 이 시나리오에서는 Azure SQL 서비스 태그를 사용할 수 없습니다. 주 지역에서 Azure SQL 데이터베이스 이름을 찾으려면 포털에서 API Management 인스턴스의 Network>네트워크 상태 페이지로 이동합니다.

IP 주소

  • 공용 가상 IP 주소는 가상 네트워크를 사용하여 추가된 모든 지역에 만들어집니다. 외부 모드 또는 내부 모드에 있는 가상 네트워크의 경우 포트 3443의 관리 트래픽에 이 공용 IP 주소가 필요합니다.

    • 외부 VNet 모드 - 공용 HTTP 트래픽을 API 게이트웨이로 라우팅하려면 공용 IP 주소도 필요합니다.

    • 내부 VNet 모드 - 개인 IP 주소는 가상 네트워크를 사용하여 추가된 모든 지역에서도 만들어집니다. 이러한 주소를 사용하여 네트워크 내에서 주 및 보조 지역의 API Management 엔드포인트에 연결합니다.

라우팅

  • 외부 VNet 모드 - 네트워크로 연결되지 않은 API Management 인스턴스와 동일한 방식으로 지역 게이트웨이로의 공용 HTTP 트래픽 라우팅이 자동으로 처리됩니다.

  • 내부 VNet 모드 - 프라이빗 HTTP 트래픽은 기본적으로 지역 게이트웨이로 라우팅되거나 부하 분산되지 않습니다. 사용자는 라우팅을 소유하고 있으며 여러 지역에서 라우팅 및 프라이빗 부하 분산을 관리하는 자체 솔루션을 가져올 책임이 있습니다. 예제 솔루션에는 Azure Application Gateway 및 Azure Traffic Manager가 포함됩니다.

다음 단계