Partilhar via


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, para máxima flexibilidade e controle.

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

  • Este artigo requer a CLI do Azure versão 2.30.0 ou posterior. Se você estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.
  • Use uma 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 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 a injeção de rede virtual, 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.

  1. Inicie sessão no portal do Azure.

  2. Crie um grupo de recursos chamado cassandra-mi-multi-region:

    az group create --location eastus2 --name cassandra-mi-multi-region
    
  3. Crie a primeira rede virtual 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
    
  4. Crie a segunda rede virtual 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
    

    Adicionamos explicitamente diferentes intervalos de endereços IP para assegurar que não ocorram erros de peering.

  5. Estabelecer uma ligação entre a primeira rede virtual e a segunda rede virtual.

    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. Para conectar as duas redes virtuais, crie outro emparelhamento entre a segunda rede virtual 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
    

    Se você adicionar mais regiões, cada rede virtual exigirá emparelhamento dela para todas as outras redes virtuais e de todas as outras redes virtuais para ela.

  7. 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
    
  8. 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
    

    Os assignee valores e role no comando anterior são valores fixos. Insira esses valores exatamente como mostrado no comando.

Se você encontrar erros ao executar az role assignment createo , 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

  1. Implante o recurso de cluster. Substitua <Subscription ID> pelo seu ID de subscrição. A implantação pode levar de 5 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
    
  2. Depois que o recurso de cluster for criado, você estará pronto para criar um datacenter. 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
    
  3. Crie um datacenter no leste dos EUA. Substitua <SubscriptionID> pelo ID da sua 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
    

    Você pode escolher o valor para --sku entre as seguintes camadas de produto 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 como false. Para habilitar zonas de disponibilidade, defina-o como true. As zonas de disponibilidade aumentam o contrato de nível de serviço (SLA) de disponibilidade do serviço. Para obter mais informações, consulte Contratos de nível de serviço para a Instância Gerenciada do Azure para Apache Cassandra.

    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 na região específica. As implantações podem falhar se a camada de produto selecionada ou a capacidade não estiver disponível em todas as zonas.

  4. Depois que o segundo datacenter for criado, obtenha o status dos nós para verificar se todos os nós Cassandra foram iniciados com sucesso.

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    
    az managed-cassandra cluster status\
       --cluster-name $clusterName \
       --resource-group $resourceGroupName
    
  5. Em seguida, use CQLSH para se conectar ao cluster. 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 são atualizadas automaticamente):

    ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};
    
  6. Finalmente, se você adicionar um datacenter a um cluster que já contém dados, precisará executar rebuild para replicar os dados históricos. Nesse caso, suponha que o dc-eastus2 datacenter já tenha dados. Na CLI do Azure, corra o seguinte comando para executar nodetool rebuild em todos os nós do seu novo centro de dados dc-eastus. Substitua <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"=""
    

    Não permita que os clientes de aplicativos gravem no novo datacenter até que você aplique as alterações de replicação do keyspace. Caso contrário, a reconstrução não funciona. Então você precisa criar uma solicitação de suporte para que nossa equipe possa correr repair para você.

Resolução de Problemas

Se encontrar um erro ao aplicar permissões à sua rede virtual utilizando a CLI do Azure, pode aplicar a mesma permissão manualmente a partir do portal do Azure. Um exemplo de erro pode ser "Não se consegue encontrar o utilizador ou o principal de serviço na base de dados gráfica para e5007d2c-4b13-4a74-9b6a-605d99f03501." Para mais informações, consulte Usar o portal do Azure para adicionar um principal de serviço do Azure Cosmos DB.

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 gerenciado, siga estas etapas para excluí-lo:

  1. No menu esquerdo do portal do Azure, selecione Grupos de recursos.
  2. Na lista, selecione o grupo de recursos que você criou para este início rápido.
  3. No painel Visão geral do grupo de recursos, selecione Excluir grupo de recursos.
  4. No painel seguinte, introduza o nome do grupo de recursos a eliminar e, em seguida, selecione Eliminar.

Próximo passo

Neste 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.