Maison > base de données > Redis > le corps du texte

Comment créer un cluster Redis

步履不停
Libérer: 2019-06-24 11:18:23
original
2233 Les gens l'ont consulté

Comment créer un cluster Redis

Présentation de l'environnement d'installation et de la version

Utiliser deux machines virtuelles pour simuler 6 nœuds, une machine dispose de 3 nœuds, créant 3 environnements maîtres et 3 esclaves.

redis adopte la version redis-3.2.4.

Les deux machines virtuelles sont CentOS, une CentOS6.5 (IP : 192.168.31.245) et une CentOS7 (IP : 192.168.31.210).

Processus d'installation

1. Téléchargez et décompressez

<br>
Copier après la connexion
cd /root/software
wget http://download.redis.io/releases/redis-3 .2.4.tar.gz
tar -zxvf redis-3.2.4.tar.gz <br>

2. 编译安装

cd redis-3.2.4make && make install
Copier après la connexion

3. 将 redis-trib.rb 复制到 /usr/local/bin 目录下

cd src
cp redis-trib.rb /usr/local/bin/  
Copier après la connexion

4. 创建 Redis 节点

首先在 192.168.31.245 机器上 /root/software/redis-3.2.4 目录下创建 redis_cluster 目录;

mkdir redis_cluster  
Copier après la connexion

在 redis_cluster 目录下,创建名为7000、7001、7002的目录,并将 redis.conf 拷贝到这三个目录中

mkdir 7000 7001 7002<br>cp redis.conf redis_cluster/7000cp redis.conf redis_cluster/7001cp redis.conf redis_cluster/7002  
Copier après la connexion

分别修改这三个配置文件,修改如下内容

port  7000                                        //端口7000,7002,7003        
bind 本机ip                                       //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7000.pid          //pidfile文件对应7000,7001,7002
cluster-enabled  yes                           //开启集群  把注释#去掉
cluster-config-file  nodes_7000.conf   //集群的配置  配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志
Copier après la connexion
  • 接着在另外一台机器上(192.168.31.210),的操作重复以上三步,只是把目录改为7003、7004、7005,对应的配置文件也按照这个规则修改即可

5. 启动各个节点

第一台机器上执行
redis-server redis_cluster/7000/redis.conf
redis-server redis_cluster/7001/redis.conf
redis-server redis_cluster/7002/redis.conf
 
另外一台机器上执行
redis-server redis_cluster/7003/redis.conf
redis-server redis_cluster/7004/redis.conf
redis-server redis_cluster/7005/redis.conf
Copier après la connexion

6. 检查 redis 启动情况

##一台机器<br>ps -ef | grep redis
root      61020      1  0 02:14 ?        00:00:01 redis-server 127.0.0.1:7000 [cluster]    
root      61024      1  0 02:14 ?        00:00:01 redis-server 127.0.0.1:7001 [cluster]    
root      61029      1  0 02:14 ?        00:00:01 redis-server 127.0.0.1:7002 [cluster]    
 
netstat -tnlp | grep redis
tcp        0      0 127.0.0.1:17000             0.0.0.0:*                   LISTEN      61020/redis-server 
tcp        0      0 127.0.0.1:17001             0.0.0.0:*                   LISTEN      61024/redis-server 
tcp        0      0 127.0.0.1:17002             0.0.0.0:*                   LISTEN      61029/redis-server 
tcp        0      0 127.0.0.1:7000              0.0.0.0:*                   LISTEN      61020/redis-server 
tcp        0      0 127.0.0.1:7001              0.0.0.0:*                   LISTEN      61024/redis-server 
tcp        0      0 127.0.0.1:7002              0.0.0.0:*                   LISTEN      61029/redis-server12345678910111213
    ##另外一台机器
ps -ef | grep redis
root       9957      1  0 02:32 ?        00:00:01 redis-server 127.0.0.1:7003 [cluster]
root       9964      1  0 02:32 ?        00:00:01 redis-server 127.0.0.1:7004 [cluster]
root       9971      1  0 02:32 ?        00:00:01 redis-server 127.0.0.1:7005 [cluster]
root      10065   4744  0 02:38 pts/0    00:00:00 grep --color=auto redis
netstat -tlnp | grep redis
tcp        0      0 127.0.0.1:17003         0.0.0.0:*               LISTEN      9957/redis-server 1tcp        0      0 127.0.0.1:17004         0.0.0.0:*               LISTEN      9964/redis-server 1tcp        0      0 127.0.0.1:17005         0.0.0.0:*               LISTEN      9971/redis-server 1tcp        0      0 127.0.0.1:7003          0.0.0.0:*               LISTEN      9957/redis-server 1tcp        0      0 127.0.0.1:7004          0.0.0.0:*               LISTEN      9964/redis-server 1tcp        0      0 127.0.0.1:7005          0.0.0.0:*               LISTEN      9971/redis-server 1
Copier après la connexion

7.创建集群

Redis 官方提供了 redis-trib.rb 这个工具,就在解压目录的 src 目录中,第三步中已将它复制到 /usr/local/bin 目录中,可以直接在命令行中使用了。使用下面这个命令即可完成安装。

redis-trib.rb  create  --replicas  1  192.168.31.245:7000 192.168.31.245:7001  192.168.31.245:7002 192.168.31.210:7003  192.168.31.210:7004  192.168.31.210:7005
Copier après la connexion

其中,前三个 ip:port 为第一台机器的节点,剩下三个为第二台机器。

等等,出错了。这个工具是用 ruby 实现的,所以需要安装 ruby。安装命令如下:

yum -y install ruby ruby-devel rubygems rpm-build

gem install redis

Ensuite, exécutez la commande redis-trib.rb, l'invite suivante apparaîtra :

Comment créer un cluster Redis

Entrée oui C'est tout, puis le contenu suivant apparaît, indiquant que l'installation est réussie.

Comment créer un cluster Redis 

8. Vérification du cluster

Connectez le nœud du port 7002 du cluster sur la première machine, et connectez le nœud 7005 sur l'autre machine. la méthode de connexion est redis-cli -h 192.168.31.245 -c -p 7002 , ajoutez le paramètre -C pour vous connecter au cluster, car les modifications redis.conf ci-dessus sont liées à l'adresse IP , donc -h Les paramètres ne peuvent pas être omis.

Exécutez la commande set hello world sur le nœud 7005. Les résultats de l'exécution sont les suivants :

Puis sur un autre port 7002, vérifiez le contenu avec la touche bonjour, obtenez bonjour, le résultat de l'exécution est le suivant :

Comment créer un cluster Redis

indiquant que le cluster fonctionne normalement.

Expliquez brièvement le principe

Lors de la conception du cluster Redis, la décentralisation et le middleware ont été pris en compte. En d'autres termes, chaque nœud du cluster a une relation égale et est peer-to-peer. Chaque nœud enregistre ses propres données et l'état de l'ensemble. grappe. Chaque nœud est connecté à tous les autres nœuds et ces connexions restent actives, ce qui garantit que nous n'avons besoin que de nous connecter à n'importe quel nœud du cluster pour obtenir des données d'autres nœuds.

Le cluster Redis n'utilise pas le hachage cohérent traditionnel pour distribuer les données, mais utilise une autre méthode appelée 哈希槽 (hash slot) pour distribuer les données. Le cluster Redis se voit attribuer 16 384 emplacements par défaut. Lorsque nous définissons une clé, nous utiliserons l'algorithme CRC16 pour prendre le modulo pour obtenir le slot correspondant, puis attribuer la clé aux nœuds dans la plage d'emplacements de hachage. L'algorithme spécifique est : CRC16(key) % 16384。所以我们在测试的时候看到set 和 get 的时候,直接跳转到了7000端口的节点。

Le cluster Redis stockera les données dans un nœud maître, puis synchronisera les données entre le maître et son salve correspondant. Lors de la lecture des données, les données sont également obtenues du nœud maître correspondant selon l'algorithme de hachage cohérent. Ce n'est qu'à la mort d'un maître qu'un nœud de salve correspondant commencera à agir en tant que maître.

Il est à noter que : 3个或以上 doit être le nœud maître, sinon il échouera lors de la création du cluster, et lorsque le nombre de nœuds maîtres survivants est inférieur à la moitié du nombre total de nœuds, le l'ensemble du cluster ne sera pas en mesure de fournir des services.

Pour plus d'articles techniques liés à Redis, veuillez visiter la colonne Tutoriel Redis pour apprendre !

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!