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. 模块化Java简介

    什么是模块化?   模块化是个一般概念,这一概念也适用于软件开发,可以让软件按模块单独开发,各模块通常都用一个标准化的接口来进行通信.实际上,除了规模大小有区别外,面向对象语言中对象之间的关注点分离与 ...

  2. [OS] 可执行文件的装载

    http://www.jianshu.com/p/e1300e7a4c48 1. 虚拟内存 在早期的计算机中,程序是直接运行在物理内存上的,程序在运行时访问的地址就是物理地址.可是,当计算机中同时运行 ...

  3. python_15_os

    import os #1. os.system('dir') #2 cmd_res=os.system('dir')#执行命令不保存结果 print("-------",cmd_r ...

  4. latex目录标题常用宏包说明与示例

    http://blog.sina.com.cn/s/blog_5e16f1770100gyxn.html

  5. display :inline-block 处理点小障碍

    使用inline-block之前先处理点小障碍:inline-block元素会有4px左右的空隙,这个是因为我们写代码时候的换行符所致. 解决办法很简单:在inline-block的父元素中设置样式f ...

  6. Java代码随机生成图片验证码

    package com.rchm.util.images; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2 ...

  7. scrapy使用流程

    安装:通过pip install scrapy即可安装 在ubuntu上安装scrapy之前,需要先安装以下依赖:sudo apt-get install python3-dev build-esse ...

  8. 自动化运维工具——ansible系列命令

    ansible-galaxy 连接 https://galaxy.ansible.com 下载相应的roles,此网站是Ansible爱好者将日常使用较好的playbooks打包上传,其他人可以免费下 ...

  9. DevOps - 配置管理 - Puppet

    uppet总结 一.基础知识 1. Puppet是开源的基于Ruby的系统配置管理工具,依赖于C/S的部署架构.Puppet这样的自动化配置管理工具可以帮助系统管理员更加方便的完成多台服务器的升级软件 ...

  10. HTML5/CSS3 第一章基础

    HTML5/CSS3基础 1. HTML 1.1 什么是HTML HTML是用来制作网页的标记语言 HTML是Hypertext Markup Language的英文缩写,即超文本标记语言 HTML语 ...