Maison > Article > base de données > Comment créer un cluster Redis-Sentinel basé sur Docker
1. Présentation
Le cluster Redis peut atteindre une haute disponibilité et un partitionnement parmi un groupe de nœuds Redis. Il y aura 1 nœud maître et plusieurs nœuds esclaves dans le cluster. Lorsque le nœud maître tombe en panne, un nœud esclave doit être élu comme nouveau maître. Cependant, Redis lui-même (y compris nombre de ses clients) n'a pas la capacité de mettre en œuvre une détection automatique des pannes ni d'effectuer une commutation actif-veille, et nécessite une solution de surveillance externe pour réaliser une récupération automatique des pannes.
redis sentinel est la solution de haute disponibilité officiellement recommandée. Il s'agit d'un outil de surveillance et de gestion pour les clusters Redis, qui peut fournir des services de surveillance des nœuds, de notification, de récupération automatique après panne et de découverte de la configuration client.
2. Problèmes rencontrés
1. Réseau hôte Docker
Lorsque Docker utilise le réseau hôte, il ne fonctionne pas pour Windows et Mac (aucune solution trouvée), et a finalement abandonné Windows et utilisé Centos pour déployer le cluster.
2. Problème de connexion Sentinel sans utiliser le réseau hôte
Lors de la connexion au cluster sentinelle sans utiliser le réseau hôte, vous pouvez spécifier le port du nœud maître, afin que la connexion puisse être normale. Cependant, lorsque le nœud maître échoue. , Sentinel l'obtient du nœud maître. L'adresse IP obtenue est l'adresse IP virtuelle dans le conteneur, ce qui empêche le cluster de se connecter normalement.
3. Processus de construction
1. Structure du répertoire
2, sentinel2. .conf
#端口号 port 26379 dir /tmp # mymaster:自定义集群名,2:投票数量必须2个sentinel才能判断主节点是否失败 sentinel monitor mymaster <ip> <port> 2 # 指的是超过5000秒,且没有回复,则判定主节点不可达 sentinel down-after-milliseconds mymaster 5000 # 表示在故障转移的时候最多有numslaves在同步更新新的master sentinel parallel-syncs mymaster 1 # 故障转移超时时间 sentinel failover-timeout mymaster 5000
3、 sentinel3.conf
#端口号 port 26380 dir /tmp # mymaster:自定义集群名,2:投票数量必须2个sentinel才能判断主节点是否失败 sentinel monitor mymaster <ip> <port> 2 # 指的是超过5000秒,且没有回复,则判定主节点不可达 sentinel down-after-milliseconds mymaster 5000 # 表示在故障转移的时候最多有numslaves在同步更新新的master sentinel parallel-syncs mymaster 1 # 故障转移超时时间 sentinel failover-timeout mymaster 5000
3, docker-compose.yml
#端口号 port 26381 dir /tmp # mymaster:自定义集群名,2:投票数量必须2个sentinel才能判断主节点是否失败 sentinel monitor mymaster <ip> <port> 2 # 指的是超过5000秒,且没有回复,则判定主节点不可达 sentinel down-after-milliseconds mymaster 5000 # 表示在故障转移的时候最多有numslaves在同步更新新的master sentinel parallel-syncs mymaster 1 # 故障转移超时时间 sentinel failover-timeout mymaster 5000
4. Utilisez centos pour déployer le cluster et tester l'effet
1 Testez la connexion du cluster via sentinel13. Fermez le maître pour visualiser la commutation active et en veille
sentinel Connexion normale Le nœud maître passe de 16379 à 16381
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!