redis集群配置

0,整体概述

     整体来说就是:
     1,安装redis
     2,配置多个redis实例
     3,安装 ruby和rubygems
     4,启动redis实例,使用ruby脚本命令将redis实例创建为集群
 

1,安装

     1,安装redis 3.x 下载到手redis-3.2.5.tar.gz之后,放到linux里进行解压make,具体参照网络。
     2,安装ruby和rubygems,参照命令(具体可以参照网络)
     tar xzvf rubygems-2.2.3.tgz
     cd rubygems-2.2.3
     ruby setup.rb --no-rdoc --no-ri
     wget https://rubygems.org/downloads/redis-3.2.1.gem
      gem install redis-3.2.1.gem --local --no-rdoc --no-ri
 

2,建立多个redis实例 配置

     修改redis配置文件,redis.conf
     bind 127.0.0.1--绑定只有这个ip能够访问到 配置好集群后也可以修改
     cluster-enabled yes---开启集群配置
     cluster-config-file nodes-6388.conf--这个配置文件不是要我们去配的,而是Redis运行时保存配置的文件,所以我们也不可以修改这个文件。
     cluster-node-timeout 15000--结点超时多久则认为它宕机了。
     cluster-require-full-coverage no--默认是yes,只要有结点宕机导致16384个槽没全被覆盖,整个集群就全部停止服务,所以一定要改为no
     daemonize yes--后台运行
     logfile “./redis.log”--日志文件,自己定义即可
     port 6379 端口
     pidfile /var/run/redis_6379.pid
     dbfilename dump6379.rdb rdb持久化文件
     #requirepass fdsafdsa 先注释掉 等配置好集群后,再放开即可
  #masterauth fdasfdsa 这个是集群需要密码的时候也放开,和requirepass一样就行(还有个地方是/usr/lib/ruby/gems/1.8/gems/redis-3.3.0/lib/redis/client.rb 这里也有个配置密码的 修改下)
 
     在安装的redis目录同一层中创建多个redis目录至少六个。然后拷贝六份配置文件到这些文件夹里并修改配置文件的端口等其他信息即可。
 
 

 

3,建立集群

     启动所有redis实例
     redis-server 指定启动的redis.conf的路径。启动完成后,有以下进程

 
     使用redis-trb.rb脚本命令将redis实例创建成集群。
     创建集群命令: 默认前3个实例作为Master,后3个作为Slave
     redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 ...
     这样就创建完成了,使用命令来查看集群的情况(可以查看集群的主从关系,主集群的slots分布情况等等信息)
     redis-cli -c -h 127.0.0.1 -p 6379 cluster nodes(如果后期有密码了,那么闲登录进去然后执行 cluster nodes即可)

 
     设置keyvalue测试一下。
     随便链接到一个redis实例里,
     redis-cli -c -p 6379
     然后,set 几个keyvalue,可以看到有重定向的log出来,get的时候也会有,说明集群创建成功了,数据开始分布到各个master节点去了。
 

4,添加节点到集群

     1,按照上面说的,再创建两个redis实例,然后启动起来。6387 6388(上面的截图是我添加过了的 ,下面就只说下步骤即可)
     2,使用ruby脚本命令将其中一个添加进去,默认为master
     redis-trib.rb add-node 127.0.0.1:6387 127.0.0.1:6379
     使用查看集群情况命令
     redis-cli -c -h 127.0.0.1 -p 6379 cluster nodes
     可以看到刚才添加的已经进去了并且是master
     再添加另一个进去 并且作为这个的slave
     redis-trib.rb add-node --slave --master-id 907b572063b0a6fd3dc9d1cca2c2daef3adaf043 127.0.0.1:6388 127.0.0.1:6379
     中间的id为master的id即可。
     3,添加进去之后,下面进行slots迁移,直接使用ruby脚本命令
     redis-trib.rb reshard 127.0.0.1:6379
     就自动的把没有slots的master给平均从其他master里拿出来,放进去了。
     4,然后就可以进去到新添加的master,查看下keys *了。

5,故障转移

     在高可用性方面,Redis可算是能够”Auto”一把了!Redis Cluster重用了Sentinel的代码逻辑,不需要单独启动一个Sentinel集群,Redis Cluster本身就能自动进行Master选举和Failover切换。
     kill 掉集群中的一个master,然后查看集群的情况,会发现这个master下面的slave会有一个出来当成了master了,保证了集群的可用性。
   这里如果这个上来的master没有slave了,redis集群会自动从其他master拿过来一些slave过来。
  如果同时把master和它的slave kill掉,那么数据也就没有了。但是可以通过持久化出来的快照或者aof文件恢复。

6 redis自己的集群命令

     上面的集群配置都是使用的ruby脚本来创建的,也可以自己用redis的命令来创建集群
     类似这样的: redis-cli -c -h 192.168.1.100 -p 7000 cluster meet 192.168.1.100 7001
   挨个的meet,这样就都加入到集群里了。
   然后就是配置主从关系
      redis-cli -c -h 192.168.1.100 -p 7003 cluster replicate 33c0bd93d7c7403ef0239ff01eb79bfa15d2a32c
     将一个节点配置成另一个的从节点
  然后就是指派slots,总共16384个,按需分配到每个master即可。
      redis-cli -c -h 192.168.1.100 -p 7000 cluster addslots {0..5000}
      redis-cli -c -h 192.168.1.100 -p 7001 cluster addslots {5001..10000}
      redis-cli -c -h 192.168.1.100 -p 7001 cluster addslots {10001..16383}
 
     这样也创建了一个redis集群。
 
 

redis学习五 集群配置的更多相关文章

  1. java:redis(redis安装配置,redis的伪集群配置)

    1.redis安装配置: .安装gcc : yum install gcc-c++ .使用FTP工具FileZilla上传redis安装包到linux根目录下(当前步骤可以替换为:在root目录下执行 ...

  2. redis学习六 集群的原理(转载)

    转载自 http://shift-alt-ctrl.iteye.com/blog/2285470 一.Redis Cluster主要特性和设计     集群目标 1)高性能和线性扩展,最大可以支撑到1 ...

  3. redis:哨兵集群配置

    最少配置1主2从3哨兵 一.引言 上一篇文章我们详细的讲解了Redis的主从集群模式,其实这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改,但是有一 ...

  4. 基于redis的cas集群配置(转)

    1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...

  5. 基于redis的cas集群配置

    1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...

  6. CentOS7 配置 Redis Sentinel主从集群配置

    Redis Sentinel主从集群 环境.准备 slave配置 sentinel配置 测试 C#连接Redis Sentinel 1.环境.准备 单实例3台CentOS7服务器,IP地址.: 192 ...

  7. Redis单机和集群配置(版本在5.0后)

    摘抄并用于自己后查 单机版的配置: 1. 下载redis压缩包,然后解压缩文件(tar xzf): 2. 进入解压后的redis文件目录,编译redis源文件(make,没有c环境要gcc): 3. ...

  8. Redis 学习之集群

    该文使用centos6.5 64位  redis3.2.8 一.  redis-cluster架构图 集群通信:所有redis节点之间通过PING-PONG机制彼此互联,内部使用二进制鞋子优化传输速度 ...

  9. redis 负载均衡 集群配置

    redis 官网 http://redis.io/ 中文网站 http://redis.cn/ 谷歌代码的redis项目 https://code.google.com/p/redis/ http:/ ...

随机推荐

  1. Java -- JDBC 数据库连接池

    1. 原理代码示例 public class JdbcPool implements DataSource { private static LinkedList<Connection> ...

  2. Codeforces Round #367 (Div. 2) A , B , C

    A. Beru-taxi time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  3. SaaS架构经验总结

    2B Saas系统最近几年都很火.很多创业公司都在尝试创建企业级别的应用 cRM, HR,销售, Desk Saas系统.很多Saas创业公司也拿了大额风投.毕竟Saas相对传统软件的优势非常明显. ...

  4. 一款简易的CSS3扁平化风格联系表单

    CSS3扁平化风格联系表单是一款CSS3简易联系表单非常清新,整体外观不是那么华丽,但是表单扁平化的风格让人看了非常舒服,同时利用了HTML5元素的特性,表单的验证功能变得也相当简单.经测试效果相当不 ...

  5. php如何查看扩展是否开启

    php如何查看扩展是否开启 一.总结 一句话总结:php -m 1.查看php已安装扩展命令 ? php -m 2.phpinfo();这是最常用的方法,但那么多扩展一时还真不太好找.? 3.exte ...

  6. Unity3D-UGUI图集打包与动态使用(TexturePacker)

    参考地址: http://blog.csdn.net/cjsen/article/details/52487706 今天做项目大佬看我在做图集,就跟我说可以用工具打包图集,也就是TexturePack ...

  7. python中常用的文件和目录操作(一)

    常用的文件操作 1. 打开文件 open,它是一个内置函数,可以直接调用 语法:file object = open(file_name, [access_mode]),这里我们会创建一个file对象 ...

  8. LightOJ - 1104 概率

    题意:每年n天,求最少几个人使这些人中最少两个人生日相同的概率大于0.5 题解:直接递推,假设有k个人,所有情况为n^k,没有相同的情况为n*(n-1)*...*(n-k+1),可以算出1e5以内不超 ...

  9. OSX 10.11 El Caption USB安装盘制作方法

    OSX 10.11 El Caption USB安装盘制作方法 官方在线下载地址:https://developer.apple.com/osx/download/ 1. 用磁盘工具将USB盘抹掉或者 ...

  10. Django 基础 ORM系统

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...