
背景 目前redis集群最火的是codis和redis cluster(官方),但官方自带工具并没有支持密码操作。那么需要密码认证使用redis cluster集群的同学要仔细看了哦。 相信大家很多人已经使用了redis cluster,而且也肯定会用到核心应用,你是否考虑过如下问题? redis cluster无密码,被改数据 redis cluster无密码,被flushall (你是否有要哭的冲动哈哈) redis cluster无密码,数据在光天化日(你对用户不负责) redis cluster无密码,你要担心各种被黑(日志好苦)
此时你是否需要密码认证?(我猜你想立刻马上),哈哈问题来了,你在创建集群和管理时是否遇到如下麻烦? redis cluster 官方redis-trib.rb 不支持密码,你要手工用命令一个一个加入集群 添加减节点不方便 更重要的是你的分片工具不能用,你要抓狂么? 管理需要手工 你要疯掉
有没有办法解决呢?有,我相信很多公司已经会用认证方式来管理,只是目前我是没搜到相关资料。怎么办? 我有办法! 原封不动的封装了redis cluster 集群添加减节点功能,并支持密码认证 针对对同台机器多master挂掉后集群不可用时,自动快速迁移槽位进行修复,保证程序可用 自动对新加节点迁移槽位 自动迁移槽位和数据给指定节点 自动根据当前结点master进行自动分片
你是不是已经心动了呢?那么接下来让你更想行动! Redis cluster 集群介绍 多个Redis间节点间共享数据的程序集 通过分区(partition)来提供一定程度的可用性 使用数据分片(sharding)而非一致性哈希(consistency hashing)来实现包含 16384 个哈希槽,也就是可以扩展16384实例 节点自动发现,从节点自动升级为主节点无需人工操作 slave->master 选举,自动集群容错 无中心化 gossip 协议来发布广播消息,基于P2P协议,无代理 水平扩展 在Cluster推出之前,可用性要靠Sentinel保证。有了集群之后也自动具有了Sentinel的监控和自动Failover能力。 具体参考:官方文档:http://www.redis.cn/topics/cluster-tutorial.html 官方使用自带的ruby工具(redis-trib.rb)不支持密码
集群相关命令介绍 1、集群 
2、节点 
3、键 
环境准备 
2、系统依赖环境: 
命令使用方法: 

机器环境准备 安装部署: ip地址: 
1、下载安装redis在此不做介绍 
2、两台机器分别创建7000-7002端口并启动redis ip地址及端口如下:至于主从怎么安排自己定义(但在生产环境建议主从分开部署在不同机器) 主要文件配置 
迁移工具对集群进行测试 1、在218上启动各个redis后 ,查看当前集群信息 
2、利用初始化槽位slot,将所有槽位分给此节点 

集群状态 查看日志显示如下:说明槽位已经ok,状态正常 
2.1 查看集群信息已经分配 再次显示集群状态: 
2.2 在205 上启动所有节点 执行如下命令,我是将不同端口使用不通配置文件,可自行安排 
2.3 在218 上添加新节点 添加新节点 
2.4 查看集群状态 
2.5 对新加的节点进行分配slot 2.5.1 自动分配slot给205:7000和218:7000 节点 #注:根据本机多个master 进行自动分配。 #对CLUSTER SETSLOT #分配方法:16383/当前master节点总数 然后进行节点循环设置槽位 
#注意红色ip部分,显示对81槽位进行广播,在205 和218 上都进行广播,将81给node节点2404b44e4937c65c73cbccb778776e392619c776 ,节点是自行判断无需指定 2.5.2 查看集群信息: #发现已经平均分配 
2.5.3 插入数据测试: #先手动进行插入数据测试集群是否正常 #自动set数据测试脚本如下 #-c 参数为支持集群模式 
3、手动迁移数据 3.1 先手动进行模拟测试: #为了测试工具的可用性及对比,先进行手动测试,看是否迁移数据成功 显示集群信息 
3.2 将9842 槽位从172.16.10.218:7000节点导入172.16.10.205:7000节点 
3.3 将9842 槽位从172.16.10.218:7000节点迁出172.16.10.205:7000节点 
3.4 计算218 节点9842 槽位的key 
3.5 列出key值 

3.6 迁移key 

3.7 获取143511 key的值 
3.8 再次获取集群信息: 
4、自动迁移 4.1 218:7000 迁移槽位及数据到 205:7000 #上面手动演示了数据迁移正常流程 #此时是封装了上面手动数据迁移的命令,将8193-8999槽位 迁走 集群信息如下 


4.2 在查看集群信息 
4.3 随机找个key值计算槽位: 
4.4 get key值测试: 
4.5 再到205:7000 节点读取 
4.6 设置密码: 
5、添加减节点测试 
5.1 添加节点 
5.2 添加从节点 将205每个端口都作为218对应端口的从(可根据自己进行定义) #对cluster replicate命令的封装 
获取集群信息 
5.3 删除从节点 
5.4 修改从节点 
5.5 提升slave为master 将218:7003端口从节点提升为master 获取集群信息 

获取集群状态 
测试集群故障 
1、自动分片 
2、关闭其中一个主 
3、查看集群状态 
作者介绍 庞阔 全球敏捷运维峰会【北京站】 
北京站蓄势待发:2016年6月11日,DBA+社群联合运维帮、Linux中国开启全球敏捷运维峰会第二站:北京站! 技术大咖云集:峰会力邀来自百度、新浪、58到家、小米、搜狐畅游、浙江移动、新炬网络、日志易等互联网与传统企业的资深大咖,汇聚500+行业精英! 互联网 VS 传统的碰撞:共同探讨互联网前沿技术应用心得、传统企业技术转型的实践与困境、全程拒绝无营养的广告,绝对干货,精彩不容错过! 峰会官网:www.gdevops.com 北京站限时优惠 原价 门票:169元 VIP票:599元 (含VIP坐席、午餐) 优惠价 (5月12日前) 门票:免费 VIP票:199元 (优惠码:dbavip) ↓↓ 购票通道 ↓↓ 长按识别二维码
|