Redis集群离线滚动升级(业务系统不受影响)

0 阅读3分钟

升级背景

最近质保部扫描到我们业务系统使用的redis集群存在安全漏洞,需要升级到最新版本以修复此问题。

集群信息

升级前

版本: 7.0.12

IP端口角色
10.0.0.876479
10.0.0.876480从(对应主节点-10.0.0.82:6479)
10.0.0.96479
10.0.0.96480从(对应主节点-10.0.0.87:6479)
10.0.0.826479
10.0.0.826480从(对应主节点-10.0.0.9:6479)

image.png

升级后

版本:7.4.1

IP端口角色
10.0.0.876479从(对应主节点-10.0.0.9:6480)
10.0.0.876480
10.0.0.96479从(对应主节点-10.0.0.82:6480)
10.0.0.96480
10.0.0.826479从(对应主节点-10.0.0.87:6480)
10.0.0.826480

image.png

升级方案

采用各个节点逐个替换bin文件来进行滚动升级,步骤描述可简单描述为:

  1. 使用新版本redis源码包编译生成新版本的redis bin文件
  2. 停止三个从节点,使用新版本的redis bin文件来启动这三个从节点
  3. 停止每个主节点之前,首先需要将这个主节点对应的从节点升级为主节点,然后停止,并使用新版本的redis bin文件来启动(三台机器都是如此,主要要一台一台来升级主节点)
  4. 业务验证

升级步骤

  1. 下载并编译生成新版本的redis bin文件

    wget https://github.com/redis/redis/archive/refs/tags/7.4.1.tar.gz
    tar -zxvf redis-7.4.1.tar.gz && cd redis-7.4.1
    # 下面命令会在 /home/lbs/temp/redis 路径下生成一个 bin目录,这就是新版本的bin文件
    make && make install PREFIX=/home/lbs/temp/redis
    
  2. 查看redis集群节点分布情况 /home/lbs/software/redis/bin/redis-cli -c -h localhost -p 6479 -a admin123456 cluster nodes

  3. 使用新的bin文件替换旧的bin文件(三台机器都需要重复此步骤)

    # 将第一步生成的bin文件目录替换之前的bin文件目录
    mv -f /home/lbs/software/redis/bin /home/lbs/software/redis/bin_old
    mkdir -p /home/lbs/software/redis/bin
    cp -rf /home/lbs/temp/redis/bin/* /home/lbs/software/redis/bin
    
  4. 停止从节点,并使用新的bin文件启动从节点(三台机器都需要重复此步骤)

    # 如果`shutdown`命令被禁止,则可以直接kill掉从节点对应的进程即可
    /home/lbs/software/redis/bin/redis-cli -c -h localhost -p 6480 -a admin123456 shutdown
    
    /home/lbs/software/redis/bin/redis-server //home/lbs/software/redis/6480/conf/redis-6480.conf
    
  5. 升级主节点对应的从节点为主节点,并停止它,然后使用使用新的bin文件启动(三台机器都需要重复此步骤)

    # 要注意这里的 ip 和 端口是要停止的主节点对应的从节点的ip和端口
    /home/lbs/software/redis/bin/redis-cli -h xxx -p 6480 admin123456 CLUSTER FAILOVER
    # 如果`shutdown`命令被禁止,则可以直接kill掉从节点对应的进程即可
    /home/lbs/software/redis/bin/redis-cli -c -h localhost -p 6480 -a admin123456 shutdown
    # 使用新bin启动
    /home/lbs/software/redis/bin/redis-server /home/lbs/software/redis/6479/conf/redis-6479.conf
    
  6. 查看redis集群节点分布,和业务系统功能验证

    /home/lbs/software/redis/bin/redis-cli -c -h localhost -p 6480 -a admin123456 cluster nodes