redis cluster 集群拓展


准备工作


举例:添加2个节点(1主7006节点,1从7007节点)

在/home/redis-cluster下生成conf和data目标,并生成配置信息

   `; do \
  mkdir -p ./${port}/conf \
  && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
  && mkdir -p ./${port}/data; \
done

共生成2个文件夹,从7006到7007,每个文件夹下包含data和conf文件夹,同时conf里面有redis.conf配置文件

创建redis容器

   `; do \
  docker run -d -ti -p ${port}:${port} -p ${port}:${port} \
  -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  -v /home/redis-cluster/${port}/data:/data \
  --restart always --name redis-${port} --net redis-net \
  --sysctl net.core.somaxconn= redis redis-server /usr/local/etc/redis/redis.conf; \
done

新生成2个redis容器

添加节点


启动ruby容器

docker run -tdi --rm --net redis-net ruby

进入容器

docker exec -it a3e0f3502f78(容器ID) /bin/bash

执行命令

gem install redis
wget http://download.redis.io/redis-stable/src/redis-trib.rb

将节点添加到集群

添加主节点

ruby redis-trib.rb add-node    
注释:192.168.1.199:7006 新增的节点
      192.168.1.199:7005 集群任一个旧节点

添加从节点

ruby redis-trib.rb add-node --slave --master-id ad07845aed1ef6d983846909ada8b42282e3748c  
注释:- -slave 表示添加的是从节点
      - -master-id ad07845aed1ef6d983846909ada8b42282e3748c 主节点的node id 在这里是前面新添加的7006的node id
      192.168.1.199:7007 新节点
      192.168.1.199:7005 集群任一个旧节点

查看7006节点的id

ruby redis-trib.rb check 

现在添加的主节点是没有slots的,必须分配slots

分配slots

ruby redis-trib.rb reshard
How many slots  to )?  //设置slot数2000
What is the receiving node ID? ad07845aed1ef6d983846909ada8b42282e3748c //新节点node id
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 #:all //表示全部节点重新洗牌
Do you want to proceed with the proposed reshard plan (yes/no)? yes //确认重新分  

注:主节点如果没有slots的话,存取数据就都不会被选中

查看一下,集群情况

ruby redis-trib.rb check 

至此,新添加的两个节点可以再集群内正常使用

删除节点


(该操作是在上面启动好的ruby容器内做的)

1,删除从节点

redis-trib.rb del-node  '9c240333476469e8e2c8e80b089c48f389827265'  

2,删除主节点

如果主节点有从节点,将从节点转移到其他主节点

如果主节点有slot,去掉分配的slot,然后在删除主节点

ruby redis-trib.rb reshard  //取消分配的slot,下面是主要过程
How many slots  to )?  //被删除master的所有slot数量
What is the receiving node ID? 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 //接收7006节点slot的master
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 #:ad07845aed1ef6d983846909ada8b42282e3748c //被删除master的node-id
Source node #:done
Do you want to proceed with the proposed reshard plan (yes/no)? yes //取消slot后,reshard  

新增master节点后,也进行了这一步操作,当时是分配,现在去掉。反着的。

redis-trib.rb del-node  'ad07845aed1ef6d983846909ada8b42282e3748c'

新的master节点被删除了

redis cluster 集群拓展的更多相关文章

  1. Redis Cluster集群搭建与配置

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

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

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

  3. 深入分析redis cluster 集群

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

  4. Redis Cluster集群搭建与应用

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

  5. Redis Cluster集群主从方案

    本文介绍一种通过Jedis和Cluster实现Redis集群(主从)的高可用方案,该方案需要使用Jedis2.8.0(推荐),Redis3.0及以上版本(强制). 附:Redis Cluster集群主 ...

  6. CentOS7 安装Redis Cluster集群

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

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

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

  8. 【精】搭建redis cluster集群,JedisCluster带密码访问【解决当中各种坑】!

    转: [精]搭建redis cluster集群,JedisCluster带密码访问[解决当中各种坑]! 2017年05月09日 00:13:18 冉椿林博客 阅读数:18208  版权声明:本文为博主 ...

  9. redis cluster集群web管理工具 relumin

    redis cluster集群web管理工具 relumin 下载地址 https://github.com/be-hase/relumin 只支持redis cluster模式 java环境 tar ...

随机推荐

  1. hibernate mapping文件中 xmlns会导致linq to xml 查询不到对应的节点

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. 符合mvc思维的分页思想

    .Model Student.cs namespace WebApplication14.Models { public class Student { public int Id { get; se ...

  3. GTA4下载和玩教程

    侠盗猎车4中文版.rar: 但是下载安装之后总是在刚开始开车的时候跳转到人物界面卡在那里无法进行下去,解决办法: 1.新建一个commandline.txt文件复制以下内容进去 -novblank - ...

  4. Laravel框架中的数据库CURD操作、连贯操作、链式操作的用法

    Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁.富于 ...

  5. oracle 中 创建序列sequence

    drop sequence SEQ_YCXWP_CGD; create sequence SEQ_YCXWP_CGD increment start nomaxvalue;

  6. 我用Django搭网站(3)-表单RSA加密

    之前开发项目时因为种种原因一直使用明文提交,表单直接明文提交非常不安全,只要稍加操作就能轻易获取用户的信息.在众里寻他千百度之后决定使用RSA加密方式,简单可靠. 项目准备 一.安装PyCrypto库 ...

  7. Java集合类总结 (三)

    HashSet类 关于HashMap的实现细节 HashMap是用LinkedList实现的,每个list被称为一个桶(bucket),在hashmap中要查找一个元素,首先对传入的key进行散列,并 ...

  8. mvc - codefirst 数据迁移

    from :http://blog.csdn.net/xiaoyiyz/article/details/41485325

  9. 读写文本文件之StreamReader和StreamWriter

    private string _filePath = @"1.txt"; //查询文件是否存在,如果不存在,则创建 if (!File.Exists(_filePath)) { u ...

  10. 「BZOJ 3209」花神的数论题

    Title Link 戳我 Title Solution 这道题可以运用组合数的思想啊,数位dp也可以,随便你怎么做,这里就讲一讲组合数的做法吧,要小于n,所以我们可以枚举n二进制下1的位置,在i-1 ...