Maison > base de données > Redis > le corps du texte

Comment détecter les pannes dans le cluster Redis ?

coldplay.xixi
Libérer: 2020-06-30 12:56:29
original
2658 Les gens l'ont consulté

Méthode de détection des erreurs dans le cluster Redis : modifiez d'abord le script Python pour écrire une donnée toutes les 1 seconde ; puis écrivez les données dans le cluster Redis en boucle et forcez la suppression d'un nœud maître pour observer l'application. situation de connexion Enfin, redémarrez le nœud 8001 en panne.

Comment détecter les pannes dans le cluster Redis ?

Méthode de détection de pannes dans le cluster Redis : test de basculement automatique

Modifier le script Python et écrire toutes les 1s le but de la saisie d'une donnée est de faciliter l'observation de l'impact sur l'application pendant la période (environ 1 seconde) pendant laquelle le nœud maître tombe en panne et le cluster bascule automatiquement, ou les performances de l'application avant et après le basculement automatique .

Le script suivant écrit les données sur le cluster Redis en boucle Pendant l'exécution, un nœud maître est supprimé de force et l'état de connexion de l'application est observé.
Dans le même temps, si une exception se produit, l'application est suspendue pendant 2 s, car le temps de basculement du cluster configuré ci-dessus est de 1 s. Si l'application est suspendue pendant 2 s, le processus de basculement peut être ignoré une fois le basculement terminé. , l'application est revenue à son état normal. Bien que le nœud 8001 soit en panne, l'application a continué à se connecter au nœud 8001, mais l'application l'ignorait complètement.

Recommandations d'apprentissage associées : Tutoriel vidéo Redis

import timefrom time import ctime,sleepfrom rediscluster import StrictRedisCluster
startup_nodes = [
    {"host":"111.231.253.***", "port":8001},
    {"host":"111.231.253.***", "port":8002},
    {"host":"111.231.253.***", "port":8003},
    {"host":"111.231.253.***", "port":8004},
    {"host":"111.231.253.***", "port":8005},
    {"host":"111.231.253.***", "port":8006}
]
redis_conn= StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True,password="root")for i in range(0, 100000):    try:
        redis_conn.set('name' + str(i), str(i))        print('setting name' + str(i) +"--->" + time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
        time.sleep(1)    except:        print("connect to redis cluster error")
        time.sleep(2)
Copier après la connexion

J'ai découvert qu'après avoir tué le nœud maître, une seule erreur de connexion s'est produite, et puis parce que de Redis Le basculement automatique du cluster est réussi et transparent pour le programme, donc l'application fonctionne alors normalement et n'est pas affectée par la panne de l'un des nœuds maîtres.

Comment détecter les pannes dans le cluster Redis ?

L'état du cluster à ce moment est que le nœud 8001 est en panne. Évidemment, le nœud esclave 8004 correspondant à 8001 prend le relais du nœud maître, passe au maître et. fournit des services au monde extérieur

Comment détecter les pannes dans le cluster Redis ?

Observez les journaux de l'instance 8004 qui a été mise à niveau vers le nœud maître. Vous constaterez qu'après avoir tué de force le nœud maître 8001 d'origine, à l'intérieur. 1 seconde, 8001 a été mis à niveau avec succès vers le nœud maître.
Si pendant le processus de basculement, aucune application n'accède à Redis, et l'application ne sait même pas qu'un basculement s'est produit dans le cluster Redis Tant que le maître et l'esclave. Les nœuds d'un certain nœud du cluster ne tombent pas en panne en même temps, il n'y aura aucun problème dans l'ensemble du cluster et cela n'affectera pas l'application. Le processus est complètement transparent.

Comment détecter les pannes dans le cluster Redis ?

Redémarrez ensuite le nœud 8001 en panne, et vous constaterez que le nœud 8001 devient automatiquement le nœud esclave de son nœud esclave d'origine (8004)

Comment détecter les pannes dans le cluster Redis ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal