많은 Azure 지역은 지역 내에서 데이터 센터의 분리된 그룹인 가용성 영역을 제공합니다. 가용성 영역은 대기 시간이 짧은 다른 가용성 영역에 연결할 수 있을 만큼 충분히 가깝습니다. 왕복 대기 시간이 2ms 미만인 고성능 네트워크에서 연결됩니다. 그러나 가용성 영역은 지역 가동 중단 또는 날씨의 영향을 받을 가능성을 줄이기에 충분합니다. 가용성 영역에는 독립적인 전원, 냉각 및 네트워킹 인프라가 있습니다. 한 영역에서 중단이 발생하는 경우 지역 서비스, 용량 및 고가용성이 다시 기본 영역에서 지원되도록 설계되었습니다. 자세한 내용은 Azure 가용성 영역 참조하세요.
지원되는 지역에서 가용성 영역을 사용하도록 Azure Data Explorer 클러스터를 구성할 수 있습니다. 클러스터는 가용성 영역을 사용하여 비즈니스 연속성 시나리오를 지원하기 위해 지역에서 단일 데이터 센터의 실패를 더 잘 견딜 수 있습니다.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/clusters/{clusterName}?api-version={apiVersion}
요청 본문에서 가용성 영역을 지정합니다. 예를 들어 가용성 영역 1, 2 및 3을 사용하도록 클러스터를 구성하려면 본문을 다음과 같이 설정합니다.
{ "zones": [ "{zone1}", "{zone2}", "{zone3}" ] }
Azure.Identity 및 Azure.ResourceManager.Kusto 라이브러리가 설치되어 있지 않은 경우 다음 명령을 사용하여 설치합니다.
using Azure.Core;
using Azure.ResourceManager.Kusto;
using Azure.ResourceManager.Kusto.Models;
using ArmClient = Azure.ResourceManager.ArmClient;
using ClientSecretCredential = Azure.Identity.ClientSecretCredential;
using WaitUntil = Azure.WaitUntil;
var tenantId = "{tenantId}";
var clientId = "{clientId}";
var clientSecret = "{clientSecret}";
var subscriptionId = "{subscriptionId}";
var resourceGroupName = "{resourceGroupName}";
var clusterName = "{clusterName}";
var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, subscriptionId);
var resourceIdentifier = new ResourceIdentifier($"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Kusto/Clusters/{clusterName}");
var cluster = resourceManagementClient.GetKustoClusterResource(resourceIdentifier);
var kustoClusterPatch = new KustoClusterPatch(AzureLocation.NorthEurope);
kustoClusterPatch.Zones.Clear();
kustoClusterPatch.Zones.Add("1");
kustoClusterPatch.Zones.Add("2");
kustoClusterPatch.Zones.Add("3");
var armOperation = await cluster.UpdateAsync(WaitUntil.Started, kustoClusterPatch).ConfigureAwait(false);
var response = armOperation.UpdateStatus();
Console.WriteLine($"ClientRequestId: {response.ClientRequestId}");
while (true)
{
Console.WriteLine($"{DateTime.UtcNow:o} {response.Status, -5} {response.ReasonPhrase}");
if (armOperation.HasCompleted)
break;
await Task.Delay(60000).ConfigureAwait(false);
response = await armOperation.UpdateStatusAsync().ConfigureAwait(false);
}
애플리케이션을 실행합니다.
애플리케이션에서 다음 코드를 추가합니다.
"zones": [ "{zone1}", "{zone2}", "{zone3}" ]
예를 들어 북유럽 지역에서 영역을 1, 2 및 3으로 설정하려면 다음 코드를 사용합니다.
from azure.identity import DefaultAzureCredential
from azure.mgmt.kusto import KustoManagementClient
from azure.mgmt.kusto import models
import time
from azure.core.exceptions import HttpResponseError
subscription_id = "{subscriptionId}"
resource_group_name = "{resourceGroupName}"
cluster_name = "{clusterName}"
client = KustoManagementClient(DefaultAzureCredential(), subscription_id)
lro_poller = client.clusters.begin_update(resource_group_name, cluster_name, models.ClusterUpdate.from_dict({"zones": ["1", "2", "3"]}))
while (not(lro_poller.done())):
time.sleep(60)
print (f"status: {lro_poller.status()}")
try:
lro_poller.result()
except HttpResponseError as e:
print (f"Exception: {e}")
애플리케이션을 실행합니다.
다음 PowerShell 명령을 사용하여 가용성 영역을 사용하도록 클러스터를 구성할 수 있습니다. Kusto 도구 라이브러리가 설치되어 있는지 확인하고 매개 변수를 값으로 바꿉니다.
마이그레이션하는 동안 다음 메시지가 클러스터의 개요 페이지에 있는 Azure Portal에 표시됩니다. 마이그레이션이 완료된 후 메시지가 제거됩니다.
이 클러스터의 스토리지에 대한 영역 변경이 진행 중입니다. 업데이트 시간은 데이터 양에 따라 달라질 수 있습니다.
가용성 영역이 있는 클러스터의 아키텍처
가용성 영역이 구성된 경우 클러스터의 리소스는 다음과 같이 배포됩니다.
컴퓨팅 계층: Azure Data Explorer는 둘 이상의 노드가 있는 분산 컴퓨팅 플랫폼입니다. 가용성 영역이 구성된 경우 컴퓨팅 노드는 지역 내 복원력을 최대화하기 위해 정의된 가용성 영역에 분산됩니다. 영역 오류는 실패한 컴퓨팅 리소스가 남은 영역에서 다시 배포될 때까지 클러스터 성능을 저하시킬 수 있습니다. 지역에서 사용 가능한 최대 영역을 구성하는 것이 좋습니다.
참고 항목
경우에 따라 컴퓨팅 용량 제한으로 인해 컴퓨팅 계층에 부분 가용성 영역만 사용할 수 있습니다.
클러스터의 컴퓨팅 계층은 선택한 영역에 인스턴스를 균등하게 분산하는 최선의 방법을 구현합니다.
영구 스토리지 계층: 클러스터는 Azure Storage를 지속성 지속성 계층으로 사용합니다. 가용성 영역이 구성된 경우 ZRS 를 사용하도록 설정하여 지역 내 복원력을 최대화하기 위해 세 가지 가용성 영역에 스토리지 복제본을 배치합니다.
참고 항목
ZRS에는 추가 비용이 발생합니다.
가용성 영역이 구성되지 않은 경우 스토리지 리소스는 LRS(로컬 중복 스토리지)의 기본 설정으로 배포되며, 3개의 복제본을 모두 배치하는 것은 단일 영역입니다.
마이그레이션 프로세스
가용성 영역 없이 배포된 기존 클러스터가 가용성 영역을 지원하도록 구성된 경우 마이그레이션 프로세스의 일부로 다음 단계가 수행됩니다.
컴퓨팅은 정의된 가용성 영역에 분산됩니다.
컴퓨팅 리소스를 재배포하는 프로세스에는 영역 컴퓨팅 리소스 캐시가 준비되는 준비 단계가 포함됩니다. 준비 단계에서 기존 클러스터의 컴퓨팅 리소스가 계속 작동하여 중단 없는 서비스를 보장합니다. 이 준비 단계는 최대 수십 분이 걸릴 수 있습니다. 새 컴퓨팅 리소스로의 전환은 완전히 준비되고 작동한 후에만 발생합니다. 이 병렬 처리 접근 방식은 전환 프로세스 중에 서비스 중단을 최소화하고 일반적으로 1~3분 동안 지속되는 비교적 원활한 환경을 보장합니다. 그러나 쿼리 성능은 SKU 마이그레이션 중에 영향을 받을 수 있다는 점에 유의해야 합니다. 영향의 정도는 특정 사용 패턴에 따라 달라질 수 있습니다.
기록 영구 스토리지 데이터가 ZRS로 마이그레이션됨
마이그레이션 프로세스는 LRS에서 ZRS 스토리지로의 전환에 대한 지역 지원과 선택한 영역에서 사용 가능한 스토리지 계정 용량에 따라 달라집니다. 기록 데이터의 전송은 시간이 많이 걸리는 프로세스일 수 있으며, 잠재적으로 몇 시간이 걸리거나 몇 주까지 연장될 수 있습니다.
모든 새 데이터가 ZRS에 기록됩니다.
가용성 영역으로의 마이그레이션 요청이 시작되면 모든 새 데이터가 복제되어 ZRS 구성에 저장됩니다.
참고 항목
마이그레이션 요청에 따라 모든 새 데이터가 ZRS 구성에 기록되기까지 최대 몇 분 정도 지연될 수 있습니다.
클러스터에 스트리밍 수집이 있는 경우 ZRS 데이터로 기록할 새 데이터를 재활용하는 데 최대 30일이 걸릴 수 있습니다.
고려 사항
용량 제약 조건으로 인해 가용성 영역으로의 마이그레이션 요청이 실패할 수 있습니다. 성공적인 마이그레이션을 위해서는 마이그레이션을 지원하기에 충분한 컴퓨팅 및 스토리지 용량이 있어야 합니다. 용량 제한이 있는 경우 문제를 나타내는 오류 메시지가 표시됩니다.