1、查看redis安装目录:

[root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# ll
total 472
-rw-rw-r-- 1 root root 106874 May 16 2019 00-RELEASENOTES
-rw-rw-r-- 1 root root 53 May 16 2019 BUGS
-rw-rw-r-- 1 root root 2381 May 16 2019 CONTRIBUTING
-rw-rw-r-- 1 root root 1487 May 16 2019 COPYING
drwxrwxr-x 6 root root 4096 Feb 6 11:38 deps
-rw-r--r-- 1 root root 203457 Feb 21 23:31 dump.rdb
-rw-rw-r-- 1 root root 11 May 16 2019 INSTALL
-rw-rw-r-- 1 root root 151 May 16 2019 Makefile
-rw-rw-r-- 1 root root 6888 May 16 2019 MANIFESTO
-rw-rw-r-- 1 root root 20555 May 16 2019 README.md
-rw-rw-r-- 1 root root 61821 Feb 15 13:12 redis.conf
-rwxrwxr-x 1 root root 275 May 16 2019 runtest
-rwxrwxr-x 1 root root 280 May 16 2019 runtest-cluster
-rwxrwxr-x 1 root root 341 May 16 2019 runtest-moduleapi
-rwxrwxr-x 1 root root 281 May 16 2019 runtest-sentinel
-rw-rw-r-- 1 root root 9710 May 16 2019 sentinel.conf
drwxrwxr-x 3 root root 4096 Feb 24 16:07 src
drwxrwxr-x 11 root root 4096 May 16 2019 tests
drwxrwxr-x 8 root root 4096 May 16 2019 utils

2、在当前目录创建redis_cluster

[root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]mkdir redis_cluster

3、将src目录下所有文件拷贝到redis_cluster/node6379~6384下

[root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r ./src/ redis_cluster/node6379

[root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r ./src/ redis_cluster/node6380

[root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r ./src/ redis_cluster/node6381

[root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r ./src/ redis_cluster/node6382

[root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r ./src/ redis_cluster/node6383

[root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r ./src/ redis_cluster/node6384

4、将redis.conf拷贝到redis_cluster/node6379下

[root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# cp -r redis.conf ./redis_cluster/node6379

5、修改nodes6379目录下redis.conf文件,以nodes6379为例:

[root@iZwz97y9qoykzzotubitq3Z redis-5.0.5]# vim ./redis_cluster/node6379/redis.conf

进行如下配置:
# bind 127.0.0.1

protected-mode no

port 6379(对应node序号进行更改,6380,6381...)

pidfile /var/run/redis_6379.pid(对应node序号进行更改,6380,6381...)

dbfilename dump6379.rdb (对应node序号进行更改,6380,6381...)

masterauth root123456

requirepass root123456 (注意此处是空格,而不是“=”)

cluster-enabled yes

cluster-config-file nodes-6379.conf (对应node序号进行更改,6380,6381...)

cluster-node-timeout 15000

然后wq!保存退出。

6、将redis_cluster/node6379/redis.conf拷贝到node6380~6084下

[root@iZwz97y9qoykzzotubitq3Z redis_cluster]# cp -r node6379/redis.conf  node6380/

[root@iZwz97y9qoykzzotubitq3Z redis_cluster]# cp -r node6379/redis.conf  node6381/

[root@iZwz97y9qoykzzotubitq3Z redis_cluster]# cp -r node6379/redis.conf  node6382/

[root@iZwz97y9qoykzzotubitq3Z redis_cluster]# cp -r node6379/redis.conf  node6383/

[root@iZwz97y9qoykzzotubitq3Z redis_cluster]# cp -r node6379/redis.conf  node6384/

7、以此修改redis.conf文件,以node6380为例:

[root@iZwz97y9qoykzzotubitq3Z redis_cluster]# vim node6380/redis.conf

输入“ :%s/6379/6380/g”,回车结束,最后wq!保存退出(6379整体替换为6380);

注:node6381~6384 按上述操作整体替换即可。

8、以此启动node6379~6384节点,以node6379为例

[root@iZwz97y9qoykzzotubitq3Z redis_cluster]# node6379/redis-server node6379/redis.conf
12051:C 24 Feb 2020 22:32:36.650 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
12051:C 24 Feb 2020 22:32:36.650 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=12051, just started
12051:C 24 Feb 2020 22:32:36.650 # Configuration loaded
注:启动时,必须加载各自节点下的redis.conf

9、查看各节点的启动状态

[root@iZwz97y9qoykzzotubitq3Z redis_cluster]# ps -aux | grep redis
root 425 0.1 0.1 156456 3304 ? Ssl 20:53 0:06 node6383/redis-server *:6383 [cluster]
root 849 0.1 0.1 156456 3300 ? Ssl 20:54 0:06 node6384/redis-server *:6384 [cluster]
root 31077 0.1 0.1 163112 3332 ? Ssl 20:49 0:07 node6379/redis-server *:6379 [cluster]
root 32046 0.1 0.1 162600 3288 ? Ssl 20:51 0:06 node6380/redis-server *:6380 [cluster]
root 32390 0.1 0.1 156456 3248 ? Ssl 20:52 0:06 node6381/redis-server *:6381 [cluster]
root 32669 0.1 0.1 156456 3344 ? Rsl 20:53 0:06 node6382/redis-server *:6382 [cluster]

10、配置集群

[root@iZwz97y9qoykzzotubitq3Z node6379]# ./redis-cli --cluster create 39.xx.130.xx:6379 39.xx.130.xx:6380 39.xx.130.xx:6381 39.xx.130.xx:6382 39.xx.130.xx:6383 39.xx.130.xx:6384 --cluster-replicas 1 -a root123456

若最终出现下面信息,则说明配置成功!

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

注:redis5版本可以直接使用redis-cli命令配置集群(内部集成ruby)

--cluster-replicas 1:表示主从比例1:1 (一台主机对应有一台从机)

--cluster-replicas 2:表示主从比例1:2 (一台主机对应有两台从机)

-a root123456:配置集群时所需的认证密码 (-a:auth简写,root123456:redis服务器认证密码)

11、测试redis-cluster

[root@iZwz97y9qoykzzotubitq3Z node6379]# ./redis-cli -c -a root123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> set foo bar
-> Redirected to slot [12182] located at 127.0.0.1:6381
OK
127.0.0.1:6381> set hello world
-> Redirected to slot [866] located at 127.0.0.1:6379
OK
127.0.0.1:6379> get foo
-> Redirected to slot [12182] located at 127.0.0.1:6381
"bar"
127.0.0.1:6381> get hello
-> Redirected to slot [866] located at 127.0.0.1:6379
"world"
存值时,根据key进行算法后,将数据存入对应的节点中(每个节点对应有hash槽的范围)

12、查看节点信息

127.0.0.1:6379> cluster nodes
79b4f44b41c07275182241da6325e3ffb354867b 127.0.0.1:6383@16383 slave 1a3fe89294ea018880d59c9c080297f8870bd3c8 0 1582556062000 5 connected
0f6150af547cfc3aaaaff3fabe19421a93862150 127.0.0.1:6381@16381 master - 0 1582556062299 3 connected 10923-16383
0a9350c59941f1ef0f1eb147a971528a926dbfd1 127.0.0.1:6382@16382 slave 0aba59f4fd0341df1dc06bd38d3dade90b7f8ae4 0 1582556064304 4 connected
6c97a66fe6f90e76c65b16e9eef52b0a64b5e588 127.0.0.1:6384@16384 slave 0f6150af547cfc3aaaaff3fabe19421a93862150 0 1582556063000 6 connected
1a3fe89294ea018880d59c9c080297f8870bd3c8 127.0.0.1:6380@16380 master - 0 1582556063302 2 connected 5461-10922
0aba59f4fd0341df1dc06bd38d3dade90b7f8ae4 127.0.0.1:6379@16379 myself,master - 0 1582556060000 1 connected 0-5460

注:说明6379(主)与6382(从)配对

13、模拟将node6379节点停掉

重新打开一个tab

[root@iZwz97y9qoykzzotubitq3Z ~]# ps -aux | grep redis
root 425 0.1 0.1 156456 3248 ? Ssl 20:53 0:08 node6383/redis-server *:6383 [cluster]
root 849 0.1 0.1 156456 3304 ? Ssl 20:54 0:08 node6384/redis-server *:6384 [cluster]
root 19850 0.0 0.0 24856 1600 pts/0 S+ 22:50 0:00 ./redis-cli -c -a root123456
root 23411 0.0 0.0 112712 964 pts/1 R+ 22:58 0:00 grep --color=auto redis
root 31077 0.1 0.1 163112 3364 ? Ssl 20:49 0:08 node6379/redis-server *:6379 [cluster]
root 32046 0.1 0.1 162600 3288 ? Ssl 20:51 0:08 node6380/redis-server *:6380 [cluster]
root 32390 0.1 0.1 156456 3264 ? Ssl 20:52 0:08 node6381/redis-server *:6381 [cluster]
root 32669 0.1 0.1 156456 3260 ? Ssl 20:53 0:08 node6382/redis-server *:6382 [cluster]

[root@iZwz97y9qoykzzotubitq3Z ~]# kill -9 31077

[root@iZwz97y9qoykzzotubitq3Z ~]# ps -aux | grep redis
root 425 0.1 0.1 156456 3248 ? Ssl 20:53 0:08 node6383/redis-server *:6383 [cluster]
root 849 0.1 0.1 156456 3304 ? Ssl 20:54 0:08 node6384/redis-server *:6384 [cluster]
root 19850 0.0 0.0 24856 1600 pts/0 S+ 22:50 0:00 ./redis-cli -c -a root123456
root 23990 0.0 0.0 112712 960 pts/1 R+ 22:59 0:00 grep --color=auto redis
root 32046 0.1 0.1 162600 3288 ? Rsl 20:51 0:08 node6380/redis-server *:6380 [cluster]
root 32390 0.1 0.1 156456 3264 ? Ssl 20:52 0:08 node6381/redis-server *:6381 [cluster]
root 32669 0.1 0.1 156456 3260 ? Ssl 20:53 0:08 node6382/redis-server *:6382 [cluster]

再连接6381节点:

[root@iZwz97y9qoykzzotubitq3Z node6379]# ./redis-cli -c -p 6381  -a root123456

127.0.0.1:6381> get hello
-> Redirected to slot [866] located at 127.0.0.1:6382
"world"

127.0.0.1:6382> cluster nodes
0a9350c59941f1ef0f1eb147a971528a926dbfd1 127.0.0.1:6382@16382 myself,master - 0 1582557176000 7 connected 0-5460
1a3fe89294ea018880d59c9c080297f8870bd3c8 127.0.0.1:6380@16380 master - 0 1582557180461 2 connected 5461-10922
79b4f44b41c07275182241da6325e3ffb354867b 127.0.0.1:6383@16383 slave 1a3fe89294ea018880d59c9c080297f8870bd3c8 0 1582557179458 5 connected
0f6150af547cfc3aaaaff3fabe19421a93862150 127.0.0.1:6381@16381 master - 0 1582557178000 3 connected 10923-16383
6c97a66fe6f90e76c65b16e9eef52b0a64b5e588 127.0.0.1:6384@16384 slave 0f6150af547cfc3aaaaff3fabe19421a93862150 0 1582557178456 6 connected
0aba59f4fd0341df1dc06bd38d3dade90b7f8ae4 127.0.0.1:6379@16379 master,fail - 1582556349063 1582556347000 1 disconnected

分析:当6379节点还是正常时,get hello应该是重定向到6379节点上的。而现在重定向到6382节点上,

说明之前6382是6379的从节点。但此时6382是主节点了,6379恢复正常后,也只能是从节点了。

127.0.0.1:6381> get hello
-> Redirected to slot [866] located at 127.0.0.1:6379
"world"

linux-redis cluster集群(redis5.x)的更多相关文章

  1. Redis Cluster集群搭建与应用

    1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...

  2. CentOS7 安装Redis Cluster集群

    上一篇中已经讲到了如何安装单击版Redis,这一篇我们来说下如何安装Cluster,关于哨兵模式这里我就不写文章安装了,有兴趣的同学可以自己去研究,哨兵模式可以在主从模式下在创建三台机器的哨兵集群监控 ...

  3. Redis Cluster集群架构实现(四)--技术流ken

    Redis集群简介 通过前面三篇博客的介绍<Redis基础认识及常用命令使用(一)--技术流ken>,<Redis基础知识补充及持久化.备份介绍(二)--技术流ken>,< ...

  4. Redis cluster集群:原理及搭建

    Redis cluster集群:原理及搭建 2018年03月19日 16:00:55 阅读数:6120 1.为什么使用redis? redis是一种典型的no-sql 即非关系数据库 像python的 ...

  5. Redis Cluster集群架构实现

    Redis集群简介 通过前面三篇博客的介绍<Redis基础认识及常用命令使用(一)–技术流ken>,<Redis基础知识补充及持久化.备份介绍(二)–技术流ken>,<R ...

  6. K8S部署Redis Cluster集群

    kubernetes部署单节点redis: https://www.cnblogs.com/zisefeizhu/p/14282299.html Redis 介绍 • Redis代表REmote DI ...

  7. K8S部署Redis Cluster集群(三主三从模式) - 部署笔记

    一.Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理.它可以存储和操作高级数据类型,例如列表,地图,集合和排序 ...

  8. Redis Cluster集群搭建与配置

    Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...

  9. jedis处理redis cluster集群的密码问题

    环境介绍:jedis:2.8.0 redis版本:3.2 首先说一下redis集群的方式,一种是cluster的 一种是sentinel的,cluster的是redis 3.0之后出来新的集群方式 本 ...

  10. 深入分析redis cluster 集群

    深入分析redis cluster 集群安装配置详解 下面小编来为各位介绍一篇深入分析redis cluster 集群安装配置详解,如果你希望做数据库集群就可以来看看此文章的哦. http://rub ...

随机推荐

  1. SharePoint 开发另存文档库中文档

    前言 最近碰到这样一个问题,用前端框架读取SharePoint文档库中文档的时候,如果是PDF/TXT等类型的文档,不会出现另存为的操作,而是在浏览器中在线打开,这样用户是无法接受的. 解决方法 通过 ...

  2. 转载【React Native代码】手写验证码倒计时组件

    实例代码: import React, { Component , PropTypes} from 'react'; import { AppRegistry, StyleSheet, Text, V ...

  3. Windows server 2012 出现大量无名已断开连接用户清楚办法

    打开cmd命令窗口,执行  taskkill /f /im winlogon.exe /t

  4. Qt编写的项目作品3-输入法V2018

    一.功能特点 未采用Qt系统层输入法框架,独创输入切换机制. 纯QWidget编写,支持任何目标平台(亲测windows.linux.嵌入式linux等),支持任意Qt版本(亲测Qt4.6.0到Qt5 ...

  5. .Net框架的模块代码生成器--其三(dotnet tool指令的参数)

    别人已经写好了一个这种处理指令参数的库,我们这里是使用别人的库来实现规范的指令系统 继续上一篇的gfile或者新建一个.Net Core控制台程序也可以 1.安装nuget包,程序包管理器控制台运行 ...

  6. MySQL分析工具explain介绍

    EXPLAIN是MySQl必不可少的一个分析工具,主要用来测试sql语句的性能及对sql语句的优化,或者说模拟优化器执行SQL语句. 简单的说是execute plan, 获取MySQL数据库的执行计 ...

  7. 这个 Python 代码自动补全神器搞得我卧槽卧槽的

    是时候跟你说说这个能让你撸代码撸得舒服得不要不要的神器了——kite. ​!   ​ 简单来说,它是一款 IDE 的插件,能做到代码自动补全,可能你会说了,这有什么牛逼的?一般的编辑器不都有这个功能么 ...

  8. 小白的linux笔记5:关于权限那些事

    在设置smb时发现,目录的权限是个影响访问的大问题,还是得研究清楚. 关于文件权限 查看当前目录下文件和文件夹的权限状态:ls -l drwxrwxr--.  4 root root    4096 ...

  9. 论文阅读笔记(二十三)【ECCV2018】:Robust Anchor Embedding for Unsupervised Video Person Re-Identification in the Wild

    Introduction 当前主要的非监督方法都采用相同的训练数据集,这些数据集在不同摄像头中是对称的,即不存在单个行人的错误项,这些方法将在实际场景中效果下降.在本方法中,作者引入了非对称数据,如下 ...

  10. vue(二)--条件语句

    条件语句:v-if     v-else   v-else-if    v-show v-else .v-else-if 必须跟在 v-if 或者 v-else-if之后. 1.v-if <bo ...