Maison  >  Article  >  base de données  >  Comment créer un cluster Redis-Sentinel basé sur Docker

Comment créer un cluster Redis-Sentinel basé sur Docker

WBOY
WBOYavant
2023-06-02 10:19:05901parcourir

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.

Comment créer un cluster Redis-Sentinel basé sur Docker

3. Processus de construction

1. Structure du répertoire

Comment créer un cluster Redis-Sentinel basé sur Docker

Comment créer un cluster Redis-Sentinel basé sur Docker2, 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 sentinel1


2. du nœud maître et des nœuds enfants

Comment créer un cluster Redis-Sentinel basé sur Docker

3. Fermez le maître pour visualiser la commutation active et en veille Comment créer un cluster Redis-Sentinel basé sur Docker

Comment créer un cluster Redis-Sentinel basé sur Docker

sentinel Connexion normale

Comment créer un cluster Redis-Sentinel basé sur Docker

Le nœud maître passe de 16379 à 16381

Comment créer un cluster Redis-Sentinel basé sur Docker

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer