Redis本地集群搭建(5版本以上)

2019年11月3日10:05:48

步骤

1、下载安装Redis的安装包

2、复制5份,一共6份Redis的解压安装版,修改每个Redis节点的端口并开启节点

3、修改每个Redis节点的端口,以及开启集群模式

3、使用redis-cli --cluster create ip:port给集群的节点分配哈希槽(如果要使用主从,只需要添加master节点的ip:port即可)

4、使用redis-cli --cluster check ip:port查看节点信息

5、使用redis-cli --cluster add-node node-ip:node-port master-ip:master-port --cluster-slave --cluster-master-id master节点id

具体实现

1、编译

下载安装Redis的安装包

wget http://download.redis.io/releases/redis-5.0.6.tar.gz

解压安装包

tar zxf redis-5.0.6.tar.gz

进入到解压后的文件夹

ps:编译前,服务器需要安装gcc

yum install gcc-c++

输入make命令即可编译,出现下图提示表示编译成功

也可以指定编译位置

make install PREFIX=path

编译后的文件

2、复制并修改配置,开启

使用命令复制

cp -rf 文件夹路径 文件夹路径

效果

修改redis.conf的配置,给复制的每一份redis都修改成不同的端口,后台启动

# 默认
daemonize no
port 6379
# cluster-enabled yes

#修改
daemonize yes
port 7001
cluster-enabled yes

开启每个节点(批量执行)

cd /software/redis/redis6379/bin
./redis-server ./redis.conf
cd /software/redis/redis7000/bin
./redis-server ./redis.conf
cd /software/redis/redis7001/bin
./redis-server ./redis.conf
cd /software/redis/redis7002/bin
./redis-server ./redis.conf
cd /software/redis/redis7003/bin
./redis-server ./redis.conf
cd /software/redis/redis7004/bin
./redis-server ./redis.conf

出现下图表示所有节点开启成功

3、分配哈希槽

使用如下命令

redis-cli --cluster create ip:port ip:port ip:port

4、查看分配信息

使用命令redis-cli --cluster check ip:port查看分配的信息

可以看出,6379分配到的是0-5460,7001是5461-10922,7003是10923-16383。

5、添加从节点

使用命令

redis-cli --cluster add-node node-ip:node-port master-ip:master-port --cluster-slave --cluster-master-id master节点id

添加完毕后查看节点信息

cluster nodes

从上图可以看出,设置了3主3从的集群模式。

6、测试key

连接redis(-c表示是集群模式)

redis-cli -p 6379 -c

可以看出,在端口为6379的节点上添加key,通过算法将这个key转发到了7001端口的节点上。

进入7001端口的节点,可以查到这个key值。

同时,7001端口的从节点也接收到了这个key值。

7、测试哨兵

使用 ps aux|grep redis查询每个redis节点的端口

这时候主从节点之间是正常的

关闭端口为7001的节点

7001节点的7002端口从节点自动升级到了master节点。

重新开启7001节点,自动降级到slave。


Redis高可用集群的水平扩展

扩展主节点

新建端口为7005和7006的Redis节点并运行。

把7005节点加入容器

redis-cli --cluster add-node 127.0.0.1:7005 127.0.0.1:6379

分配哈希槽给7005节点

从7001节点分配1000个哈希槽给7005节点
all表示均匀分配(从每个节点取一点哈希槽出来)
done表示从当前节点取

[root@iz2zeaf5jdjve80rjlsjgnz bin]# redis-cli --cluster reshard 127.0.0.1:7001
>>> Performing Cluster Check (using node 127.0.0.1:7001)
S: 152f1f15ac36784362e8733a393c9a257f7a8ba2 127.0.0.1:7001
   slots: (0 slots) slave
   replicates f9129fca620934624742e25a31d08c545a9d583e
S: ac613c6d40e0d860662effb7403a67fe9b6029aa 127.0.0.1:7000
   slots: (0 slots) slave
   replicates 77cbdfe644fdc0e50e550cad44a3ed144c8d2499
M: f9129fca620934624742e25a31d08c545a9d583e 127.0.0.1:7002
   slots:[5962-10922] (4961 slots) master
   1 additional replica(s)
S: 09ede6784ccc5a41b82db3fe4c544b5c126f455e 127.0.0.1:7004
   slots: (0 slots) slave
   replicates bd08af40b95169524c27da654302c9f12d8a9e8c
M: bd08af40b95169524c27da654302c9f12d8a9e8c 127.0.0.1:7003
   slots:[11422-16383] (4962 slots) master
   1 additional replica(s)
M: 6c87fc578eec8bd7d588d111347dd7a7bd21dd0b 127.0.0.1:7005
   slots: (0 slots) master
M: 77cbdfe644fdc0e50e550cad44a3ed144c8d2499 127.0.0.1:6379
   slots:[0-5961],[10923-11421] (6461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 1000
What is the receiving node ID? 6c87fc578eec8bd7d588d111347dd7a7bd21dd0b
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1: all

Ready to move 1000 slots.

扩展从节点

将7006节点的Redis添加到集群中。

 redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7005 --cluster-slave --cluster-master-id 6c87fc578eec8bd7d588d111347dd7a7bd21dd0b

参考

Redis入门(适合新手)

redis集群搭建(非常详细,适合新手)

Redis5 cluster人工指定主从关系

Redis 5 高可用集群的水平扩展

Redis本地集群搭建(5版本以上)的更多相关文章

  1. redis的集群搭建(很详细很详细)

    说在前面的话 之前有一节说了redis单机版的搭建和使用jedis管理redis单机版和集群版, 本节主要讲一下redis的集群搭建. 跳转到jedis管理redis的使用 认识redis集群 首先我 ...

  2. linux环境下redis安装(redis伪集群搭建)

    redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...

  3. Redis Cluster集群搭建<原>

    一.环境配置 一台window 7上安装虚拟机,虚拟机中安装的是centos系统. 二.目标     Redis集群搭建的方式有多种,根据集群逻辑的位置,大致可以分为三大类:基于客户端分片的Redis ...

  4. Redis Cluster 集群搭建与扩容、缩容

    说明:仍然是伪集群,所有的Redis节点,都在一个服务器上,采用不同配置文件,不同端口的形式实现 前提:已经安装好了Redis,本文的redis的版本是redis-6.2.3 Redis的下载.安装参 ...

  5. Redis Cluster集群搭建与配置

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

  6. Redis Cluster集群搭建与应用

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

  7. 【Redis】Redis cluster集群搭建

    Redis集群基本介绍 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施installation. Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行 ...

  8. redis主从集群搭建及容灾部署(哨兵sentinel)

    Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 Redis安装 整体架构 Redis主从结构搭建 Redis容灾部署(哨兵sentinel) Redis常见问题 ...

  9. druid.io本地集群搭建 / 扩展集群搭建

    druid.io 是一个比较重型的数据库查询系统,分为5种节点 . 在此就不对数据库进行介绍了,如果有疑问请参考白皮书: http://pan.baidu.com/s/1eSFlIJS 单台机器的集群 ...

随机推荐

  1. VC++ 2010 创建高级Ribbon界面详解(2)

    Ribbon 控件的使用 1.命令按钮 命令按钮可以说是我们最常用的Ribbon控件了,我们通常都是通过命令按钮来发送某个命令,执行某个动作.它代替了过去的菜单命令,成为使用最频繁的Ribbon控件. ...

  2. 最长递增子序列nlogn的做法

    费了好大劲写完的  用线段树维护的 nlogn的做法再看了一下 大神们写的 nlogn  额差的好远我写的又多又慢  大神们写的又少又快时间  空间  代码量 哪个都赶不上大佬们的代码 //这是我写的 ...

  3. Warshall算法和Floyd算法

    不用说这两位都是冷门算法……毕竟O(n^3)的时间复杂度算法在算法竞赛里基本算是被淘汰了……而且也没有在这个算法上继续衍生出其他的算法… 有兴趣的话:click here.. 话说学离散的时候曾经有个 ...

  4. beforeEach的深入研究,及beforeEach和beforeRouteEnter区别?

    之前一直困惑它俩的区别,也没找到合适的文档,直到有天看到一篇博客,一起来学习下: 之前是在created钩子函数里面,发现这是在今天当前页面之后了.先回顾一下钩子函数beforeEach const ...

  5. JQuery on绑定click无效的的bug解决办法?

    如果你在移动端使用zepto.js, touch 来代替click事件,那就没有上述标题的问题了.如果你仍然使用了click,在点击事件中苹果机就可能出现无效的结果. 第一种方法: 解决的方法很巧妙, ...

  6. 判断字符串是否为JSON

    function isJSON(str) { if (typeof str == 'string') { try { var obj=JSON.parse(str); if(typeof obj == ...

  7. C语言之内存分配函数

    #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { /********* ...

  8. HTML5和CSS3工具资源汇总

    HTML5 & CSS3 准备就绪 该网站通过扇形图表的形式展现了从08年到10年以来各大浏览器对HTML5和CSS3的支持情况.发展势头还是很可观的. HTML5安全手册 CSS3按钮生成器 ...

  9. UserCF算法和ItemCF算法的对比

  10. @ControllerAdvice + @ExceptionHandler全局处理Controller层异常

    import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind ...