Share 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 entièrement managé pour de purs clusters Apache Cassandra open source. Le service permet également de remplacer des configurations, en fonction des besoins spécifiques de chaque charge de travail, ce qui permet une flexibilité et un contrôle optimaux, le cas échéant.

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

Prérequis

  • Pour cet article, vous avez besoin d’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.

  • Un réseau virtuel Azure connecté à votre environnement autohébergé ou local. Pour plus d’informations sur la connexion d’environnements locaux à Azure, consultez l’article Connecter un réseau local à Azure.

Configurer l’environnement réseau

Étant donné que tous les centres de données provisionnés avec ce service doivent être déployés sur des sous-réseaux dédiés par injection dans le 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 dans USA 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
    

    Notes

    Nous ajoutons explicitement différentes plages d’adresses IP pour éviter toute erreur lors du 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
    

    Notes

    Si vous ajoutez d’autres régions, chaque réseau virtuel nécessite un peering depuis lui-même vers tous les autres réseaux virtuels et depuis tous les autres réseaux virtuels vers lui.

  7. Vérifiez le résultat de la commande précédente. Vérifiez que la valeur de « peeringState » est maintenant « Connecté ». 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 certaines 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
    

    Notes

    Les valeurs assignee et role de la commande précédente sont des valeurs fixes. Entrez ces valeurs exactement comme 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égion

  1. Déployez la ressource de cluster. Remplacez <Subscription ID> par votre ID d’abonnement. Le déploiement peut prendre de cinq à dix 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
    

    Notes

    Vous pouvez choisir la valeur de --sku parmi les références SKU suivantes disponibles :

    • 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 cette valeur sur true. Les zones de disponibilité augmentent le contrat SLA de disponibilité du service. Pour plus d’informations, consultez Contrat de niveau de service (SLA) pour Azure Managed Instance pour Apache Cassandra.

    Avertissement

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

    La réussite du déploiement des zones de disponibilité dépend également de la disponibilité des ressources de calcul dans toutes les zones de la région donnée. Les déploiements peuvent échouer si la référence SKU que vous avez sélectionnée, ou capacité, n’est pas disponible dans toutes les zones.

  4. Une fois le deuxième centre de données créé, obtenez l’état du nœud pour vérifier que tous les nœuds Cassandra sont correctement apparus :

    resourceGroupName='cassandra-mi-multi-region'
    clusterName='test-multi-region'
    
    az managed-cassandra cluster node-status \
       --cluster-name $clusterName \
       --resource-group $resourceGroupName
    
  5. Ensuite, connectez-vous à votre cluster en tirant parti de CQLSH et utilisez la requête CQL suivante pour mettre à jour la stratégie de réplication dans chaque espace de clés afin d’inclure tous les centres de données dans le 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 où des données existent déjà, vous devez exécuter rebuild afin de répliquer les données d’historique. Dans ce cas, nous allons supposer que le centre de données dc-eastus2 dispose déjà de données. Dans Azure CLI, exécutez la commande ci-dessous pour exécuter nodetool rebuild sur chaque nœud de votre nouveau centre de données dc-eastus, en remplaçant <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"=""
    

    Avertissement

    Vous ne devez pas autoriser des clients de l’application à écrire dans le nouveau centre de données tant que vous n’avez pas appliqué les modifications de réplication de l’espace de clés. Sinon, la reconstruction ne fonctionnera pas et vous devrez créer une demande de support pour que notre équipe puisse exécuter repair à votre place.

Dépannage

Si vous rencontrez une erreur lors de l’application des autorisations à votre réseau virtuel à l’aide de l’interface Azure CLI, vous pouvez appliquer la même autorisation manuellement à partir du portail Azure. Un exemple d’erreur peut être Utilisateur ou principal de service introuvable dans la base de données de 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.

Notes

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

Nettoyer les ressources

Si vous ne comptez pas continuer à utiliser ce cluster Managed Instance, supprimez-le en effectuant les étapes suivantes :

  1. Dans le menu de gauche du portail Azure, sélectionnez Groupes de ressources.
  2. Dans la liste, sélectionnez le groupe de ressources 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 la fenêtre suivante, entrez le nom du groupe de ressources à supprimer, puis sélectionnez Supprimer.

Étapes suivantes

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