Azure Managed Instance for Apache Cassandra는 순수 오픈 소스 Apache Cassandra 클러스터를 위한 완전 관리형 서비스입니다. 또한 이 서비스를 사용하면 각 워크로드의 특정 요구 사항에 따라 최대한의 유연성과 제어를 위해 구성을 재정의할 수 있습니다.
이 빠른 시작에서는 Azure CLI 명령을 사용하여 Azure에서 다중 지역 클러스터를 구성하는 방법을 보여 줍니다.
필수 구성 요소
Azure Cloud Shell에서 Bash 환경을 사용합니다. 자세한 내용은 Azure Cloud Shell 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치합니다. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 Azure에 인증을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI로 확장 사용 및 관리를 참조하세요.
az version을 실행하여 설치된 버전과 종속 라이브러리를 찾습니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
- 이 문서에는 Azure CLI 버전 2.30.0 이상이 필요합니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.
- 자체 호스팅 또는 온-프레미스 환경에 연결된 Azure 가상 네트워크를 사용합니다. 온-프레미스 환경을 Azure에 연결하는 방법에 대한 자세한 내용은 Azure에 온-프레미스 네트워크 연결을 참조하세요.
네트워크 환경 설정
이 서비스로 프로비전된 모든 데이터 센터는 가상 네트워크 주입을 사용하여 전용 서브넷에 배포해야 하므로 배포 전에 적절한 네트워크 피어링을 구성합니다. 이 빠른 시작에서는 별도의 지역(미국 동부 및 미국 동부 2)에 두 개의 데이터 센터가 있는 클러스터를 만듭니다. 먼저, 각 지역에 대한 가상 네트워크를 만듭니다.
Azure Portal에 로그인합니다.
다음과 같은 리소스 그룹을 만듭니다
cassandra-mi-multi-region.az group create --location eastus2 --name cassandra-mi-multi-region전용 서브넷을 사용하여 미국 동부 2에 첫 번째 가상 네트워크를 만듭니다.
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전용 서브넷을 사용하여 미국 동부에 두 번째 가상 네트워크를 만듭니다.
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 주소 범위를 명시적으로 추가합니다.
첫 번째 가상 네트워크를 두 번째 가상 네트워크에 피어합니다.
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두 가상 네트워크를 연결하려면 두 번째 가상 네트워크와 첫 번째 가상 네트워크 간에 다른 피어링을 만듭니다.
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지역을 더 추가하는 경우 각 가상 네트워크는 그 네트워크에서 다른 모든 가상 네트워크로의 피어링과, 다른 모든 가상 네트워크에서 해당 네트워크로의 피어링이 필요합니다.
이전 명령의 출력을 확인합니다. 값
peeringState이 지금Connected인지 확인합니다. 다음 명령을 실행하여 이 결과를 확인할 수도 있습니다.az network vnet peering show \ --name MyVnet1ToMyVnet2 \ --resource-group cassandra-mi-multi-region \ --vnet-name vnetEastUs2 \ --query peeringState두 가상 네트워크에 몇 가지 특별한 권한을 적용합니다. 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이전 명령의
assignee및role값은 고정 값입니다. 명령에 표시된 대로 정확하게 이러한 값을 입력합니다.
az role assignment create를 실행할 때 오류가 발생하면 실행할 권한이 없을 수 있습니다. 관리자에게 사용 권한을 확인합니다.
다중 지역 클러스터 만들기
클러스터 리소스를 배포합니다.
<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에 데이터 센터를 만듭니다.
<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미국 동부에 데이터 센터를 만듭니다.
<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의 값을 선택할 수 있습니다.- 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-zone은false로 설정됩니다. 가용성 영역을 사용하도록 설정하려면 으로true설정합니다. 가용성 영역은 서비스의 가용성 SLA(서비스 수준 계약)를 증가합니다. 자세한 내용은 Apache Cassandra용 Azure Managed Instance에 대한 서비스 수준 계약을 참조하세요.가용성 영역은 모든 지역에서 지원되지 않습니다. 가용성 영역이 지원되지 않는 지역을 선택하면 배포가 실패합니다. 지원되는 지역은 가용성 영역이 있는 Azure 지역을 참조하세요.
가용성 영역의 성공적인 배포에는 특정 지역의 모든 영역에서 컴퓨팅 리소스의 가용성이 적용됩니다. 선택한 제품 계층 또는 용량을 일부 영역에서 사용할 수 없는 경우 배포가 실패할 수 있습니다.
두 번째 데이터 센터를 만든 후 노드 상태를 가져와서 모든 Cassandra 노드가 성공적으로 올라왔는지 확인합니다.
resourceGroupName='cassandra-mi-multi-region' clusterName='test-multi-region' az managed-cassandra cluster status\ --cluster-name $clusterName \ --resource-group $resourceGroupName그런 다음 CQLSH를 사용하여 클러스터에 연결합니다. 다음 CQL 쿼리를 사용하여 클러스터 전체의 모든 데이터 센터를 포함하도록 각 키스페이스의 복제 전략을 업데이트합니다(시스템 테이블은 자동으로 업데이트됨).
ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};마지막으로 이미 데이터가 포함된 클러스터에 데이터 센터를 추가하는 경우 기록 데이터를 복제하기 위해 실행
rebuild해야 합니다. 이 경우 데이터 센터에 이미 데이터가 있다고dc-eastus2가정합니다. Azure CLI에서 다음 명령을 실행하여 새dc-eastus데이터 센터의 각 노드에서nodetool rebuild을 실행합니다. 노드의 IP 주소로 바꿉니다<ip address>.az managed-cassandra cluster invoke-command \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --host <ip address> \ --command-name nodetool --arguments rebuild="" "dc-eastus2"=""키스페이스 복제 변경 내용을 적용할 때까지 애플리케이션 클라이언트가 새 데이터 센터에 쓰도록 허용하지 마세요. 그렇지 않으면 다시 빌드가 작동하지 않습니다. 그런 다음 우리 팀이 당신을 위해 실행할
repair수 있도록 지원 요청을 만들어야 합니다.
문제 해결
Azure CLI를 사용하여 가상 네트워크에 권한을 적용할 때 오류가 발생하는 경우 Azure Portal에서 수동으로 동일한 권한을 적용할 수 있습니다. 예를 들어 "에 대한 e5007d2c-4b13-4a74-9b6a-605d99f03501그래프 데이터베이스에서 사용자 또는 서비스 주체를 찾을 수 없습니다." 오류가 발생할 수 있습니다. 자세한 내용은 Azure Portal을 사용하여 Azure Cosmos DB 서비스 주체를 추가합니다.
Azure Cosmos DB 역할 할당은 배포 목적으로만 사용됩니다. Apache Cassandra용 Azure Managed Instanced에는 Azure Cosmos DB에 대한 백 엔드 종속성이 없습니다.
리소스 정리
이 관리되는 인스턴스 클러스터를 계속 사용하지 않려면 다음 단계에 따라 삭제합니다.
- Azure Portal의 왼쪽 메뉴에서 리소스 그룹을 선택합니다.
- 목록에서 이 빠른 시작을 위해 만든 리소스 그룹을 선택합니다.
- 리소스 그룹 개요 창에서 리소스 그룹 삭제를 선택합니다.
- 다음 창에서 삭제할 리소스 그룹의 이름을 입력한 다음 삭제를 선택합니다.
다음 단계
이 빠른 시작에서는 Azure CLI 및 Apache Cassandra용 Azure Managed Instance를 사용하여 다중 지역 클러스터를 만드는 방법을 알아보았습니다. 이제 클러스터 사용을 시작할 수 있습니다.