Développement PHP : Implémentation du mode HA et du basculement à l'aide de Redis et Sentinel

王林
Libérer: 2023-06-17 11:30:01
original
1227 Les gens l'ont consulté

Sous l'architecture traditionnelle à nœud unique, toutes les demandes d'application seront envoyées au même serveur. Bien que cette architecture soit relativement simple, elle présente le risque d'un point de défaillance unique. Si le serveur sur lequel se trouve l'application est en panne, toutes les requêtes échoueront.

Pour résoudre ce problème, nous devons déployer l'application sur plusieurs serveurs pour obtenir le mode haute disponibilité (HA) et le basculement. Dans cet article, nous verrons comment implémenter la haute disponibilité et le basculement à l'aide de Redis et Sentinel.

Redis est un système de stockage de données en mémoire rapide couramment utilisé pour la mise en cache, la mise en file d'attente, l'analyse en temps réel et la messagerie. Redis présente une conception monothread et utilise la mémoire comme stockage. Cela donne à Redis d'excellentes performances et évolutivité.

Sentinel est une solution haute disponibilité pour Redis. Il peut surveiller les instances Redis et basculer automatiquement vers les nœuds de sauvegarde en cas de panne du nœud principal. Ce basculement automatique garantit que votre instance Redis est toujours disponible.

Voici les étapes pour mettre en œuvre la haute disponibilité et le basculement à l'aide de Redis et Sentinel.

Première étape, installez Redis et Sentinel

Sur CentOS, vous pouvez utiliser la commande suivante pour installer Redis et Sentinel :

yum install redis sentinel
Copier après la connexion

Sur Ubuntu, vous pouvez utiliser la commande suivante pour installer Redis et Sentinel :

apt-get install redis sentinel
Copier après la connexion

Deuxième étape, modifier le fichier de configuration Redis

Sur le nœud principal et le nœud de sauvegarde, le fichier de configuration Redis doit être modifié. Sur CentOS, le fichier de configuration se trouve dans /etc/redis.conf, et sur Ubuntu, le fichier de configuration se trouve dans /etc/redis/redis.conf. /etc/redis.conf,在 Ubuntu 上,配置文件位于 /etc/redis/redis.conf

在配置文件中,需要将 bind 参数设置为节点的 IP 地址。如果您想允许来自任何 IP 的客户端连接到 Redis,可以将 bind 参数设置为 0.0.0.0。

您还需要将 requirepass 参数设置为密码,以确保只有授权用户才能访问 Redis。

最后,将 daemonize 参数设置为 yes,以确保 Redis 在后台运行。

bind 192.168.0.1
requirepass mypassword
daemonize yes
Copier après la connexion

对于备份节点,还需要将 slaveof 参数设置为主节点的 IP 地址和端口号。

slaveof 192.168.0.1 6379
Copier après la connexion

第三步,修改 Sentinel 配置文件

在 CentOS 上,Sentinel 配置文件位于 /etc/redis-sentinel.conf,在 Ubuntu 上,Sentinel 配置文件位于 /etc/redis/sentinel.conf

在 Sentinel 配置文件中,需要设置 bind 参数,以确保 Sentinel 接收来自客户端的请求。如果您想允许来自任何 IP 地址的客户端连接到 Sentinel,可以将 bind 参数设置为 0.0.0.0。

您还需要设置 sentinel monitor 参数,用于监视 Redis 实例。该参数包含了 Redis 实例的名称、IP 地址、端口号和故障转移阈值。

bind 192.168.0.2
sentinel monitor mymaster 192.168.0.1 6379 2
Copier après la connexion

这个例子中,Sentinel 将监视名为 mymaster 的 Redis 实例。如果主节点失效了,Sentinel 将在备份节点上自动启动新的 Redis 实例并将其升级为主节点。

第四步,启动 Redis 和 Sentinel

在每个节点上,启动 Redis 和 Sentinel:

systemctl start redis
systemctl start redis-sentinel
Copier après la connexion

在主节点启动后,Sentinel 将开始监视 Redis 实例。如果主节点失效,Sentinel 将在备份节点上自动启动新的 Redis 实例并将其升级为主节点。在这个过程中,客户端将自动切换到新的主节点,应用程序将继续正常工作。

您可以使用以下命令检查 Redis 实例的状态:

redis-cli -h 192.168.0.1 -p 6379 ping
Copier après la connexion

您可以使用以下命令检查 Sentinel 的状态:

redis-cli -h 192.168.0.2 -p 26379 sentinel slaves mymaster
Copier après la connexion

这个例子中,我们将 Sentinel 连接到 192.168.0.2 的端口 26379,并检查名为 mymaster

Dans le fichier de configuration, le paramètre bind doit être défini sur l'adresse IP du nœud. Si vous souhaitez autoriser les clients de n'importe quelle adresse IP à se connecter à Redis, vous pouvez définir le paramètre bind sur 0.0.0.0.

Vous devez également définir le paramètre requirepass sur un mot de passe pour garantir que seuls les utilisateurs autorisés peuvent accéder à Redis.

Enfin, définissez le paramètre daemonize sur yes pour vous assurer que Redis s'exécute en arrière-plan.

rrreee

Pour le nœud de sauvegarde, vous devez également définir le paramètre slaveof sur l'adresse IP et le numéro de port du nœud principal. 🎜rrreee🎜La troisième étape consiste à modifier le fichier de configuration Sentinel🎜🎜Sur CentOS, le fichier de configuration Sentinel se trouve dans /etc/redis-sentinel.conf. Sur Ubuntu, le fichier de configuration Sentinel se trouve. sur /etc /redis/sentinel.conf. 🎜🎜Dans le fichier de configuration Sentinel, le paramètre bind doit être défini pour garantir que Sentinel reçoit les demandes du client. Si vous souhaitez autoriser les clients de n'importe quelle adresse IP à se connecter à Sentinel, vous pouvez définir le paramètre bind sur 0.0.0.0. 🎜🎜Vous devez également définir le paramètre sentinel Monitor pour surveiller l'instance Redis. Ce paramètre contient le nom, l'adresse IP, le numéro de port et le seuil de basculement de l'instance Redis. 🎜rrreee🎜Dans cet exemple, Sentinel surveillera l'instance Redis nommée mymaster. Si le nœud principal échoue, Sentinel démarrera automatiquement une nouvelle instance Redis sur le nœud de sauvegarde et la promouvra au rang de nœud principal. 🎜🎜Étape 4, démarrez Redis et Sentinel🎜🎜Sur chaque nœud, démarrez Redis et Sentinel : 🎜rrreee🎜Après le démarrage du nœud maître, Sentinel commencera à surveiller l'instance Redis. Si le nœud principal échoue, Sentinel démarrera automatiquement une nouvelle instance Redis sur le nœud de sauvegarde et la promouvra au rang de nœud principal. Au cours de ce processus, le client basculera automatiquement vers le nouveau nœud maître et l'application continuera à fonctionner normalement. 🎜🎜Vous pouvez vérifier l'état de votre instance Redis à l'aide de la commande suivante : 🎜rrreee🎜 Vous pouvez vérifier l'état de Sentinel à l'aide de la commande suivante : 🎜rrreee🎜Dans cet exemple, nous connectons Sentinel au port 26379 de 192.168.0.2 et vérifions le nom mymaster. 🎜🎜Résumé🎜🎜Dans cet article, nous avons expliqué comment obtenir une haute disponibilité et un basculement à l'aide de Redis et Sentinel. En déployant l'application sur plusieurs serveurs et en utilisant le basculement automatique, vous pouvez garantir que l'application continue de fonctionner correctement en cas de panne du nœud principal. 🎜🎜De cette façon, vous augmentez la disponibilité de votre application et réduisez le risque de points de défaillance uniques. Nous espérons que vous avez trouvé cet article utile et vous souhaitons bonne chance dans l’utilisation de Redis et Sentinel. 🎜

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!