• redis扩容手册


    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.终止迁移工具。

  • 相关阅读:
    CR655 题解
    International Master 计划试题乱做 part1
    CR604 题解
    用js做分页,点击下一页时,直接跳到了最后一页——Number()的妙用
    RabbitMQ生产者消费者模型(二)
    线程的状态(二)
    Python服务端测试开发训练营
    RabbitMQ环境搭建(一)
    RabbitMQ死信队列机制(七)
    RabbitMQ限流机制(五)
  • 原文地址:https://www.cnblogs.com/lvoooop/p/15900839.html
Copyright © 2020-2023  润新知