[Redis learning (2)] vous apprend à installer Redis sous Windows et à créer un cluster

L'article précédent a présenté l'installation de redis sous Windows

Introduisez d'abord le concept de cluster

Introduction au cluster Redis

Le cluster Redis est un assembly qui permet le partage de données entre plusieurs nœuds Redis .

Le cluster Redis ne prend pas en charge les commandes qui traitent plusieurs clés, car cela nécessite le déplacement de données entre différents nœuds, ce qui ne peut pas atteindre les performances comme Redis et peut provoquer des erreurs imprévisibles dans des conditions de charge élevée.

Les clusters Redis offrent un certain degré de disponibilité via le partitionnement et continuent de traiter les commandes dans l'environnement réel lorsqu'un nœud est arrêté ou inaccessible. Avantages du cluster Redis:

  • Divisez automatiquement les données sur différents nœuds.
  • La commande peut continuer à être traitée en cas de défaillance ou d'inaccessibilité de certains nœuds de l'ensemble du cluster.

Partage de données de cluster Redis

Le cluster Redis n'utilise pas de hachage cohérent, mais introduit le concept de slot de  hachage .

Le cluster Redis possède 16384 emplacements de hachage, et chaque clé est vérifiée par CRC16 et modulo 16384 pour déterminer l'emplacement à placer. Chaque nœud du cluster est responsable d'une partie de l'emplacement de hachage. Par exemple, si le cluster actuel comporte 3 nœuds , puis:

  • Le nœud A contient les emplacements de hachage 0 à 5500.
  • Le nœud B contient les emplacements de hachage 5501 à 11000.
  • Le nœud C contient les emplacements de hachage 11001 à 16384.

Cette structure permet d'ajouter ou de supprimer facilement des nœuds. Par exemple, si je veux ajouter un nouveau nœud D, je dois ajouter des emplacements des nœuds A, B, C à D. Si je veux supprimer le nœud A, je dois add Déplacez les emplacements vers les nœuds B et C, puis supprimez le nœud A sans aucun emplacement du cluster. Étant donné que le déplacement de l'emplacement de hachage d'un nœud à un autre nœud n'arrête pas le service, que vous ajoutiez, supprimiez ou modifiiez Le nombre d'emplacements de hachage d'un nœud ne rendra pas le cluster indisponible.

Modèle de réplication maître-esclave du cluster Redis

Afin de rendre le cluster toujours disponible lorsque certains nœuds échouent ou que la plupart des nœuds ne peuvent pas communiquer, le cluster utilise un modèle de réplication maître-esclave, et chaque nœud aura N-1 répliques.

Dans notre exemple, un cluster avec trois nœuds A, B et C, sans modèle de réplication, si le nœud B échoue, alors le cluster entier pensera qu'il manque d'emplacements dans la plage 5501-11000 et est inutilisable.

Cependant, si nous ajoutons un nœud esclave A1, B1, C1 à chaque nœud lorsque le cluster est créé (ou après une période de temps), alors le cluster entier sera composé de trois nœuds maîtres et trois nœuds esclaves, de sorte qu'après le nœud B échoue, le cluster élira B1 comme nouveau nœud maître pour continuer à servir, et le cluster entier ne sera pas indisponible car l'emplacement est introuvable

Mais lorsque B et B1 échouent tous les deux, le cluster n'est pas disponible.

Garantie de cohérence Redis

Redis ne garantit pas une forte cohérence des données . Cela signifie qu'en pratique, le cluster peut perdre des opérations d'écriture dans certaines conditions.

La première raison est que le cluster utilise la réplication asynchrone. Le processus de l'opération d'écriture:

  • Le client écrit une commande sur le noeud maître B.
  • Le nœud maître B répond l'état de la commande au client.
  • Le nœud maître réplique l'opération d'écriture sur ses nœuds esclaves B1, B2 et B3.

La copie de la commande par le nœud maître se produit après le retour de la réponse de commande, car si chaque demande de commande de traitement doit attendre la fin de l'opération de réplication, la vitesse de la demande de commande de traitement du nœud maître sera considérablement réduite - nous devons nous concentrer sur les performances et cohérence Faites un compromis entre. Remarque: le cluster Redis peut fournir des méthodes d'écriture synchrones à l'avenir. Une autre situation dans laquelle des commandes peuvent être perdues dans un cluster Redis est que le cluster possède une partition réseau et qu'un client est isolé d'un petit nombre d'instances comprenant au moins un nœud maître.

Par exemple, supposons que le cluster contienne six nœuds A, B, C, A1, B1 et C1, où A, B et C sont les nœuds maîtres, A1, B1 et C1 sont les nœuds esclaves de A, B et C, et il y a un client La fin Z1 suppose qu'il y a une partition réseau dans le cluster, puis le cluster peut être divisé en deux parties. La plupart des parties incluent les nœuds A, C, A1, B1 et C1, et un une petite partie comprend le nœud B et le client Z1.

Z1仍然能够向主节点B中写入, 如果网络分区发生时间较短,那么集群将会继续正常运作,如果分区的时间足够让大部分的一方将B1选举为新的master,那么Z1写入B中得数据便丢失了.

注意, 在网络分裂出现期间, 客户端 Z1 可以向主节点 B 发送写命令的最大时间是有限制的, 这一时间限制称为节点超时时间(node timeout), 是 Redis 集群的一个重要的配置选项:


下面我们来搭建集群

1. 安装Ruby并配置环境

首先我们来配置环境变量 SSL_CERT_FILE 

首先在这里下载证书 http://curl.haxx.se/ca/cacert.pem, 然后再环境变量里设置 SSL_CERT_FILE 这个环境变量,并指向 cacert.pem 文件。(我这里在D盘建了一个文件夹rubyinstaller,把文件放在了里面)



环境配置好之后安装Ruby,Windows可以安装RubyInstaller,下载地址: 

https://rubyinstaller.org/

下载之后解压 解压完之后会有一个Ruby22文件夹,然后进入文件夹中打开命令行依次输入命令进行配置

ruby -v

gem -v

gem sources

gem install redis




2.搭建集群

要让集群正常运作至少需要三个主节点,不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。 这里我们搭建一个伪分布式,使用6个redis实例来模拟

1.)首先我们再D盘redis文件夹下面创建6个文件夹 7000~7005 依次代表使用端口号7000~7005



2.)我们在7000~7005这6个文件夹下面新建 redis.conf 文件

Ensuite, écrivez-y le contenu suivant, il est recommandé d'en copier et coller un après l'écriture, mais n'oubliez pas de changer le numéro de port par le numéro de port du dossier correspondant

port 7000 (numéro de port du dossier correspondant) 
cluster-enabled oui 
cluster-config-file nodes.conf 
cluster-node-timeout 5000 
appendonly oui
 
 
Ensuite, redis-server.exe dans le dossier redis est copié et collé dans le dossier 7000 ~ 7005 à son tour
Comme montré

 
 
3.) Démarrez 6 services redis en séquence
Ouvrez la ligne de commande sous chaque dossier  
Entrez la commande (ne pas éteindre après le démarrage)
redis-server.exe redis.conf


4.) Créez un cluster de démarrage

Étant donné que le fichier redis-trib.rb est nécessaire pour créer et démarrer le cluster, il s'agit d'un programme Ruby qui envoie des commandes spéciales à l'instance pour terminer la création d'un nouveau cluster, vérifier le cluster ou repartager le cluster.

Ce fichier n'est pas inclus dans le fichier d'installation redis de Windows. Nous devons télécharger Redis depuis le site officiel. La version Redis du site officiel est la version Linux . Dans le dossier du code source src, copiez redis-trib.rb dans le Répertoire d'installation Redis sur cette machine.

Vous pouvez également aller ici pour télécharger http://download.csdn.net/download/a447332241/9930662

Enfin, entrez le répertoire où se trouve le fichier redis-trib.rb et exécutez: 

ruby redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

Cette commande est utilisée ici pour créer un nouveau cluster. L'option –replicas 1 signifie que nous voulons créer un nœud esclave pour chaque nœud maître du cluster. Les autres paramètres qui suivent sont la liste d'adresses de cette instance de cluster, 3 maîtres et 3 esclaves

redis-trib affichera une configuration attendue pour que vous puissiez la voir. Si vous pensez qu'il n'y a pas de problème, vous pouvez entrer yes, et redis-trib appliquera cette configuration au cluster afin que chaque nœud puisse commencer à communiquer entre eux.


De cette façon, notre cluster est mis en place.

5.) Test 

 Entrez redis-cli.exe -h 127.0.0.1 -p 7001 -c sous le dossier redis

 Au nom de nous, connectez-vous au service redis du port 7001


Stratégie de distribution des données du cluster Redis:

Une méthode appelée hash slot est utilisée pour allouer des données. Le cluster redis alloue par défaut 16384 slots. Lorsque nous définissons une clé, nous utiliserons l' algorithme CRC16 pour obtenir le modulo pour obtenir le slot, puis diviserons la clé en To the nodes dans l'intervalle de hachage, l'algorithme spécifique est: CRC16 (clé)% 16384

Notez que: il doit y avoir trois nœuds maîtres après cela, sinon il échouera lors de la création d'un cluster. Les intervalles de slot pris en charge par les trois nœuds sont les suivants:

 Le nœud A couvre 0-5460; le
    nœud B couvre 5461-10922; le
    nœud C couvre 10923-16383

Par conséquent, dans la figure ci-dessus, selon l'algorithme de hachage du cluster redis: CRC16 ('name')% 16384 
est alloué au service redis sur le port 7002.

À ce stade, la configuration de Redis Cluster sous Windows est terminée

Document chinois Redis http://www.redis.cn/topics/cluster-tutorial.html

Dans le prochain article, nous utiliserons jedis pour intégrer Spring


Je suppose que tu aimes

Origine blog.csdn.net/a447332241/article/details/77115634
conseillé
Classement