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

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:
背景  

 

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

 

相信大家很多人已经使用了redis cluster,而且也肯定会用到核心应用,你是否考虑过如下问题?

 

  1. redis cluster无密码,被改数据

  2. redis cluster无密码,被flushall (你是否有要哭的冲动哈哈)

  3. redis cluster无密码,数据在光天化日(你对用户不负责)

  4. redis cluster无密码,你要担心各种被黑(日志好苦)

 

 

此时你是否需要密码认证?(我猜你想立刻马上),哈哈问题来了,你在创建集群和管理时是否遇到如下麻烦?

 

  1. redis cluster 官方redis-trib.rb 不支持密码,你要手工用命令一个一个加入集群

  2. 添加减节点不方便

  3. 更重要的是你的分片工具不能用,你要抓狂么?

  4. 管理需要手工

  5. 你要疯掉

 

 

有没有办法解决呢?有,我相信很多公司已经会用认证方式来管理,只是目前我是没搜到相关资料。怎么办?

 

我有办法!

 

  1. 原封不动的封装了redis cluster 集群添加减节点功能,并支持密码认证

  2. 针对对同台机器多master挂掉后集群不可用时,自动快速迁移槽位进行修复,保证程序可用

  3. 自动对新加节点迁移槽位

  4. 自动迁移槽位和数据给指定节点

  5. 自动根据当前结点master进行自动分片

 

 

你是不是已经心动了呢?那么接下来让你更想行动!

 

Redis cluster 集群介绍  

 

  1. 多个Redis间节点间共享数据的程序集

  2. 通过分区(partition)来提供一定程度的可用性

  3. 使用数据分片(sharding)而非一致性哈希(consistency hashing)来实现包含 16384 个哈希槽,也就是可以扩展16384实例

  4. 节点自动发现,从节点自动升级为主节点无需人工操作

  5. slave->master 选举,自动集群容错

  6. 无中心化

  7. gossip 协议来发布广播消息,基于P2P协议,无代理

  8. 水平扩展

  9. 在Cluster推出之前,可用性要靠Sentinel保证。有了集群之后也自动具有了Sentinel的监控和自动Failover能力。

  10. 具体参考:官方文档:http://www.redis.cn/topics/cluster-tutorial.html

  11. 官方使用自带的ruby工具(redis-trib.rb)不支持密码

 

 

集群相关命令介绍

 

1、集群

 

\

 

2、节点

 

20160414033159413.jpg

 

3、键

 

20160414033205510.jpg

 

环境准备 

 

1、程序下载地址:

 

20160414033216497.jpg

 

2、系统依赖环境:

 

20160414033226883.jpg

 

命令使用方法:

 

20160414033237641.jpg

 

20160414033245410.jpg

 

机器环境准备  

 

安装部署:

 

ip地址:

 

20160414033253287.jpg

 

1、下载安装redis在此不做介绍

 

20160414033305300.jpg

 

2、两台机器分别创建7000-7002端口并启动redis

 

ip地址及端口如下:至于主从怎么安排自己定义(但在生产环境建议主从分开部署在不同机器)

 

主要文件配置

 

20160414033315328.jpg

 

迁移工具对集群进行测试  

 

1、在218上启动各个redis后 ,查看当前集群信息

 

20160414033325919.jpg 

2、利用初始化槽位slot,将所有槽位分给此节点

 

20160414033331647.jpg

 

20160414033338985.jpg

 

集群状态

 

查看日志显示如下:说明槽位已经ok,状态正常

 

20160414033348933.jpg

 

2.1 查看集群信息已经分配

 

再次显示集群状态:

 

20160414033356622.jpg

 

2.2 在205 上启动所有节点

 

执行如下命令,我是将不同端口使用不通配置文件,可自行安排

 

20160414033404346.jpg

 

2.3  在218 上添加新节点

 

添加新节点

 

20160414033411353.jpg

 

2.4 查看集群状态

 

20160414033419321.jpg

 

2.5 对新加的节点进行分配slot

 

2.5.1 自动分配slot给205:7000和218:7000 节点

 

#注:根据本机多个master 进行自动分配。

#对CLUSTER SETSLOT <slot> NODE <node_id> 此命令进行的循环封装。会默认把0-16383个槽位均分到当前master节点

#分配方法:16383/当前master节点总数 然后进行节点循环设置槽位

 

20160414033429421.jpg

 

#注意红色ip部分,显示对81槽位进行广播,在205 和218 上都进行广播,将81给node节点2404b44e4937c65c73cbccb778776e392619c776 ,节点是自行判断无需指定

 

2.5.2 查看集群信息:

 

#发现已经平均分配

 

20160414033452987.jpg

 

2.5.3 插入数据测试:

 

#先手动进行插入数据测试集群是否正常

#自动set数据测试脚本如下

#-c 参数为支持集群模式

 

20160414033500905.jpg

 

3、手动迁移数据

 

3.1 先手动进行模拟测试:

 

#为了测试工具的可用性及对比,先进行手动测试,看是否迁移数据成功

 

显示集群信息

 

20160414033507893.jpg

 

3.2 将9842 槽位从172.16.10.218:7000节点导入172.16.10.205:7000节点

 

20160414033520915.jpg

 

3.3 将9842 槽位从172.16.10.218:7000节点迁出172.16.10.205:7000节点

 

20160414033530299.jpg

 

3.4 计算218 节点9842 槽位的key

 

20160414033538503.jpg

 

3.5 列出key值

 

20160414033550953.jpg

20160414033557210.jpg

 

3.6 迁移key

 

20160414033604437.jpg

 

20160414033612686.jpg

 

3.7 获取143511 key的值

 

20160414033619546.jpg

 

3.8 再次获取集群信息:

 

20160414033627887.jpg

 

4、自动迁移

 

4.1 218:7000 迁移槽位及数据到 205:7000

 

#上面手动演示了数据迁移正常流程

#此时是封装了上面手动数据迁移的命令,将8193-8999槽位 迁走

 

集群信息如下

 

20160414033637263.jpg

 

20160414033643445.jpg

20160414033651816.jpg

 

4.2 在查看集群信息

 

20160414033658271.jpg

 

4.3 随机找个key值计算槽位:

 

20160414033706370.jpg

 

4.4 get key值测试:

 

20160414033713622.jpg

 

4.5 再到205:7000 节点读取

 

20160414033720966.jpg

 

4.6 设置密码:

 

20160414033727205.jpg

 

5、添加减节点测试

 

20160414033743890.jpg

 

5.1 添加节点

 

20160414033755864.jpg

 

5.2 添加从节点

 

将205每个端口都作为218对应端口的从(可根据自己进行定义)

#对cluster replicate命令的封装

 

20160414033804385.jpg

 

获取集群信息

 

20160414033811432.jpg

 

5.3 删除从节点

 

20160414033819239.jpg

 

5.4 修改从节点

 

20160414033826635.jpg

 

5.5 提升slave为master

 

将218:7003端口从节点提升为master

 

获取集群信息

 

20160414033842239.jpg

20160414033851311.jpg

 

获取集群状态

 

20160414033858436.jpg

 

测试集群故障  

 

20160414033906978.jpg

 

1、自动分片

 

20160414033913355.jpg

2、关闭其中一个主

 

20160414033921449.jpg

 

3、查看集群状态

 

20160414033947552.jpg

 

作者介绍  庞阔

  • 优朋普乐高级数据库工程师。

  • 做过运维,熟练使用常见web应用,目前主要负责公司MySQL数据库、memcache、redis cluster的管理维护,及数据库平台的研发,擅长利用perl、shell、php编写管理工具。

  • 参与公司各项目数据库设计和架构评审。


本文来自云栖社区合作伙伴"DBAplus",原文发布时间:2016-04-14

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
12天前
|
运维 NoSQL 算法
Java开发-深入理解Redis Cluster的工作原理
综上所述,Redis Cluster通过数据分片、节点发现、主从复制、数据迁移、故障检测和客户端路由等机制,实现了一个分布式的、高可用的Redis解决方案。它允许数据分布在多个节点上,提供了自动故障转移和读写分离的功能,适用于需要大规模、高性能、高可用性的应用场景。
16 0
|
15天前
|
NoSQL Shell Redis
批量迁移redis实例的key
批量迁移redis实例的key
|
19天前
|
NoSQL 安全 网络安全
保护Redis:建立铁壁般的安全防线,守护你的数据财富
保护Redis:建立铁壁般的安全防线,守护你的数据财富
|
19天前
|
NoSQL 安全 网络安全
Redis连接:加速数据访问与保障安全传输的关键
Redis连接:加速数据访问与保障安全传输的关键
|
1月前
|
弹性计算 NoSQL 测试技术
倚天使用|Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
137508 3
|
2月前
|
云安全 运维 安全
带你读《从基础到应用云上安全航行指南》——云安全专家教你如何实现一体化、自动化的云安全审计,运营闭环(1)
带你读《从基础到应用云上安全航行指南》——云安全专家教你如何实现一体化、自动化的云安全审计,运营闭环(1)
138 1
|
2月前
|
云安全 安全 网络安全
带你读《从基础到应用云上安全航行指南》——云安全专家教你如何实现一体化、自动化的云安全审计,运营闭环(2)
带你读《从基础到应用云上安全航行指南》——云安全专家教你如何实现一体化、自动化的云安全审计,运营闭环(2)
107 0
|
2月前
|
云安全 SQL 弹性计算
带你读《从基础到应用云上安全航行指南》——云安全专家教你如何实现一体化、自动化的云安全审计,运营闭环(3)
带你读《从基础到应用云上安全航行指南》——云安全专家教你如何实现一体化、自动化的云安全审计,运营闭环(3)
145 0
|
2月前
|
NoSQL Redis 数据库
Redis的安全网:掌握RDB和AOF的持久化技术【redis第四部分】
Redis的安全网:掌握RDB和AOF的持久化技术【redis第四部分】
119 0
|
3月前
|
存储 NoSQL 网络协议
Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵
Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵
24 0

热门文章

最新文章