Guia de início rápido: Criar um cluster de várias regiões com a Instância Gerenciada do Azure para Apache Cassandra
A Instância Gerenciada do Azure para Apache Cassandra é um serviço totalmente gerenciado para clusters do Apache Cassandra apenas de código aberto. O serviço também permite que as configurações sejam substituídas, dependendo das necessidades específicas de cada carga de trabalho, permitindo flexibilidade e controle máximos quando necessário.
Este guia de início rápido demonstra como usar os comandos da CLI do Azure para configurar um cluster de várias regiões no Azure.
Pré-requisitos
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Início Rápido para Bash no Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para ver outras opções de entrada, confira Conectar-se com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
Este artigo exige a CLI do Azure versão 2.30.0 ou superior. Se você está usando o Azure Cloud Shell, a última versão já está instalada.
Rede Virtual do Azure com conectividade com o ambiente local ou auto-hospedado. Para saber mais sobre como conectar ambientes locais ao Azure, confira o artigo Conectar uma rede local ao Azure.
Configurar o ambiente de rede
Como todos os datacenters provisionados com esse serviço precisam ser implantados em sub-redes dedicadas usando a injeção de VNet, configure o emparelhamento de rede apropriado antes da implantação. Para este início rápido, crie um cluster com dois datacenters em regiões separadas: Leste dos EUA e Leste dos EUA 2. Primeiro, crie as redes virtuais para cada região.
Entre no portal do Azure.
Crie um grupo de recursos chamado cassandra-mi-multi-region:
az group create --location eastus2 --name cassandra-mi-multi-region
Crie a primeira VNet no Leste dos EUA 2 com uma sub-rede dedicada:
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
Crie a segunda VNet no Leste dos EUA, também com uma sub-rede dedicada:
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
Observação
Adicionamos explicitamente intervalos de endereços IP diferentes para garantir que não haja erros durante o emparelhamento.
Emparelhe a primeira VNet com a segunda:
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
Para conectar as duas VNets, crie outro emparelhamento entre a segunda VNet e a primeira:
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
Observação
Se você adicionar mais regiões, cada VNet exigirá o emparelhamento dela com todas as outras VNets e de todas as outras VNets com ela.
Verifique a saída do comando anterior. Verifique se o valor de "peeringState" agora é "Conectado". Você também pode verificar esse resultado executando o seguinte comando:
az network vnet peering show \ --name MyVnet1ToMyVnet2 \ --resource-group cassandra-mi-multi-region \ --vnet-name vnetEastUs2 \ --query peeringState
Aplique algumas permissões especiais às duas Redes Virtuais. A Instância Gerenciada do Azure para Apache Cassandra requer essas permissões. Execute o seguinte comando. Substitua
<SubscriptionID>
pela ID da assinatura: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
Observação
Os valores
assignee
erole
no comando anterior são valores fixos. Insira esses valores exatamente como no comando.
Se você encontrar erros ao executar az role assignment create
, talvez não tenha permissões para executá-lo. Verifique com o administrador se há permissões.
Criar um cluster de várias regiões
Implante o recurso do cluster. Substitua
<Subscription ID>
por sua ID da assinatura. A implantação pode levar até 10 minutos: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
Depois que o recurso de cluster for criado, você estará pronto para criar um data center. Primeiro, crie um datacenter no Leste dos EUA 2. Substitua
<SubscriptionID>
por sua ID da assinatura. Essa ação pode levar até 10 minutos: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
Crie um datacenter no Leste dos EUA. Substitua
<SubscriptionID>
por sua ID da assinatura.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
Observação
O valor de
--sku
pode ser escolhido entre os seguintes SKUs disponíveis:- 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
Observe também que
--availability-zone
é definido comofalse
. Para habilitar zonas de disponibilidade, defina isso comotrue
. As zonas de disponibilidade aumentam o SLA de disponibilidade do serviço. Para obter mais informações, confira o SLA para a Instância Gerenciada do Azure para Apache Cassandra.Aviso
Não há suporte para zonas de disponibilidade em todas as regiões. As implantações falharão se você selecionar uma região em que não haja suporte para as zonas de disponibilidade. Para obter uma lista de regiões com suporte, confira Regiões do Azure com zonas de disponibilidade.
A implantação bem-sucedida de zonas de disponibilidade também está sujeita à disponibilidade de recursos de computação em todas as zonas na região determinada. As implantações poderão falhar se o SKU selecionado ou a capacidade não estiver disponível em todas as zonas.
Depois que o segundo datacenter for criado, obtenha o status do nó para verificar se todos os nós do Cassandra foram criados com êxito:
resourceGroupName='cassandra-mi-multi-region' clusterName='test-multi-region' az managed-cassandra cluster status\ --cluster-name $clusterName \ --resource-group $resourceGroupName
Por fim, conecte-se ao cluster usando o CQLSH e use a seguinte consulta CQL para atualizar a estratégia de replicação em cada keyspace para incluir todos os datacenters do cluster (tabelas do sistema serão atualizadas automaticamente):
ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};
Por fim, se você estiver adicionando um data center a um cluster em que já há dados, precisará executar
rebuild
para replicar os dados históricos. Nesse caso, vamos supor que o data centerdc-eastus2
já tenha dados. Na CLI do Azure, execute o comando abaixo para executarnodetool rebuild
em cada nó em seu novo datacenterdc-eastus
, substituindo<ip address>
pelo endereço IP do nó:az managed-cassandra cluster invoke-command \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --host <ip address> \ --command-name nodetool --arguments rebuild="" "dc-eastus2"=""
Aviso
Você deve não permitir que clientes de aplicativos gravem no novo data center até que você tenha aplicado as alterações de replicação do keyspace. Caso contrário, a recompilação não funcionará e você precisará criar uma solicitação de suporte para que nossa equipe possa executar
repair
em seu nome.
Solução de problemas
Se encontrar um erro ao aplicar permissões à Rede Virtual usando a CLI do Azure, você poderá aplicar a mesma permissão manualmente por meio do portal do Azure. Um erro de exemplo pode ser Não foi possível encontrar o usuário ou a entidade de serviço no banco de dados de grafo para 'e5007d2c-4b13-4a74-9b6a-605d99f03501'. Para obter mais informações, confira Usar o portal do Azure para adicionar uma entidade de serviço do Azure Cosmos DB.
Observação
A atribuição de função Azure Cosmos DB é usada somente para fins de implantação. A Instância Gerenciada do Azure para Apache Cassandra não tem nenhuma dependência de back-end no Azure Cosmos DB.
Limpar os recursos
Caso não vá continuar usando esse cluster da instância gerenciada, exclua-o seguindo estas etapas:
- No menu à esquerda do portal do Azure, selecione Grupos de recursos.
- Na lista, selecione o grupo de recursos criado neste início rápido.
- Na página Visão geral do grupo de recursos, selecione Excluir grupo de recursos.
- Na próxima janela, insira o nome do grupo de recursos a ser excluído e selecione Excluir.
Próximas etapas
Neste guia de início rápido, você aprendeu a criar um cluster de várias regiões usando a CLI do Azure e a Instância Gerenciada do Azure para Apache Cassandra. Você já pode começar a trabalhar com o cluster.