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
Sur Ubuntu, vous pouvez utiliser la commande suivante pour installer Redis et Sentinel :
apt-get install redis sentinel
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
对于备份节点,还需要将 slaveof
参数设置为主节点的 IP 地址和端口号。
slaveof 192.168.0.1 6379
第三步,修改 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
这个例子中,Sentinel 将监视名为 mymaster
的 Redis 实例。如果主节点失效了,Sentinel 将在备份节点上自动启动新的 Redis 实例并将其升级为主节点。
第四步,启动 Redis 和 Sentinel
在每个节点上,启动 Redis 和 Sentinel:
systemctl start redis systemctl start redis-sentinel
在主节点启动后,Sentinel 将开始监视 Redis 实例。如果主节点失效,Sentinel 将在备份节点上自动启动新的 Redis 实例并将其升级为主节点。在这个过程中,客户端将自动切换到新的主节点,应用程序将继续正常工作。
您可以使用以下命令检查 Redis 实例的状态:
redis-cli -h 192.168.0.1 -p 6379 ping
您可以使用以下命令检查 Sentinel 的状态:
redis-cli -h 192.168.0.2 -p 26379 sentinel slaves mymaster
这个例子中,我们将 Sentinel 连接到 192.168.0.2 的端口 26379,并检查名为 mymaster
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ètreslaveof
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!