Redis Cluster管理
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管理的更多相关文章
- redis cluster管理工具redis-trib.rb详解
redis cluster管理工具redis-trib.rb详解 来源 http://weizijun.cn/2016/01/08/redis%20cluster%E7%AE%A1%E7%90%86% ...
- Redis Cluster部署、管理和测试
背景: Redis 3.0之后支持了Cluster,大大增强了Redis水平扩展的能力.Redis Cluster是Redis官方的集群实现方案,在此之前已经有第三方Redis集群解决方案,如Twen ...
- 全面剖析Redis Cluster原理和应用 (转)
1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生 ...
- Redis中国用户组|唯品会Redis cluster大规模生产实践
嘉宾:陈群 很高兴有机会在Redis中国用户组给大家分享redis cluster的生产实践.目前在唯品会主要负责redis/hbase的运维和开发支持工作,也参与工具开发工作 Outline 一.生 ...
- 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. 目录 ...
- 全面剖析Redis Cluster原理和应用 (good)
redis redis cluster注意的问题 : 1.‘cluster-require-full-coverage’参数的设置.该参数是redis配置文件中cluster模式的一个参数,从字面上基 ...
- redis cluster集群web管理工具 relumin
redis cluster集群web管理工具 relumin 下载地址 https://github.com/be-hase/relumin 只支持redis cluster模式 java环境 tar ...
- Redis Cluster 集群的实现和管理
系统环境 CentOS 7 集群规划 在一台物理机(实际部署应当分散到多个物理机上),创建6个Redis节点,其中3个主节点.3个从节点. 节点表: IP 端口 主从 路径 192.168.1.21 ...
- 安全稳定实现redis cluster自动化迁移
背景 目前redis集群最火的是codis和redis cluster(官方),但官方自带工具并没有支持密码操作.那么需要密码认证使用redis cluster集群的同学要仔细看了哦. 相信大家很多人 ...
随机推荐
- 启动tomcat的Cannot find ./catalina.sh 的问题
从终端进入tomcat的bin目录,然后执行startup.sh Cannot find bin/catalina.sh The file is absent or does not have exe ...
- Spring学习记录(三)
一.AOP的整理总结 aop面向切面编程 横向重复代码,纵向抽取 动态代理 1.通过动态代理可以体现aop思想 2.为什么要哦用动态代理:对目标对象中的方法进行增强 spring aop开发 spri ...
- 循环 -----JavaScript
本文摘要:http://www.liaoxuefeng.com/ JavaScript的循环有两种,一种是for循环,通过初始条件.结束条件和递增条件来循环执行语句块: var x = 0; var ...
- Bootstrap 提示工具(Tooltip)插件的事件
事件 下表列出了提示工具(Tooltip)插件中要用到的事件.这些事件可在函数中当钩子使用. 事件 描述 实例 show.bs.tooltip 当调用 show 实例方法时立即触发该事件. $('#m ...
- nodejs fs路径
引用:https://www.cnblogs.com/guangzhou11/p/7705257.html require()别的js文件的时候,将执行那个js文件. 注意: require()中的路 ...
- lrzsz包中的rz和sz命令
安装包:lrzsz rz命令:将物理机文件复制到虚拟机 sz命令:将虚拟机文件复制到物理机
- Python基础2-Python中文乱码(转)
转自:https://blog.csdn.net/apache0554/article/details/53889253 前言:中文编码问题一直是程序员头疼的问题,而Python2中的字符编码足矣令新 ...
- 作业hashlib题目
'''1.编写用户认证功能,要求如下 1.1.对用户密码加盐处理 1.2.用户名与密文密码存成字典,是以json格式存到文件中的 1.3.要求密用户输入明文密码,但程序中验证的是密文'''import ...
- HDU1301 Jungle Roads
Jungle Roads The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign ai ...
- Android如何添加多张引导页
摘要:项目需要添加多张引导页,所以在网上搜集了一些资料并整理好. Step1 添加一个GuideActivity. 其实这个引导页无非就是一个Activity,里面有一个ViewPager而已.多张图 ...