빠른 시작: Azure Managed Instance for Apache Cassandra를 사용하여 다중 지역 클러스터 만들기

Azure Managed Instance for Apache Cassandra는 순수 오픈 소스 Apache Cassandra 클러스터를 위한 완전 관리형 서비스입니다. 또한 이 서비스를 사용하면 각 워크로드의 특정 요구 사항에 따라 구성을 재정의할 수 있으므로 필요한 경우 최대한의 유연성과 제어가 가능합니다.

이 빠른 시작에서는 Azure CLI 명령을 사용하여 Azure에서 다중 지역 클러스터를 구성하는 방법을 보여 줍니다.

필수 조건

  • 이 문서를 진행하려면 Azure CLI 버전 2.30.0 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.

  • 자체 호스팅 또는 온-프레미스 환경에 연결된 Azure Virtual Network. 온-프레미스 환경을 Azure에 연결하는 방법에 대한 자세한 내용은 Azure에 온-프레미스 네트워크 연결 문서를 참조하세요.

네트워크 환경 설정

이 서비스로 프로비저닝된 모든 데이터 센터는 VNet 삽입을 사용하여 전용 서브넷에 배포해야 하므로 배포 전에 적절한 네트워크 피어링을 구성해야 합니다. 이 빠른 시작에서는 별도의 지역(미국 동부 및 미국 동부 2)에 두 개의 데이터 센터가 있는 클러스터를 만듭니다. 먼저, 각 지역에 대한 가상 네트워크를 만듭니다.

  1. Azure Portal에 로그인합니다.

  2. cassandra-mi-multi-region이라는 리소스 그룹을 만듭니다.

    az group create --location eastus2 --name cassandra-mi-multi-region
    
  3. 전용 서브넷을 사용하여 미국 동부 2에 첫 번째 VNET을 만듭니다.

    az network vnet create \
      --name vnetEastUs2 \
      --location eastus2 \
      --resource-group cassandra-mi-multi-region \
      --address-prefix 10.0.0.0/16 \
      --subnet-name dedicated-subnet
    
  4. 전용 서브넷을 사용하여 미국 동부에 두 번째 VNet을 만듭니다.

     az network vnet create \
       --name vnetEastUs \
       --location eastus \
       --resource-group cassandra-mi-multi-region \
       --address-prefix 192.168.0.0/16 \
       --subnet-name dedicated-subnet
    

    참고 항목

    피어링 시 오류가 발생하지 않도록 다른 IP 주소 범위를 명시적으로 추가합니다.

  5. 첫 번째 VNet을 두 번째 VNet에 피어링합니다.

    az network vnet peering create \
      --resource-group cassandra-mi-multi-region \
      --name MyVnet1ToMyVnet2 \
      --vnet-name vnetEastUs2 \
      --remote-vnet vnetEastUs \
      --allow-vnet-access \
      --allow-forwarded-traffic
    
  6. 두 VNet을 연결하려면 두 번째 VNet과 첫 번째 VNet 간에 다른 피어링을 만듭니다.

    az network vnet peering create \
      --resource-group cassandra-mi-multi-region \
      --name MyVnet2ToMyVnet1 \
      --vnet-name vnetEastUs \
      --remote-vnet vnetEastUs2 \
      --allow-vnet-access \
      --allow-forwarded-traffic
    

    참고 항목

    지역을 더 추가하는 경우 각 VNet에서 다른 모든 VNet으로 피어링하고 다른 모든 VNet에서 해당 지역으로 피어링해야 합니다.

  7. 이전 명령의 출력을 확인합니다. "peeringState" 값이 이제 "연결됨"인지 확인합니다. 다음 명령을 실행하여 이 결과를 확인할 수도 있습니다.

    az network vnet peering show \
      --name MyVnet1ToMyVnet2 \
      --resource-group cassandra-mi-multi-region \
      --vnet-name vnetEastUs2 \
      --query peeringState
    
  8. 두 Virtual Network에 몇 가지 특별한 권한을 적용합니다. Azure Managed Instance for Apache Cassandra에는 이러한 권한이 필요합니다. 다음 명령을 실행합니다. <SubscriptionID>를 사용자의 구독 ID로 바꿉니다.

    az role assignment create \
      --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \
      --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \
      --scope /subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2
    
    az role assignment create     \
      --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \
      --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \
      --scope /subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs
    

    참고 항목

    이전 명령의 assigneerole 값은 고정 값입니다. 이러한 값을 명령에서와 같이 정확하게 입력합니다.

az role assignment create를 실행할 때 오류가 발생하면 실행할 권한이 없을 수 있습니다. 관리자에게 사용 권한을 확인합니다.

다중 지역 클러스터 만들기

  1. 클러스터 리소스를 배포합니다. <Subscription ID>는 구독 ID로 바꿉니다. 배포에는 5~10분이 걸릴 수 있습니다.

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    location='eastus2'
    delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2/subnets/dedicated-subnet'
    initialCassandraAdminPassword='myPassword'
    
     az managed-cassandra cluster create \
       --cluster-name $clusterName \
       --resource-group $resourceGroupName \
       --location $location \
       --delegated-management-subnet-id $delegatedManagementSubnetId \
       --initial-cassandra-admin-password $initialCassandraAdminPassword \
       --debug
    
  2. 클러스터 리소스가 만들어지면 데이터 센터를 만들 준비가 된 것입니다. 먼저 미국 동부 2에 데이터 센터를 만듭니다. <SubscriptionID>는 구독 ID로 바꿉니다. 이 작업은 최대 10분이 걸릴 수 있습니다.

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    dataCenterName='dc-eastus2'
    dataCenterLocation='eastus2'
    delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs2/subnets/dedicated-subnet'
    
     az managed-cassandra datacenter create \
        --resource-group $resourceGroupName \
        --cluster-name $clusterName \
        --data-center-name $dataCenterName \
        --data-center-location $dataCenterLocation \
        --delegated-subnet-id $delegatedManagementSubnetId \
        --node-count 3
    
  3. 미국 동부에 데이터 센터를 만듭니다. <SubscriptionID>는 구독 ID로 바꿉니다.

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    dataCenterName='dc-eastus'
    dataCenterLocation='eastus'
    delegatedManagementSubnetId='/subscriptions/<SubscriptionID>/resourceGroups/cassandra-mi-multi-region/providers/Microsoft.Network/virtualNetworks/vnetEastUs/subnets/dedicated-subnet'
    virtualMachineSKU='Standard_D8s_v4'
    noOfDisksPerNode=4
    
     az managed-cassandra datacenter create \
       --resource-group $resourceGroupName \
       --cluster-name $clusterName \
       --data-center-name $dataCenterName \
       --data-center-location $dataCenterLocation \
       --delegated-subnet-id $delegatedManagementSubnetId \
       --node-count 3
       --sku $virtualMachineSKU \
       --disk-capacity $noOfDisksPerNode \
       --availability-zone false
    

    참고 항목

    --sku의 값은 다음과 같은 사용 가능한 SKU에서 선택할 수 있습니다.

    • Standard_E8s_v4
    • Standard_E16s_v4
    • Standard_E20s_v4
    • Standard_E32s_v4
    • Standard_DS13_v2
    • Standard_DS14_v2
    • Standard_D8s_v4
    • Standard_D16s_v4
    • Standard_D32s_v4

    또한 --availability-zonefalse로 설정됩니다. 가용성 영역을 사용하도록 설정하려면 이를 true로 설정합니다. 가용성 영역은 서비스의 가용성 SLA를 늘립니다. 자세한 내용은 Azure Managed Instance for Apache Cassandra의 SLA를 참조하세요.

    Warning

    모든 하위 지역에서 가용성 영역이 지원되지 않습니다. 가용성 영역이 지원되지 않는 지역을 선택하면 배포에 실패합니다. 지원되는 지역은 가용성 영역이 있는 Azure 지역을 참조하세요.

    또한 가용성 영역을 성공적으로 배포하는 경우 지정된 하위 지역의 모든 영역에서 컴퓨팅 리소스를 사용할 수 있습니다. 선택한 SKU 또는 용량을 모든 영역에서 사용할 수 없는 경우 배포가 실패할 수 있습니다.

  4. 두 번째 데이터 센터가 만들어지면 노드 상태를 확인하여 모든 Cassandra 노드가 성공적으로 표시되는지 확인합니다.

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    
    az managed-cassandra cluster node-status \
       --cluster-name $clusterName \
       --resource-group $resourceGroupName
    
  5. 그런 다음 CQLSH를 사용하여 클러스터에 연결하고 다음 CQL 쿼리를 사용하여 클러스터의 모든 데이터 센터를 포함하도록 각 키스페이스에서 복제 전략을 업데이트합니다(시스템 테이블은 자동으로 업데이트됩니다).

    ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};
    
  6. 마지막으로 이미 데이터가 있는 클러스터에 데이터 센터를 추가하는 경우 기록 데이터를 복제하기 위해 rebuild 실행해야 합니다. 이 경우 dc-eastus2 데이터 센터에 이미 데이터가 있다고 가정합니다. Azure CLI에서 아래 명령을 실행하여 새 dc-eastus 데이터 센터의 각 노드에서 nodetool rebuild을(를) 실행하고 <ip address>을(를) 노드의 IP 주소로 바꿉니다.

    az managed-cassandra cluster invoke-command \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName \
      --host <ip address> \
      --command-name nodetool --arguments rebuild="" "dc-eastus2"=""
    

    Warning

    키스페이스 복제 변경 내용을 적용할 때까지 애플리케이션 클라이언트가 새 데이터 센터에 쓰는 것을 허용해서는 안 됩니다. 그렇지 않으면 다시 빌드가 작동하지 않으며 우리 팀이 사용자를 대신하여 repair을(를) 실행할 수 있도록 지원 요청을 빌드해야 합니다.

문제 해결

Azure CLI를 사용하여 가상 네트워크에 권한을 적용할 때 오류가 발생하면 Azure Portal에서 동일한 권한을 수동으로 적용할 수 있습니다. 예제 오류는 'e5007d2c-4b13-4a74-9b6a-605d99f03501'에 대한 그래프 데이터베이스에서 사용자 또는 서비스 주체를 찾을 수 없음일 수 있습니다. 자세한 내용은 Azure Portal을 사용하여 Azure Cosmos DB 서비스 주체 추가를 참조하세요.

참고 항목

Azure Cosmos DB 역할 할당은 배포 목적으로만 사용됩니다. Azure Managed Instanced for Apache Cassandra에는 Azure Cosmos DB에 대한 백 엔드 종속성이 없습니다.

리소스 정리

이 관리형 인스턴스 클러스터를 더 이상 사용하지 않으려면 다음 단계에 따라 삭제합니다.

  1. Azure Portal의 왼쪽 메뉴에서 리소스 그룹을 선택합니다.
  2. 목록에서 이 빠른 시작에서 만든 리소스 그룹을 선택합니다.
  3. 리소스 그룹 개요 창에서 리소스 그룹 삭제를 선택합니다.
  4. 새 창에서 삭제할 리소스 그룹의 이름을 입력한 다음, 삭제를 선택합니다.

다음 단계

이 빠른 시작에서는 Azure CLI 및 Apache Cassandra용 Azure Managed Instance를 사용하여 다중 지역 클러스터를 만드는 방법을 알아보았습니다. 이제 클러스터 사용을 시작할 수 있습니다.