Le basculement est une caractéristique importante des systèmes qui reposent sur une disponibilité quasi constante. Dans Hazelcast, un client de basculement redirige automatiquement son trafic vers un cluster secondaire lorsque le client ne peut pas se connecter au cluster principal. Envisagez d’utiliser un client de basculement avec réplication WAN dans le cadre de votre stratégie de reprise après sinistre. Dans ce didacticiel, vous allez mettre à jour le code dans un client Java pour vous connecter automatiquement à un cluster de basculement secondaire s’il ne peut pas se connecter à son cluster principal d’origine. Vous exécuterez également un test simple pour vous assurer que votre configuration est correcte, puis l’ajusterez pour inclure la gestion des exceptions. Vous apprendrez à collecter toutes les ressources dont vous avez besoin pour créer un client de basculement pour un cluster principal et secondaire, créer un client de basculement basé sur l’exemple de client Java, tester le basculement et ajouter la gestion des exceptions pour les opérations.
Étape 1 : Configurer les clusters et les clients
Créez deux clusters Viridian Serverless que vous utiliserez comme clusters principal et secondaire, puis téléchargez et connectez-leur des exemples de clients Java.
- Créez le cluster Viridian Serverless que vous utiliserez comme cluster principal. Lorsque le cluster est prêt à être utilisé, le Guide de connexion rapide est affiché.
- Sélectionnez l’icône Java et suivez les instructions à l’écran pour télécharger, extraire et connecter le client Java préconfiguré à votre cluster principal.
- Créez le cluster Viridian Serverless que vous utiliserez comme cluster secondaire.
- Suivez les instructions dans le Guide de connexion rapide pour télécharger, extraire et connecter le client Java préconfiguré à votre cluster secondaire.
Vous avez maintenant deux clusters en cours d’exécution et vous avez vérifié que les deux clients Java peuvent se connecter.
Étape 2 : Configurer un client de basculement
Pour créer un client de basculement, mettez à jour la configuration et le code du client Java pour votre cluster principal.
Commencez par ajouter les fichiers keystore du client Java de votre cluster secondaire.
- Accédez au répertoire dans lequel vous avez extrait le client Java pour votre cluster secondaire, puis accédez à
src/main/resources
. - Renommez le
client.keystore
fichier àclient2.keystore
et renommer leclient.truststore
fichier àclient2.truststore
pour éviter d’écraser les fichiers de votre magasin de clés de cluster principal. - Copiez les deux fichiers sur le
src/main/resources
répertoire de votre cluster principal.
Mettez à jour le code dans le client Java (ClientwithSsl.java
) de votre cluster principal pour inclure une classe de basculement et les détails de connexion de votre cluster secondaire. Vous pouvez trouver ces détails de connexion dans le client Java de votre cluster secondaire.
- Accédez au répertoire dans lequel vous avez extrait le client Java pour votre cluster principal, puis accédez à
src/main/java/com/hazelcast/cloud/
. - Ouvrez le client Java (
ClientwithSsl.java
) et effectuez les mises à jour suivantes. Un exemple de client de basculement est également disponible en téléchargement.
Étape 3 : Vérifier le basculement
Vérifiez que votre client de basculement se connecte automatiquement au cluster secondaire lorsque votre cluster principal est arrêté.
- Assurez-vous que les deux clusters Viridian Serverless sont en cours d’exécution.
- Connectez votre client de basculement au cluster principal de la même manière que vous l’avez fait à l’étape 1.
- Arrêtez votre cluster principal. Depuis le tableau de bord de votre cluster principal, dans Détails du clustersélectionner Pause. Dans la console, vous verrez les messages suivants dans l’ordre lorsque le client se déconnecte de votre cluster principal et se reconnecte au cluster secondaire :
CLIENT_DISCONNECTED
CLIENT_CONNECTED
CLIENT_CHANGED_CLUSTER
Si vous utilisez le nonStopMapExample
dans l’exemple de client Java, votre client s’arrête. Cela est normal car les opérations d’écriture ne peuvent pas être réessayées lorsqu’un cluster est déconnecté. Le client a envoyé une requête put au cluster mais n’a pas reçu de réponse, le résultat de la requête est donc inconnu. Pour empêcher le client d’écraser des opérations d’écriture plus récentes, cette opération d’écriture est arrêtée et une exception est levée.
Étape 4 : Gestion des exceptions
Mettre à jour le nonStopMapExample()
fonction dans votre client de basculement pour intercepter l’exception qui est levée lorsque le cluster principal se déconnecte.
-
Ajoutez le bloc try-catch suivant au
while
boucle dans lenonStopMapExample()
fonction. Ce code remplace l’originalmap.put()
fonction.try { map.put("key-" + randomKey, "value-" + randomKey); } catch (Exception e) { // Captures exception from disconnected client e.printStackTrace(); }
2. Vérifiez à nouveau votre code (répétez l’étape 3). Cette fois, le client continue d’écrire des entrées de carte après s’être connecté au cluster secondaire.