linux-redis cluster集群(redis5.x)
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)的更多相关文章
- Redis Cluster集群搭建与应用
1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...
- CentOS7 安装Redis Cluster集群
上一篇中已经讲到了如何安装单击版Redis,这一篇我们来说下如何安装Cluster,关于哨兵模式这里我就不写文章安装了,有兴趣的同学可以自己去研究,哨兵模式可以在主从模式下在创建三台机器的哨兵集群监控 ...
- Redis Cluster集群架构实现(四)--技术流ken
Redis集群简介 通过前面三篇博客的介绍<Redis基础认识及常用命令使用(一)--技术流ken>,<Redis基础知识补充及持久化.备份介绍(二)--技术流ken>,< ...
- Redis cluster集群:原理及搭建
Redis cluster集群:原理及搭建 2018年03月19日 16:00:55 阅读数:6120 1.为什么使用redis? redis是一种典型的no-sql 即非关系数据库 像python的 ...
- Redis Cluster集群架构实现
Redis集群简介 通过前面三篇博客的介绍<Redis基础认识及常用命令使用(一)–技术流ken>,<Redis基础知识补充及持久化.备份介绍(二)–技术流ken>,<R ...
- K8S部署Redis Cluster集群
kubernetes部署单节点redis: https://www.cnblogs.com/zisefeizhu/p/14282299.html Redis 介绍 • Redis代表REmote DI ...
- K8S部署Redis Cluster集群(三主三从模式) - 部署笔记
一.Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理.它可以存储和操作高级数据类型,例如列表,地图,集合和排序 ...
- Redis Cluster集群搭建与配置
Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...
- jedis处理redis cluster集群的密码问题
环境介绍:jedis:2.8.0 redis版本:3.2 首先说一下redis集群的方式,一种是cluster的 一种是sentinel的,cluster的是redis 3.0之后出来新的集群方式 本 ...
- 深入分析redis cluster 集群
深入分析redis cluster 集群安装配置详解 下面小编来为各位介绍一篇深入分析redis cluster 集群安装配置详解,如果你希望做数据库集群就可以来看看此文章的哦. http://rub ...
随机推荐
- asp.net MVC项目开发之统计图echarts柱状图(一)
echarts统计图doc网址:http://echarts.baidu.com/echarts2/index.html 使用echarts,需要引用在js中,如果你已经下载echarts的js包,可 ...
- warning Unexpected use of undefined no-undefined
报错翻译:警告意外使用未定义的no-undefined(谷歌这次翻译的不行) 报错原因undefined直接使用了,如下↓ 其实报错的意思就是这样不安全,看下面一个例子 var foo = undef ...
- Nginx-4.Nginx如何处理请求
原文 基于server_name 的虚拟站点 Nginx首先需要确定使用哪个server来处理请求.举个简单的例子,有下面几个server 第一个,监听80端口,为org站点 server { lis ...
- java-十进制与十六进制的转化
问题: 在一些特定的情况下,程序中需要用到进制之间的转化,现在来说说十进制和十六进制的转化. 其实java进制转换非常的简单. 那问什么还要说这个问题呢? 因为在转化的时候遇到一个问题... 记录一下 ...
- 《C++Primer》第五版习题答案--第六章【学习笔记】
<C++Primer>第五版习题答案--第六章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/16 第六章:函数 ...
- redis缓存优化
redis缓存优化 一.问题 在Javaweb项目中,如果每次刷新,所有资源都重新从数据库中读取,这样每次效率会很低,在这里可以使用redis非关系型数据库,将一些不经常变化得资源加载进内存中.提高效 ...
- P5443 [APIO2019]桥梁 [分块+并查集]
分块+并查集,大板子,没了. 并查集不路径压缩,可撤销,然后暴力删除 这样对于每个块都是独立的,所以直接搞就行了. 然后块内修改操作搞掉,就是单独的了 // powered by c++11 // b ...
- WebDev.WebServer20.exe应用程序错误
我的.net网页,在iis运行成功,在VS2010调试网页时报一个WebDev.WebServer20.exe应用程序错误. 最后查找资料,发现了网站设置的框架是2.0,在vs2010里不能调试2.0 ...
- poj 2528 线段树区间修改+离散化
Mayor's posters POJ 2528 传送门 线段树区间修改加离散化 #include <cstdio> #include <iostream> #include ...
- [Blog] Part1: 技术札记-写个创站小结吧
创站绝对是一个大坑 我当初真有勇气.. 嗯 这个站主要就是 Github+Jekyll+markdown 基本上还是现在能用的比较习惯的模式 基本流程概述 域名 -> 修改DNS -> g ...