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 Apache Cassandra de código aberto puro. O serviço também permite que as configurações sejam substituídas, dependendo das necessidades específicas de cada carga de trabalho, permitindo a máxima flexibilidade e controle onde 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, consulte Guia de início rápido para Bash no Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
Este artigo requer a CLI do Azure versão 2.30.0 ou superior. Se você estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.
Rede Virtual do Azure com conectividade com seu ambiente auto-hospedado ou local. Para obter mais informações sobre como conectar ambientes locais ao Azure, consulte o artigo Conectar uma rede local ao Azure .
Configurar o ambiente de rede
Como todos os datacenters provisionados com esse serviço devem ser implantados em sub-redes dedicadas usando 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.
Inicie sessão 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
Nota
Adicionamos explicitamente diferentes intervalos de endereços IP para garantir que não haja erros ao emparelhar.
Emparelhar a primeira VNet à segunda 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
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
Nota
Se você adicionar mais regiões, cada VNet exigirá emparelhamento dela para todas as outras VNets e de todas as outras VNets para ela.
Verifique a saída do comando anterior. Certifique-se de que o valor de "peeringState" agora é "Connected". 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 a ambas as Redes Virtuais. A Instância Gerenciada do Azure para Apache Cassandra requer essas permissões. Execute o seguinte comando. Substitua
<SubscriptionID>
pelo ID da sua subscrição: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
Nota
Os
assignee
valores 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
o , 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 de cluster. Substitua
<Subscription ID>
pelo seu ID de subscrição. A implantação pode levar de cinco a 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>
pelo seu ID de subscrição. Esta ação pode demorar 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>
pelo seu ID de subscrição.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
Nota
O valor para
--sku
pode ser escolhido entre as 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
está definido comofalse
. Para habilitar zonas de disponibilidade, defina comotrue
. As zonas de disponibilidade aumentam o SLA de disponibilidade do serviço. Para obter mais informações, consulte SLA para instância gerenciada do Azure para Apache Cassandra.Aviso
As zonas de disponibilidade não são suportadas em todas as regiões. As implantações falham se você selecionar uma região onde as zonas de disponibilidade não são suportadas. Para regiões com suporte, consulte 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 em determinada região. As implantações podem falhar se a SKU selecionada 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 Cassandra surgiram com êxito:
resourceGroupName='cassandra-mi-multi-region' clusterName='test-multi-region' az managed-cassandra cluster status\ --cluster-name $clusterName \ --resource-group $resourceGroupName
Em seguida , conecte-se ao cluster usando CQLSH e use a seguinte consulta CQL para atualizar a estratégia de replicação em cada espaço de chave para incluir todos os datacenters no cluster (as tabelas do sistema serão atualizadas automaticamente):
ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};
Finalmente, se você estiver adicionando um data center a um cluster onde já há dados, será necessário executar
rebuild
para replicar os dados históricos. Nesse caso, vamos supor que odc-eastus2
data center já tenha dados. Na CLI do Azure, execute o comando abaixo para executarnodetool rebuild
em cada nó do seu novodc-eastus
data center, 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ê não deve permitir que os clientes de aplicativos gravem no novo data center até que você tenha aplicado as alterações de replicação de espaço de chave. Caso contrário, a reconstrução não funcionará e você precisará criar uma solicitação de suporte para que nossa equipe possa executar
repair
em seu nome.
Resolução de Problemas
Se você encontrar um erro ao aplicar permissões à sua Rede Virtual usando a CLI do Azure, poderá aplicar a mesma permissão manualmente no portal do Azure. Um exemplo de erro pode ser Não é possível encontrar o usuário ou entidade de serviço no banco de dados gráfico para 'e5007d2c-4b13-4a74-9b6a-605d99f03501'. Para obter mais informações, consulte Usar o portal do Azure para adicionar uma entidade de serviço do Azure Cosmos DB.
Nota
A atribuição de função do Azure Cosmos DB é usada apenas para fins de implantação. A Instância Gerenciada do Azure para Apache Cassandra não tem dependências de back-end no Azure Cosmos DB.
Clean up resources (Limpar recursos)
Se você não quiser continuar a usar esse cluster de instância gerenciada, exclua-o com as seguintes etapas:
- No menu à esquerda do portal do Azure, selecione Grupos de recursos.
- Na lista, selecione o grupo de recursos que você criou para este início rápido.
- No painel Visão geral do grupo de recursos, selecione Excluir grupo de recursos.
- Na janela seguinte, introduza o nome do grupo de recursos a eliminar e, em seguida, selecione Eliminar.
Próximos passos
Neste guia de início rápido, você aprendeu como criar um cluster de várias regiões usando a CLI do Azure e a Instância Gerenciada do Azure para Apache Cassandra. Agora você pode começar a trabalhar com o cluster.