2Redis扩容环境准备
2.1资源申请
申请 32 个 redis 分片资源(主备)
申请 8 台 redis-proxy资源
申请 1 台 虚机(安装RMT工具)
2.2环境搭建
安装redis (含sentinel)版本:3.2.1.1
redis配置要与生产保持一致
安装 redis-proxy 版本:3.2.0.1
安装 redis-migrate-tool:5.0.5-3.2.0
下载安装包:upredis-5.0.5-3.2.0-centos7-x86_64.tar.gz
2.3环境验证
检查redis、prxoy、sentinel环境正常,获取相关配置
相关网络打通
2.4RMT配置文件准备
工具安装:
下载 upredis-5.0.5-3.2.0-centos7-x86_64.tar.gz
执行
tar -xvf upredis-5.0.5-3.2.0-centos7-x86_64.tar.gz
cd upredis-5.0.5-3.2.0-centos7-x86_64/urtl
tar -xvf upredis-tool-5.0.5-3.2.0-centos7-x86_64.tar.gz
mv upredis-tool-5.0.5-3.2.0-centos7-x86_64 upredis-tool
cd ../urds
tar -xvf upredis-client-5.0.5-3.2.0-centos7-x86_64.tar.gz
mv upredis-client-5.0.5-3.2.0-centos7-x86_64 upredis
修改配置文件:
进入 upredis-5.0.5-3.2.0-centos7-x86_64 目录
执行 cd urtl/upredis-tool/redis-migrate-tool/
修改 rmt.conf
[source]
type: twemproxy
redis_auth: foobared
hash: fnv1a_64
hash_tag: "{}"
distribution: modula
servers:
- 172.21.52.100:3311:1 server1
- 172.21.52.101:3311:1 server2
… - 172.21.52.121:3311:1 server22
[target]
type: twemproxy
redis_auth: foobared
hash: fnv1a_64
hash_tag: "{}"
distribution: modula
servers:
- 10.200.84.100:3301:1 server1
- 10.200.84.102:3301:1 server2
… - 10.200.84.129:3301:1 server30
[common]
listen: 10.201.34.161:8888
mbuf_size: 1024
threads: 1
说明:
1、黄色以生产实际为准
[source]
redis_auth:填写分片密码
servers:按顺序填写源分片地址和端口,必须是主片(可参考proxy配置中servers项)
[target]
redis_auth:填写分片密码
servers:按顺序填写目的端分片地址和端口,必须是主片(可参考proxy配置中servers项)
[common]
listen:RMT工具本机IP
2、servers: 顺序必须与proxy的一致
3数据迁移
3.1配置文件检查
再次确认RMT工具主机 RMT配置文件rmt.conf 配置项;
3.2确认RDB文件备份
确认每天是否备份了RDB文件,如有,则选取最近备份RDB文件,以备回退使用;否则执行RDB文件备份。
3.3Redis迁移扩容
1.登录RMT工具环境
进入 upredis-5.0.5-3.2.0-centos7-x86_64/urtl/upredis-tool/redis-migrate-tool 目录
执行./redis-migrate-tool -c rmt.conf -o log_migrate -d
(Ctrl+C将中断此应用)
1.查看日志,如果出现:
All nodes' rdb file parsed finished for this write thread(0)
表示rmt转移数据完成;否则需要清空新集群,重新进行数据迁移。
每个分片(一个RDB文件)会依次展现传输比例
Rdb file for node[172.21.134.150:3311] parsed finished, use: 14 s.
2.也可以使用redis-cli连接到redis-migrate-tool(默认8888),并执行info命令,查看当前rmt运行状态。
进入 upredis-5.0.5-3.2.0-centos7-x86_64/urds/upredis 目录
执行 ./redis-cli -h 127.0.0.1 -p 8888
标黄的为RMT工具的IP
127.0.0.1:8888> info
3.4迁移检查
1.登录RMT工具环境
2.检查新旧集群数据是否一致(找到redis-migrate-tool所在目录):
进入 upredis-5.0.5-3.2.0-centos7-x86_64/urtl/upredis-tool/redis-migrate-tool 目录
./redis-migrate-tool -c rmt.conf -o log_check -C "redis_check [key的数量]"
key的数量 为dbsize或者抽查,取值由运维同事以实际情况决定
3.如果有不一致数据
依次执行(找到redis-full-check所在目录)
进入 upredis-5.0.5-3.2.0-centos7-x86_64/urtl/upredis-tool/redis-full-check 目录
./redis-full-check -s 172.21.52.115:3311 -p foobared -t 172.21.52.115:22201 --targetdbtype=4 -a foobared --comparetimes=1
其中172.21.52.115:3311为源分片地址
172.21.52.115:22201 为目的端proxy地址
查看工具生成文件result.db中体现的不一样的值,示例如下:
sqlite3 result.db
查看不一样的值
sqlite> .tables
FINAL_RESULT field key
sqlite> select count(*) from key;
2
sqlite> select * from key;
1|brli1|hash|value|0|2|10000
2||hash|lack_target|0|2|0
4.分析不一致原因,若可通过重试解决,则重做3.3小节,否则暂停迁移。
4应用切换(先切灰度环境,无异常再切应用环境)
4.1修改应用配置
1.备份所有srv层配置upjas-conf/mktCfg中的配置文件redis_proxy.properties
2.修改所有srv层配置upjas-conf/mktCfg中的配置文件redis_proxy.properties
upproxyPwd=******
proxy1=19.3.32.68:52104(配置代理)
proxy2=19.3.32.67:52104
proxy3=19.3.40.67:52104
proxy4=19.3.40.66:52104
pwdServerIp=144.7.32.31(密码服务器)
pwdServerPort=20010
pwdServerIpBak=144.7.34.31
pwdServerPortBak=20010
pwdDbName=mkt_redis
pwdUserName=mkt_rdsap
3.备份所有ext层配置upjas-conf\extCfg中的配置文件redis_proxy.properties
4.修改所有ext层配置upjas-conf\extCfg中的配置文件redis_proxy.properties
upproxyPwd=wallet
proxy1=19.3.32.68:52104(配置代理)
proxy2=19.3.32.67:52104
proxy3=19.3.40.67:52104
proxy4=19.3.40.66:52104
pwdServerIp=144.7.32.31(密码服务器)
pwdServerPort=20010
pwdServerIpBak=144.7.34.31
pwdServerPortBak=20010
pwdDbName=mkt_redis
pwdUserName=mkt_rdsap
4.2应用重启
进入srv层,ext层主机
进入目录:cd ~/upjas-3.0.1.Final/bin
执行: sh upjas.sh start
查看应用是否启动成功
查看启动日志及应用日志有无ERROR日志。
启动成功应有如下日志:
upjas 3.0.1.Final (WildFly Core 2.2.0.upjas.Final) started in 17570ms - Started 729 of 979 services (418 services are lazy, passive or on-demand)
4.3关闭RMT迁移工具
登录RMT工具环境
进入工具目录
执行redis-cli -h 127.0.0.1 -p 8888
127.0.0.1 为本机IP
执行shutdown
如果上述指令没有效果或者被拒绝,请通过'kill -15 [PID]'来停止'redis-migrate-tool'服务
如果上述指令没有效果或者被拒绝,请通过'kill -9 [PID]'来停止'redis-migrate-tool'服务
5回退
5.1 回退条件
数据检查一致且应用已经切到新redis集群,发现新redis数据异常
5.2 回退步骤
1.对调目的端与源端redis配置,执行缓存回迁。
2.回退到老集群后,将备份配置还原并重启应用,检查启动日志是否有异常。
3.终止迁移工具。