一.集群的搭建

1.准备工作

  (1)安装ruby环境

    redis集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境:

      yum -y install ruby

      yum -y install rubygems

  (2)安装ruby和redis的接口程序

    拷贝redis-3.0.0.gem至/usr/local下;

    执行安装:

      gem install /usr/local/redis-3.0.0.gem

2.集群规划

  (1)Redis集群最少需要6个节点,可以分布在一台或者多台主机上。在教案在一台主机上创建伪分布式集群,不同的端口表示不同的redis节点,如下:

    主节点:192.168.56.3:7001 192.168.56.3:7002 192.168.56.3:7003

    从节点:192.168.56.3:7004 192.168.56.3:7005 192.168.56.3:7006

  (2)在/usr/local/redis下创建redis-cluster目录,其下创建7001、7002。。7006目录,如下:

  (3)将redis解压路径下的配置文件redis.conf,依次拷贝到每个700X目录内,并修改每个700X目录下的redis.conf配置文件:

    port 700X

    bind 192.168.56.3

    cluster-enabled yes

    建议配置:开启后台模式  daemonized  yes

    指定日志输出的文件    logfile  /usr/local/redis/redis-cluster/7001/node1.log

3.启动每个结点redis服务

  依次以700X下的redis.conf,启动redis节点。(必须指定redis.conf文件)

  ./redis-server /../700X/redis.conf

 

4.执行创建集群命令

  进入到redis源码存放目录/home/redis/redis-4.10.3/src下,执行redis-trib.rb,此脚本是ruby脚本,它依赖ruby环境。

./redis-trib.rb create --replicas 1 192.168.4.253:7001 192.168.4.253:7002 192.168.4.253:7003 192.168.4.253:7004 192.168.4.253:7005  192.168.4.253:7006

5.查询集群信息

  集群创建成功登陆任意redis结点查询集群中的节点情况。

  ./redis-cli -c -h 192.168.56.3 -p 7001

  说明:

    ./redis-cli -c -h 192.168.56.3 -p 7001 ,其中:

    -c表示以集群方式连接redis,

    -h指定ip地址,

    -p指定端口号

    cluster nodes 查询集群结点信息;

    cluster info 查询集群状态信。

二.添加主节点

1.节点规划

   集群创建成功后可以向集群中添加节点,下面是添加一个master主节点

   添加7007节点,参考集群结点规划章节添加一个“7007”目录作为新节点。

   添加节点,执行下边命令:

   ./redis-trib.rb add-node  192.168.23.20:7007 192.168.23.20:7001

  查看集群结点发现7007已添加到集群中:

2.hash槽重新分配

  添加完新的主节点后,需要对主节点进行hash槽分配,这样该主节才可以存储数据。

  redis集群有16384个槽,被所有的主节点共同分配,通过查看集群结点可以看到槽占用情况。

  给刚添加的7007结点分配槽:

  第一步:连接上集群

  ./redis-trib.rb reshard 192.168.23.20:7001(连接集群中任意一个可用节点都行)

  第二步:输入要分配的槽数量

  输入 500表示要分配500个槽

  第三步:输入接收槽的结点id

  这里准备给7007分配槽,通过cluster nodes查看7007结点id为79bbb30bba66b4997b9360dd09849c67d2d02bb9

  输入:79bbb30bba66b4997b9360dd09849c67d2d02bb9

  第四步:输入源结点id

  这里输入all

  第五步:输入yes开始移动槽到目标结点id

3.添加从节点

  集群创建成功后可以向集群中添加节点,下面是添加一个slave从节点。

  添加7008从结点,将7008作为7007的从结点。

新增从节点命令格式:

     ./redis-trib.rb add-node --slave --master-id masterID newNodIP:port MasterIP:port

    masterID       主节点id,从cluster  nodes信息中查看

    newNodIP:port     新增节点的ip:端口

    MasterIP:port        主节点的ip:端口

  执行如下命令:

    ./redis-trib.rb add-node --slave --master-id 909c349f5f2d4db015101fb7c4e3c227a74ad382 192.168.4.253:7008 192.168.4.253:7007

    79bbb30bba66b4997b9360dd09849c67d2d02bb9  是7007结点的id,可通过cluster nodes查看。

  注意:

    如果原来该结点在集群中的配置信息已经生成cluster-config-file指定的配置文件中(如果cluster-config-file没有指定则默认为nodes.conf),这时可能会报错:

    [ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0

    解决方法:

    删除生成的配置文件nodes.conf,删除后再执行./redis-trib.rb add-node指令。

  查看集群中的结点,刚添加的7008为7007的从节点:

4.删除结点

  删除节点命令格式:

  ./redis-trib.rb del-node nodeIP:port nodeID

  nodeIP:port    待删除节点的ip:端口

  nodeID             待删除节点的id,从cluster node中查看

  删除已经占有hash槽的结点会失败,报错如下:

  [ERR] Node 127.0.0.1:7005 is not empty! Reshard data away and try again.

  需要将该结点占用的hash槽分配出去(参考hash槽重新分配)。

Redis的集群搭建的更多相关文章

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

    Redis本地集群搭建(5版本以上) 2019年11月3日10:05:48 步骤 1.下载安装Redis的安装包 2.复制5份,一共6份Redis的解压安装版,修改每个Redis节点的端口并开启节点 ...

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

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

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

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

  4. Redis Cluster集群搭建与配置

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

  5. Redis Cluster集群搭建与应用

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

  6. Redis笔记-集群搭建

    Redis单机版搭建上一篇已经基本介绍了,下面讨论Redis集群搭建方案和示例. 1.关于Redis常用的集群方案(三种): a.一主多从,如一个Master.两个Slave b.薪火相传,即集群中的 ...

  7. Redis的搭建和Redis的集群搭建

    1.Redis的官网:https://redis.io/      Redis的测试网站:http://try.redis.io/ 2.参考博客:https://www.cnblogs.com/maf ...

  8. 【Redis】Redis cluster集群搭建

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

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

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

  10. Redis Cluster集群搭建<原>

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

随机推荐

  1. 使用RAP2和Mock.JS实现Web API接口的数据模拟和测试

    最近一直在思考如何对Web API的其接口数据进行独立开发的问题,随着Web API的越来越广泛应用,很多开发也要求前端后端分离,例如统一的Web API接口后,Winform团队.Web前端团队.微 ...

  2. 关于:target与定位动画的奇怪现象

    今天在制作首页导航图特效demo时,无意发现一个奇怪的交互现象,故记录 经测试,简化了触发该现象的代码,如下: <!DOCTYPE html> <html> <head& ...

  3. ccpc杭州站 赛后总结

    Ccpc杭州站赛后总结 2017年11月4号五号,我参加了ccpc杭州站的比赛,我的队友是聂少飞和王艳,在4号一点半,举行了比赛开幕式,听着教练代表的发言,听着参赛选手代表的发言,听着志愿者的发言,都 ...

  4. 【算法】shortest distance

    好不容易找到的. #include<iostream> #include<iomanip> #include<cmath> using namespace std; ...

  5. MarkDownPad2基本语法

    一.换行和空格   (1)换行   行尾加两个空格   (2)空格     二.标题   在#后跟个空格再写文字,一个#是一级标题,两个#是二级标题,以此类推,支持六级标题.   示例: # 一级标题 ...

  6. dpdk-18.11开发库编译安装

    简介 dpdk官网 安装 下载 点击下载地址,选择合适的版本下载.这里下载DPDK 18.11.0 (LTS)版本. 编译 将下载的dpdk-18.11.tar.xz上传服务器,解压,这里放在了/op ...

  7. mysql一个非常实用解决sql查询优化的函数explain

    前言: 项目中有个表有几万条数据,然后还要关联其他表,查询条件也有点多,再没有其他查询条件下,默认时间查询条件如果是查一年的数据的话,查询时间那是慢得可怕. 找总监去优化sql,看他用了一个sql函数 ...

  8. Go语言中的make和new

    相同点: make和new都是用来创建分配类型内存的. 不同点: 先看下面的代码 package main import "fmt" func main(){ var i *int ...

  9. TsinsenA1489 抽奖 【期望】

    题目分析: 问题可以转化成将m个球放进n个盒子里,每个盒子的贡献为盒子中球数的平方. 第一问考虑增量. 对于一个原本有$x$个球的盒子,新加一个球的贡献是$2x+1$.期望条件下仍然满足. 第$i$个 ...

  10. [POI2015]KIN[线段树]

    很套路的维护最大和子段 #include <cmath> #include <cstring> #include <cstdio> #include <cst ...