192.168.0.202:16379 192.168.0.202:16380 192.168.0.202:16381
参数说明: 
1> redis-trib.rb脚本默认安装在$REDIS_SRC_HOME/src目录下,在安装redis服务时,已将其拷贝到/usr/bin目录下 
2> create:创建集群参数 
3> –replicas 1:每个master有1个slave节点 
根据节点顺序确定master与slave节点,前边的优先选择做为master节点,后边优先选择做为slave节点。由脚本自动分配,但master和slave绝对不会分配在同一台机器上。
检查Redis集群状态
redis-trib.rb check 192.168.0.201:6379
 
从上图可以看出,192.168.0.201:6379、192.168.0.201:6380、192.168.0.201:6381被选为了master节点。192.168.0.202:16379被选为192.168.0.201:6381的slave节点,192.168.0.202:16380被选为192.168.0.201:6379的slave节点,192.168.0.202:16381被选为192.168.0.201:6380的slave节点(看repliates 后面的字符串)。
验证Redis集群
# 连接到201的6379节点 shell> redis-cli -c -h 192.168.0.201 -p 6379 192.168.0.201:6379> set foo abc -> Redirected to slot [12182] located at 192.168.0.201:6380 OK 192.168.0.201:6380>
set foo abc本想在201的6379节点保存foo这个key,但201的6379节点并没有存,而是将请求转发给了201的6380节点存储。而且客户端自动切换到了6380节点。这是神马情况?这其实是redis集群数据存储的机制,通过crc16算法计算key的hash值,然后对16384取模,得到一个0~16384以内的slot值来决定由哪个节点存储,而每一个节点在创建集群的时候,都会均匀的分配相应的slot数量。
其中 -c Enable cluster mode
2,192.168.0.202:16381被选为192.168.0.201:6380的slave节点,现在把6380 master节点kill掉,看redis会不会将16381选主为master节点,并将刚刚保存的foo这个key有没有复制到16381节点中。
结果:当master节点挂掉之后,slave节点自动选举成了master节点,并且之前保存在master节点的数据foo也成功复制给了slave节点。
管理:添加节点、删除节点、slot分配
添加节点
添加一对(一主一从)新的节点加入到集群当中:192.168.0.201:6382(Master)和192.168.0.201:6383(Slave)
添加master节点
redis-trib.rb add-node 192.168.0.201: master - 0 1468324422110 0 connected 06023f8283389ad5580c782797f49a5996c108b3 192.168.0.201:6379 myself,master - 0 0 1 connected 0-5460 ...
sloat范围显示在节点状态(connected)后边,从上可以看出,新加入的节点201:6382是没有分配slot的,所以为空。而为201:6379节点分配了0-5460范围的slot。 
为新节点分配slot的原理是从其它主节点中负责的slot中,各移出一部份 
slot给新的节点。下面为201:6382分配slot:
shell> redis-trib.rb reshard 192.168.0.201:6382
注意上图中红框部份: 
1> 1000 : 为新的master节点分配1000个slot 
2> 901cade1bc2703ef2bb4ff49466b38762346755d:接收1000个slot的master节点ID 
3> 选择从哪些主节点移动slot到新加入的主节点中: 
* all:表示从集群中所有master节点中各移动一部份slot,凑够1000个slot为止 
* 选择输入一个或多个master的node_id来从中移动,最后输入done完成选择 
4> yes:执行slot移动操作,输入no表示终止操作。 
添加slave节点
shell> redis-trib.rb add-node --slave --master-id 901cade1bc2703ef2bb4ff49466b38762346755d 192.168.0.201:6383 192.168.0.201:6379
参数说明: 
1> –slave:表示添加从节点 
2> –master-id:master节点ID,这里用上边新添加的主节点ID(201:6382) 
3> 192.168.0.201:6383:新slave节点的IP和端口 
4> 192.168.0.201:6379:集群中任意旧节点,只要能连上就可以。这里以201:6379为例
cluster nodes命令说明
459dbcccc1e5be021f19efde794b9e84474c0c02 192.168.0.202:16379 slave b6814c717080de33907e6f769e1fd8dc4fe53c38 0 1468333841661 7 connected
1> 459dbcccc1e5be021f19efde794b9e84474c0c02 :节点ID 
2> 192.168.0.202:16379:节点IP和端口 
3> slave:节点类型,master、slave或myself(master/slave) 
4> b6814c717080de33907e6f769e1fd8dc4fe53c38 :master节点ID,如果自己是master节点,这一列的值为0 
5> 0:集群最近一次向节点发送 PING 命令之后, 过去了多长时间还没接到回复。 
6> 1468333841661:节点最近一次返回 PONG 回复的时间 
7> 7:节点的配置纪元 
8> connected:节点网络连接状态 
9> 如果是主节点,节点状态后边显示slot分配的范围
  • Redis Cluster采用无中心架构,每个节点都保存数据和整个集群的节点状态
  • 每个节点都和集群中的其它节点保持连接
  • 每个Master Node都负责分管一定范围的slot,当这些slot对应的Master和Slave都挂掉时,这部份slot对应的数据将不可用
  • 16384个slot必须被全部分配,否则集群将不可用。通过cluster info查看集群状态可以得知。
参考:

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

  1. 25.redis集群搭建笔记

    ###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码   1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,k ...

  2. Redis 集群搭建详细指南

    先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...

  3. 二、redis集群搭建

    redis集群搭建 redis3.0后支持集群.集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器.搭建伪分布式,需要6个redis实例.搭建集群的步骤: 一.安装单机版redis 第一步 ...

  4. redis集群搭建及注意事项

    上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出 ...

  5. Linux Redis集群搭建与集群客户端实现(Python)

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

  6. [转载] Redis集群搭建最佳实践

    转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问 ...

  7. Linux Redis集群搭建与集群客户端实现

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

  8. Redis集群搭建-韩国庆

    认真一步一步搭建下来,就可以成功.... Redis-cluster集群架构讲解 redis集群专业名词称之为Redis-cluster,redis集群是从3.0版本以后才有的概念,也就是说在3.0之 ...

  9. redis集群搭建及设置账户(转)

    Redis集群搭建以及为集群设置密码 介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. ...

  10. Docker Swarm redis 集群搭建

    Docker Swarm redis 集群搭建 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docke ...

随机推荐

  1. 美团HD(1)-设置导航栏主题

    自定义一个UINavigationController DJNavigationController.h #import <UIKit/UIKit.h> @interface DJNavi ...

  2. EBS中加载FORM使用的JavaBean的JAR包

    1.SSH端,APP用户登录: 2.输入env,确定环境变量名称FORMS_WEB_CONFIG_FILE: 3.定位模板文件:     $AD_TOP/bin/adtmplreport.sh con ...

  3. UI第十九节——UICollectionView

    UICollectionView其实就是UITableView的升级版,在布局方面比UITableView更出色.下面,先看代码吧 #import "RootViewController.h ...

  4. Redis 3.0 与 3.2 配置文件变化

    一.Redis3.0 与 3.2 配置文件对比 1. clone redis git clone https://github.com/antirez/redis.git 2. checkout分支 ...

  5. 如何灵活运用Linux 进程资源监控和进程限制

    导读 每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工 ...

  6. setprecision **fixed

    #include <iostream> #include <iomanip> using namespace std; int main( void ) { const dou ...

  7. 常用js代码集

    <img src="{:url('publics/verify')}" onclick="this.src='{:url('publics/verify')}'&q ...

  8. Cosmos —— Big Data at Microsoft

    1, 1,cosmos stores. Cosmos stores data as streams – a file-like structure Streams are split apart in ...

  9. CAD的输出成高清jpg图片

    打印名称选择JPG或者PNG 然后图纸尺寸选择大的 尺寸不够大就自己设置下 创建新图纸——设置下长宽——然后保存下名字,然后图纸尺寸选择你设置过的这个输出就好了 然后窗口下就好了

  10. linux du和df

    df.du和fdisk这三个常用命令:df用于检查文件系统磁盘占用情况,du检查磁盘空间占用情况,而fdisk用于磁盘分区. du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,d ...