author:JevonWei

版权声明:原创作品


  • Redis 3开始支持了Cluster模式,增强了Redis的水平扩展能力,Redis Cluster的节点分片通过hash slot实现,每个节点上的键都属于16384(0~16383)个slots中的一个,每个节点负责处理一部分slots。 Redis Cluster采用无中心节点方式实现,无需proxy代理,客户端直接与redis集群的每个节点连接,根据同样的hash算法计算出key对应的slot,然后直接在slot对应的Redis上执行命令。

  • Redis集群配置参考:http://blog.frognew.com/2017/03/redis-3.2-cluster-install-and-test.html

集群相关的配置:

cluster-enabled 是否开启集群配置
cluster-config-file 集群节点集群信息配置文件,每个节点都有一个,由redis生成和更新,配置时避免名称冲突
cluster-node-timeout 集群节点互连超时的阀值,单位毫秒
cluster-slave-validity-factor 进行故障转移时,salve会 申请成为master。有时slave会和master失联很久导致数据较旧,这样的slave不应该成为master。这个配置用来判断slave是否和master失联时间过长。

拓扑环境

Redis1	172.16.252.82
Redis2 172.16.252.184
Redis3 172.16.252.67

各节点安装redis

[root@Redis1  ~]# yum -y install redis
[root@Redis1 ~]# iptables -F
[root@Redis1 ~]# setenforce 0

Redis集群架构

Redis1

[root@Redis1 ~]# vim /etc/redis.conf
bind 172.16.252.82
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
[root@Redis1 ~]# systemctl start redis

Redis2

[root@Redis2 ~]# vim /etc/redis.conf
bind 172.16.252.184
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
[root@Redis2 ~]# systemctl start redis

Redis3

[root@Redis3 ~]# vim /etc/redis.conf
bind 172.16.252.67
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
[root@Redis3 ~]# systemctl start redis

Redis1

使用cluster meet添加主节点:
[root@Redis1 ~]# redis-cli -h 172.16.252.82
172.16.252.82:6379> CLUSTER MEET 172.16.252.184 6379
OK
172.16.252.82:6379> CLUSTER MEET 172.16.252.67 6379
OK 查看集群状态
[root@Redis1 ~]# redis-cli -h 172.16.252.82
172.16.252.82:6379> CLUSTER INFO
cluster_state:fail #集群状态
cluster_slots_assigned:0 #分配的slot数
cluster_slots_ok:0 #正确的slot数
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1 #当前的节点数
cluster_size:0
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0

上面显示cluster的状态是fail,是由于没有分配slot,需要把16384分配到3个Node上,编写addslots脚本:

addslots.sh
#!/bin/bash
for ((i=$2;i<=$3;i++))
do
/usr/local/redis/bin/redis-cli -h $1 -p 6379 CLUSTER ADDSLOTS $i
done

分别在Redis1,Redis2,Redis3三个主机上执行:

./addslots.sh 172.16.252.82 0 5461
./addslots.sh 172.16.252.184 5462 10922
./addslots.sh 172.16.252.67 10923 16383

Redis1

查看集群状态
172.16.252.82:6379> CLUSTER INFO
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:3
cluster_size:3
cluster_current_epoch:2
cluster_my_epoch:1
cluster_stats_messages_sent:1102
cluster_stats_messages_received:327 查看集群中的节点信息
172.16.252.82:6379> CLUSTER NODES
73535560317156a7a09cbe755beaefa0d0dd9c83 172.16.252.82:6379 myself,master - 0 0 1 connected 0-5641
52bb8acf89c6b15c4ae702452b855cea93b94729 172.16.252.67:6379 master - 0 1505562458095 2 connected 10922-16383
8f60e94a47da98286795b2fbbcae1b3aea75e123 172.16.252.184:6379 master - 0 1488959933751 0 connected 5642-10922

Redis Cluster管理的更多相关文章

  1. redis cluster管理工具redis-trib.rb详解

    redis cluster管理工具redis-trib.rb详解 来源 http://weizijun.cn/2016/01/08/redis%20cluster%E7%AE%A1%E7%90%86% ...

  2. Redis Cluster部署、管理和测试

    背景: Redis 3.0之后支持了Cluster,大大增强了Redis水平扩展的能力.Redis Cluster是Redis官方的集群实现方案,在此之前已经有第三方Redis集群解决方案,如Twen ...

  3. 全面剖析Redis Cluster原理和应用 (转)

    1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生 ...

  4. Redis中国用户组|唯品会Redis cluster大规模生产实践

    嘉宾:陈群 很高兴有机会在Redis中国用户组给大家分享redis cluster的生产实践.目前在唯品会主要负责redis/hbase的运维和开发支持工作,也参与工具开发工作 Outline 一.生 ...

  5. Redis-3.2.0集群配置(redis cluster)

    版本:redis-3.0.5 redis-3.2.0  redis-3.2.9  redis-4.0.11 参考:http://redis.io/topics/cluster-tutorial. 目录 ...

  6. 全面剖析Redis Cluster原理和应用 (good)

    redis redis cluster注意的问题 : 1.‘cluster-require-full-coverage’参数的设置.该参数是redis配置文件中cluster模式的一个参数,从字面上基 ...

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

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

  8. Redis Cluster 集群的实现和管理

    系统环境 CentOS 7 集群规划 在一台物理机(实际部署应当分散到多个物理机上),创建6个Redis节点,其中3个主节点.3个从节点. 节点表: IP 端口 主从 路径 192.168.1.21 ...

  9. 安全稳定实现redis cluster自动化迁移

    背景 目前redis集群最火的是codis和redis cluster(官方),但官方自带工具并没有支持密码操作.那么需要密码认证使用redis cluster集群的同学要仔细看了哦. 相信大家很多人 ...

随机推荐

  1. 解决 Unable to convert MySQL date/time value to System.DateTime

    C#读取MySql时,如果存在字段类型为date/datetime时的可能会出现以下问题“Unable to convert MySQL date/time value to System.DateT ...

  2. WCF的问题

    使用service调用WCF的时候,有时候会出现 其他信息: HTTP 无法注册 URL 进程不具有此命名空间的访问权限 这样的问题,这时候就需要进行如下尝试: 1,VS的管理权限使用管理员的权限. ...

  3. 【BZOJ1857】传送带(分治经典:三分套三分)

    点此看题面 大致题意: 一个二维平面上有两条传送带\(AB\)和\(CD\),\(AB\)传送带的移动速度为\(P\),\(CD\)传送带的移动速度为\(Q\),步行速度为\(R\),问你从\(A\) ...

  4. CDQ分治入门

    前言 \(CDQ\)分治是一个神奇的算法. 它有着广泛的用途,甚至在某些题目中还能取代\(KD-Tree\).树套树等恶心的数据结构成为正解,而且常数还小得多. 不过它也有一定的缺点,如必须离线操作, ...

  5. Linux常用的200个命令总结分类

    ●目录操作命令(6 个) ls tree pwd mkdir rmdir cd   ●文件操作命令(7 个) touch cp mv rm ln find rename   ●文件查看及处理命令(21 ...

  6. 第八章 熟练dom的几个常用方法

    显示“缩略词语” <abbr> 标签指示简称或缩写,比如 <abbr title="World Wide Web Consortium">W3C</a ...

  7. VC-基础-WebBrowser控件中弹出新网页窗口

    用webbrowser控件浏览网页时,常弹出新的网页窗口,若不做任何控制的话,会在默认浏览器(一般是IE)中打开,这样就在新的窗口打开了,原程序就很难控制了,且存在webbrowser控件和IE的se ...

  8. 转:Python集合(set)类型的操作

    转自:http://blog.csdn.net/business122/article/details/7541486 python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系 ...

  9. Bootstrap 按钮(Button)插件加载状态

    通过按钮(Button)插件,您可以添加进一些交互.比如控制按钮的状态.或者为其它组件(工具栏)创建按钮组. 加载状态 如需向按钮添加加载状态,只需要简单地向 button 元素添加 data-loa ...

  10. 【Java_Spring】java解析多层嵌套json字符串

    java解析多层嵌套json字符串