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
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
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.
Connectez-vous au portail Azure.
Créez un groupe de ressources nommé cassandra-mi-multi-region :
az group create --location eastus2 --name cassandra-mi-multi-region
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
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.
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
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.
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
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
etrole
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
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
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
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 surfalse
. Pour activer les zones de disponibilité, définissez cette valeur surtrue
. 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.
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 status\ --cluster-name $clusterName \ --resource-group $resourceGroupName
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};
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éesdc-eastus2
dispose déjà de données. Dans Azure CLI, exécutez la commande ci-dessous pour exécuternodetool rebuild
sur chaque nœud de votre nouveau centre de donnéesdc-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 :
- Dans le menu de gauche du portail Azure, sélectionnez Groupes de ressources.
- Dans la liste, sélectionnez le groupe de ressources créé pour ce guide de démarrage rapide.
- Dans le volet Vue d’ensemble du groupe de ressources, sélectionnez Supprimer un groupe de ressources.
- 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.