Partager via


Démarrage rapide : Créer un cluster multirégion avec Azure Managed Instance pour Apache Cassandra

Azure Managed Instance pour Apache Cassandra est un service complètement managé pour les clusters Apache Cassandra open source purs. Le service permet également aux configurations d’être remplacées, en fonction des besoins spécifiques de chaque charge de travail, pour une flexibilité et un contrôle maximum.

Ce guide de démarrage rapide montre comment utiliser les commandes Azure CLI pour configurer un cluster multirégion dans Azure.

Prérequis

  • Cet article nécessite Azure CLI version 2.30.0 ou ultérieure. Si vous utilisez Azure Cloud Shell, sachez que la version la plus récente est déjà installée.
  • Utilisez un réseau virtuel Azure avec une connectivité à votre environnement auto-hébergé ou local. Pour plus d’informations sur la connexion d’environnements locaux à Azure, consultez Connecter un réseau local à Azure.

Configurer l’environnement réseau

Étant donné que tous les centres de données approvisionnés avec ce service doivent être déployés dans des sous-réseaux dédiés à l’aide de l’injection de réseau virtuel, configurez le peering réseau approprié avant le déploiement. Pour ce guide de démarrage rapide, créez un cluster avec deux centres de données dans des régions distinctes : USA Est et USA Est 2. Tout d’abord, créez les réseaux virtuels pour chaque région.

  1. Connectez-vous au portail Azure.

  2. Créez un groupe de ressources nommé cassandra-mi-multi-region:

    az group create --location eastus2 --name cassandra-mi-multi-region
    
  3. Créez le premier réseau virtuel dans USA Est 2 avec un sous-réseau dédié :

    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. Créez le deuxième réseau virtuel aux États-Unis Est, également avec un sous-réseau dédié :

     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
    

    Nous ajoutons explicitement différentes plages d’adresses IP pour garantir qu’il n’y a aucune erreur avec le peering.

  5. Appairez le premier réseau virtuel au deuxième réseau virtuel :

    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. Pour connecter les deux réseaux virtuels, créez un autre peering entre le deuxième réseau virtuel et le premier :

    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
    

    Si vous ajoutez d’autres régions, chaque réseau virtuel nécessite un peering à partir de celui-ci vers tous les autres réseaux virtuels et de tous les autres réseaux virtuels vers celui-ci.

  7. Vérifiez le résultat de la commande précédente. Assurez-vous que la valeur de peeringState est maintenant Connected. Vous pouvez aussi vérifier ce résultat en exécutant la commande suivante :

    az network vnet peering show \
      --name MyVnet1ToMyVnet2 \
      --resource-group cassandra-mi-multi-region \
      --vnet-name vnetEastUs2 \
      --query peeringState
    
  8. Appliquez des autorisations spéciales aux deux réseaux virtuels. Azure Managed Instance pour Apache Cassandra nécessite ces autorisations. Exécutez la commande suivante : Remplacez <SubscriptionID> par votre ID d’abonnement :

    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
    

    Les valeurs assignee et role de la commande précédente sont des valeurs fixes. Entrez ces valeurs exactement comme indiqué dans la commande.

Si vous rencontrez des erreurs quand vous exécutez az role assignment create, vous ne disposez peut-être pas des autorisations nécessaires. Vérifiez vos autorisations auprès de votre administrateur.

Créer un cluster multirégional

  1. Déployez la ressource de cluster. Remplacez <Subscription ID> par votre ID d’abonnement. Le déploiement peut prendre 5 à 10 minutes.

    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. Une fois la ressource de cluster créée, vous êtes prêt à créer un centre de données. Commencez par créer un centre de données dans la région USA Est 2. Remplacez <SubscriptionID> par votre ID d’abonnement. Cette action peut prendre jusqu’à 10 minutes.

    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. Créez un centre de données dans la région USA Est. Remplacez <SubscriptionID> par votre ID d’abonnement :

    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
    

    Vous pouvez choisir la valeur parmi les niveaux de produit disponibles suivants pour --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

    Vous pouvez également voir que le paramètre --availability-zone est défini sur false. Pour activer les zones de disponibilité, définissez-la sur true. Les zones de disponibilité augmentent le contrat de niveau de service de disponibilité (SLA) du service. Pour plus d’informations, consultez Les contrats de niveau de service pour Azure Managed Instance pour Apache Cassandra.

    Les zones de disponibilité ne sont pas prises en charge dans toutes les régions. Les déploiements échouent si vous sélectionnez une région où les zones de disponibilité ne sont pas prises en charge. Pour obtenir la liste des régions compatibles, consultez Régions Azure avec zones de disponibilité.

    Le déploiement réussi des zones de disponibilité est également soumis à la disponibilité des ressources de calcul dans toutes les zones de la région spécifique. Les déploiements peuvent échouer si le niveau de produit que vous avez sélectionné, ou la capacité, n’est pas disponible dans toutes les zones.

  4. Une fois que le deuxième centre de données est opérationnel, vérifiez l'état des nœuds pour vous assurer que tous les nœuds Cassandra ont démarré avec succès.

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    
    az managed-cassandra cluster status\
       --cluster-name $clusterName \
       --resource-group $resourceGroupName
    
  5. Utilisez ensuite CQLSH pour vous connecter à votre cluster. Utilisez la requête CQL suivante pour mettre à jour la stratégie de réplication dans chaque espace de clés pour inclure tous les centres de données du cluster (les tables système sont mises à jour automatiquement) :

    ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'dc-eastus2': 3, 'dc-eastus': 3};
    
  6. Enfin, si vous ajoutez un centre de données à un cluster qui contient déjà des données, vous devez exécuter rebuild pour répliquer les données historiques. Dans ce cas, supposons que le dc-eastus2 centre de données possède déjà des données. Dans l'interface de ligne de commande Azure (Azure CLI), exécutez la commande suivante pour exécuter nodetool rebuild sur chaque nœud de votre nouveau datacenter dc-eastus. Remplacez <ip address> par l’adresse IP du nœud :

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

    N’autorisez pas les clients d’application à écrire dans le nouveau centre de données tant que vous n’avez pas appliqué les modifications de réplication d’espace de clés. Sinon, la reconstruction ne fonctionne pas. Ensuite, vous devez créer une demande de support pour que notre équipe puisse vous exécuter repair .

Dépannage

Si vous rencontrez une erreur lorsque vous appliquez des autorisations à votre réseau virtuel à l’aide d’Azure CLI, vous pouvez appliquer la même autorisation manuellement à partir du portail Azure. Un exemple d’erreur peut être « Impossible de trouver l’utilisateur ou le principal de service dans la base de données graphe pour e5007d2c-4b13-4a74-9b6a-605d99f03501». Pour plus d’informations, consultez Utiliser le portail Azure pour ajouter un principal de service Azure Cosmos DB.

L’attribution de rôle Azure Cosmos DB est utilisée à des fins de déploiement uniquement. Azure Managed Instanced pour Apache Cassandra n’a aucune dépendance back-end sur Azure Cosmos DB.

Nettoyer les ressources

Si vous ne souhaitez pas continuer à utiliser ce cluster d’instances managées, procédez comme suit pour le supprimer :

  1. Dans le menu de gauche du portail Azure, sélectionnez Groupes de ressources.
  2. Dans la liste, sélectionnez le groupe de ressources que vous avez créé pour ce guide de démarrage rapide.
  3. Dans le volet Vue d’ensemble du groupe de ressources, sélectionnez Supprimer un groupe de ressources.
  4. Dans le volet suivant, entrez le nom du groupe de ressources à supprimer, puis sélectionnez Supprimer.

Étape suivante

Dans ce guide de démarrage rapide, vous avez appris à créer un cluster multirégion à l’aide d’Azure CLI et d’Azure Managed Instance pour Apache Cassandra. Vous pouvez maintenant commencer à utiliser le cluster.