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>
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
3. 将 redis-trib.rb 复制到 /usr/local/bin 目录下
cd src cp redis-trib.rb /usr/local/bin/
4. 创建 Redis 节点
首先在 192.168.31.245 机器上 /root/software/redis-3.2.4 目录下创建 redis_cluster 目录;
mkdir redis_cluster
在 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
分别修改这三个配置文件,修改如下内容
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日志开启 有需要就开启,它会每次写操作都记录一条日志
接着在另外一台机器上(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
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
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
其中,前三个 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 :
Entrée oui C'est tout, puis le contenu suivant apparaît, indiquant que l'installation est réussie.
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 :
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!