Démarrage rapide : Configurer un cluster hybride 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 hybride. Si vous avez déjà des centres de données dans un environnement local ou autohébergé, vous pouvez ajouter d’autres centres de données à ce cluster et gérer tous les clusters avec Azure Managed Instance pour Apache Cassandra.
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 un cluster hybride
Connectez-vous au portail Azure et accédez à votre ressource de réseau virtuel.
Ouvrez l’onglet Sous-réseaux et créez un sous-réseau. Pour en savoir plus sur les champs du formulaire Ajouter un sous-réseau, consultez l’article Réseau virtuel :
Notes
Le déploiement d’une instance Azure Managed Instance pour Apache Cassandra nécessite un accès à Internet. Le déploiement échoue dans les environnements où l’accès à Internet est limité. Vérifiez que vous ne bloquez pas l’accès dans votre réseau virtuel aux services Azure suivants essentiels et nécessaires au bon fonctionnement de Managed Cassandra. Vous pouvez également trouver une liste complète des dépendances de port et d’adresse IPici.
- Stockage Azure
- Azure KeyVault
- Groupes de machines virtuelles identiques Azure
- Surveillance Azure
- Microsoft Entra ID
- Sécurité Azure
À présent, nous allons utiliser Azure CLI pour appliquer certaines autorisations spéciales, qui sont requises par Cassandra Managed Instance, au réseau virtuel et au sous-réseau. Utilisez la commande
az role assignment create
, en remplaçant<subscriptionID>
,<resourceGroupName>
et<vnetName>
par les valeurs appropriées :az role assignment create \ --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \ --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \ --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>
Notes
Les valeurs
assignee
etrole
dans la commande précédente correspondent aux identificateurs fixes du principal de service et du rôle, respectivement.Nous allons ensuite configurer des ressources pour le cluster hybride. Dans la mesure où vous avez déjà un cluster, le nom du cluster est ici simplement une ressource logique permettant d’identifier le nom de votre cluster existant. Veillez à spécifier le nom du cluster existant quand vous définissez les variables
clusterName
etclusterNameOverride
dans le script suivant.Vous avez également besoin, au minimum, des nœuds seed de votre centre de données existant et des certificats gossip requis pour le chiffrement de nœud à nœud. Azure Managed Instance pour Apache Cassandra nécessite le chiffrement de nœud à nœud pour la communication entre les centres de données. Si vous n’avez pas de chiffrement de nœud à nœud implémenté dans votre cluster existant, vous devez l’implémenter. Consultez la documentation ici. Vous devez fournir le chemin d’accès à l’emplacement des certificats. Chaque certificat doit être au format PEM, par exemple
-----BEGIN CERTIFICATE-----\n...PEM format 1...\n-----END CERTIFICATE-----
. En général, il existe deux façons d’implémenter des certificats :Certificats auto-signés. Cela signifie qu’il s’agit d’un certificat privé et public (sans autorité de certification) pour chaque nœud. Dans ce cas, nous avons besoin de tous les certificats publics.
Certificats signés par une autorité de certification. Il peut s’agir d’une autorité de certification auto-signée ou même d’une autorité de certification publique. Dans ce cas, nous avons besoin du certificat d’autorité de certification racine (reportez-vous aux instructions sur la préparation des certificats SSL pour la production) et à tous les intermédiaires (le cas échéant).
Si vous voulez également implémenter l’authentification par certificat client à nœud ou mTLS (Transport Layer Security), vous devez fournir les certificats dans le même format que lors de la création du cluster hybride. Consultez l’exemple Azure CLI ci-dessous : les certificats sont fournis dans le paramètre
--client-certificates
. Cette opération charge et applique vos certificats clients dans le trustStore pour votre cluster Cassandra Managed Instance (c’est-à-dire que vous n’avez pas besoin de modifier les paramètres cassandra.yaml). Une fois appliqués, votre cluster imposera à Cassandra de vérifier les certificats lors de la connexion d’un client (consultezrequire_client_auth: true
à la page client_encryption_options de la documentation Cassandra).Notes
La valeur de la variable
delegatedManagementSubnetId
fournie ci-dessous est exactement la même que la valeur de--scope
que vous avez fournie dans la commande ci-dessus :resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster-legal-name' clusterNameOverride='cassandra-hybrid-cluster-illegal-name' location='eastus2' delegatedManagementSubnetId='/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>/subnets/<subnetName>' # You can override the cluster name if the original name is not legal for an Azure resource: # overrideClusterName='ClusterNameIllegalForAzureResource' # the default cassandra version will be v3.11 az managed-cassandra cluster create \ --cluster-name $clusterName \ --resource-group $resourceGroupName \ --location $location \ --delegated-management-subnet-id $delegatedManagementSubnetId \ --external-seed-nodes 10.52.221.2 10.52.221.3 10.52.221.4 \ --external-gossip-certificates /usr/csuser/clouddrive/rootCa.pem /usr/csuser/clouddrive/gossipKeyStore.crt_signed # optional - add your existing datacenter's client-to-node certificates (if implemented): # --client-certificates /usr/csuser/clouddrive/rootCa.pem /usr/csuser/clouddrive/nodeKeyStore.crt_signed
Notes
Si votre cluster a déjà un chiffrement de nœud à nœud et de client à nœud, vous devez savoir où vos certificats SSL client et/ou gossip existants sont conservés. Si ce n’est pas le cas, essayez d’exécuter
keytool -list -keystore <keystore-path> -rfc -storepass <password>
pour lister les certificats.Une fois la ressource cluster créée, exécutez la commande suivante pour afficher les détails de l’installation du cluster :
resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster' az managed-cassandra cluster show \ --cluster-name $clusterName \ --resource-group $resourceGroupName \
La commande ci-dessus retourne des informations sur l’environnement Managed Instance. Vous avez besoin de certificats gossip pour pouvoir installer ces derniers sur le magasin de confiance des nœuds de votre centre de données existant. La capture d’écran suivante montre la sortie de la commande précédente et le format des certificats :
Notes
Les certificats renvoyés à partir de la commande ci-dessus contiennent des sauts de ligne représentés sous forme de texte, par exemple
\r\n
. Vous devez copier chaque certificat dans un fichier et le mettre en forme avant de tenter de l’importer dans le magasin de confiance de votre centre de données existant.Conseil
Copiez la valeur de tableau
gossipCertificates
indiquée dans la capture d’écran ci-dessus dans un fichier, puis utilisez le script bash suivant (vous devez télécharger et installer jq pour votre plateforme) pour formater les certificats et créer des fichiers PEM distincts pour chacun.readarray -t cert_array < <(jq -c '.[]' gossipCertificates.txt) # iterate through the certs array, format each cert, write to a numbered file. num=0 filename="" for item in "${cert_array[@]}"; do let num=num+1 filename="cert$num.pem" cert=$(jq '.pem' <<< $item) echo -e $cert >> $filename sed -e 's/^"//' -e 's/"$//' -i $filename done
Créez maintenant un centre de données dans le cluster hybride. Veillez à remplacer les valeurs des variables par les détails de votre cluster :
resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster' dataCenterName='dc1' dataCenterLocation='eastus2' 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 9 --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 les détails complets du contrat SLA.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. Consultez cette page pour connaître les régions prises en charge. 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 centre de données créé, exécutez la commande datacenter show pour voir les détails du centre de données :
resourceGroupName='MyResourceGroup' clusterName='cassandra-hybrid-cluster' dataCenterName='dc1' az managed-cassandra datacenter show \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --data-center-name $dataCenterName
La commande précédente retourne les nœuds seed du nouveau centre de données :
Ajoutez maintenant les nouveaux nœuds seed du centre de données à la configuration des nœuds seed de votre centre de données existant dans le fichier cassandra.yaml. Et installez les certificats gossip des instances gérées que vous avez collectés précédemment dans le magasin de confiance pour chaque nœud de votre cluster existant, à l’aide de la commande
keytool
pour chaque certificat :keytool -importcert -keystore generic-server-truststore.jks -alias CassandraMI -file cert1.pem -noprompt -keypass myPass -storepass truststorePass
Notes
Si vous souhaitez ajouter d’autres centres de données, répétez les étapes ci-dessus, mais uniquement pour les nœuds seed.
Important
Si votre cluster Apache Cassandra existant ne possède qu’un seul centre de données et qu’il s’agit de la première fois qu’un centre de données est ajouté, vérifiez que le paramètre
endpoint_snitch
danscassandra.yaml
a la valeurGossipingPropertyFileSnitch
.Important
Si votre code d’application existant utilise QUORUM pour la cohérence, vous devez vous assurer qu’avant de modifier les paramètres de réplication dans l’étape ci-dessous, votre code d’application existant utilise LOCAL_QUORUM pour la connexion à votre cluster existant (sinon les mises à jour automatiques échoueront après la modification de vos paramètres de réplication dans l’étape ci-dessous). Une fois la stratégie de réplication modifiée, vous pouvez revenir au QUORUM si vous le souhaitez.
Pour finir, exécutez la requête CQL suivante pour mettre à jour la stratégie de réplication dans chaque espace de clés et inclure ainsi tous les centres de données dans le cluster :
ALTER KEYSPACE "ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3};
Vous devez également mettre à jour plusieurs tables système :
ALTER KEYSPACE "system_auth" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3} ALTER KEYSPACE "system_distributed" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3} ALTER KEYSPACE "system_traces" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'on-premise-dc': 3, 'managed-instance-dc': 3}
Important
Si le ou les centres de données de votre cluster existant n’appliquent pas le chiffrement client à nœud (SSL) et que vous prévoyez que votre code d’application se connecte directement à Cassandra Managed Instance, vous devez également activer SSL dans votre code d’application.
Utiliser un cluster hybride pour la migration en temps réel
Les instructions ci-dessus apportent des conseils pour la configuration d’un cluster hybride. Toutefois, il s’agit également d’un bon moyen de réaliser une migration fluide sans temps d’arrêt. Si vous disposez d’un environnement local ou d’un autre environnement Cassandra que vous souhaitez désactiver sans temps d’arrêt, en faveur de l’exécution de votre charge de travail dans Azure Managed Instance pour Apache Cassandra, les étapes suivantes doivent être effectuées dans cet ordre :
Configurez un cluster hybride (suivre les instructions ci-dessus).
Désactivez temporairement les réparations automatiques dans Azure Managed Instance pour Apache Cassandra pendant la durée de la migration :
az managed-cassandra cluster update \ --resource-group $resourceGroupName \ --cluster-name $clusterName --repair-enabled false
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 Azure Managed Instance pour Apache Cassandra, en remplaçant<ip address>
par l’adresse IP du nœud et<sourcedc>
par le nom de votre centre de données existant (celui à partir duquel vous effectuez la migration) :az managed-cassandra cluster invoke-command \ --resource-group $resourceGroupName \ --cluster-name $clusterName \ --host <ip address> \ --command-name nodetool --arguments rebuild="" "<sourcedc>"=""
Vous ne devez exécuter cette procédure qu’une fois que toutes les étapes ci-dessus ont été effectuées. Cela devrait garantir que toutes les données historiques sont répliquées sur vos nouveaux centres de données dans Azure Managed Instance pour Apache Cassandra. Vous pouvez exécuter la reconstruction sur un ou plusieurs nœuds en même temps. Exécutez sur un nœud à la fois pour réduire l’impact sur le cluster existant. Exécutez sur plusieurs nœuds lorsque le cluster peut gérer la pression supplémentaire des E/S et du réseau. Pour la plupart des installations, vous ne pouvez en exécuter qu’un ou deux en parallèle pour ne pas surcharger le cluster.
Avertissement
Vous devez spécifier le centre de données source lors de l’exécution de
nodetool rebuild
. Si vous fournissez le centre de données de manière incorrecte lors de la première tentative, cela entraîne la copie des plages de jetons, sans que les données soient copiées pour vos tables non-système. Les tentatives suivantes échouent, même si vous fournissez correctement le centre de données. Vous pouvez résoudre ce problème en supprimant des entrées pour chaque espace de clés non-système danssystem.available_ranges
via l’outil de requêtecqlsh
de votre centre de données Cassandra MI cible :delete from system.available_ranges where keyspace_name = 'myKeyspace';
Basculez le code de votre application pour pointer vers les nœuds seed de votre ou vos nouveaux centres de données Azure Managed Instance pour Apache Cassandra.
Important
Comme indiqué également dans les instructions d’installation hybrides, si le ou les centres de données de votre cluster existant n’appliquent pas le chiffrement client à nœud (SSL), vous devez l’activer dans votre code d’application, car Cassandra Managed Instance l’applique.
Exécutez ALTER KEYSPACE pour chaque espace de clés, de la même façon que précédemment, mais cette fois-ci en supprimant votre ou vos anciens centres de données.
Exécutez nodetool decommision pour chaque nœud des anciens centres de données.
Revenez au quorum de votre code d’application (si nécessaire/souhaité).
Réactivez les réparations automatiques :
az managed-cassandra cluster update \ --resource-group $resourceGroupName \ --cluster-name $clusterName --repair-enabled true
Dépannage
Si vous rencontrez une erreur lors de l’application des autorisations à votre réseau virtuel avec Azure CLI, comme Utilisateur ou principal de service introuvable dans la base de données de graphe pour 'e5007d2c-4b13-4a74-9b6a-605d99f03501' , vous pouvez appliquer la même autorisation manuellement à partir du portail Azure. Découvrez comment procéder ici.
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 hybride en utilisant Azure CLI et Azure Managed Instance pour Apache Cassandra. Vous pouvez maintenant commencer à utiliser le cluster.