redis集群升级
# redis集群版本升级
# 1.描述
Redis5.0.14集群被集团检测出了漏洞《Redis 拒绝服务漏洞(CVE-2025-21605)》
漏洞描述:Redis是美国Redis公司的一套开源的使用ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值(Key-Value)存储数据库,并提供多种语言的API。 Redis本存在安全漏洞,由于默认情况下,Redis配置不会限制对普通客户端的输出缓冲区,导致未认证客户端通过反复发送 NOAUTH 响应耗尽内存,触发拒绝服务攻击。
加固建议:1.将 Redis 升级到 6.2.18、7.2.8、7.4.3 及以上版本,下载地址:https://redis.io/download/ 2.若漏洞的检测结果中存在漏洞修复版本,则将漏洞检测结果中的软件包升级到对应漏洞修复版本及以上。 参照安全补丁功能中该漏洞的修复命令进行升级,或者参照以下修复命令进行升级: CentOS/RedHat/Oracle Linux/Amazon Linux/Kylin/EulerOS/Anolis OS/Alma Linux : sudo yum update -y 需要升级的软件包名(参考检测结果) SUSE : sudo zypper update -y 需要升级的软件包名(参考检测结果) Ubuntu/Debian : sudo apt-get update && sudo apt-get install --only-upgrade -y 需要升级的软件包名(参考检测结果)
和研发沟通后了解到不需要保留数据,所以采取 redis 集群停机升级,更简单更快
# 2.下载redis-6.2.18版本
https://github.com/redis/redis/archive/refs/tags/6.2.18.tar.gz
# 3.安装redis-6.2.18版本
tar xzvf redis-6.2.18.tar.gz -C /workspace/redis
集群所有节点安装redis
cd /app/redis-6.2.18
make
# 安装并指定安装路径
cd src
make install PREFIX=/workspace/redis/bin6218
2
3
4
5
6
# 4.停机升级
# 查看当前集群信息,先停止所有从节点,再停止所有主节点
# 通过master和slave区分
cluster nodes
# redis集群停止当前进程
# 先关闭从节点
/workspace/redis/bin/redis-cli -a 'xxxx' -h xxxx -p 7001 SHUTDOWN
/workspace/redis/bin/redis-cli -a 'xxxx' -h xxxx -p 7002 SHUTDOWN
/workspace/redis/bin/redis-cli -a 'xxxx' -h xxxx -p 7002 SHUTDOWN
# 关闭主节点:- 从节点关闭后再关闭主节点以防切主
/workspace/redis/bin/redis-cli -a 'xxxx' -h xxxx -p 7000 SHUTDOWN
/workspace/redis/bin/redis-cli -a 'xxxx' -h xxxx -p 7000 SHUTDOWN
/workspace/redis/bin/redis-cli -a 'xxxx' -h xxxx -p 7001 SHUTDOWN
# 查看从节点是否全部关闭
ps -ef | grep redis
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 5.启动redis
替换掉原redis启动的redis-sever,继续使用之前的配置文件启动
redis /workspace/redis/7000/redis-server /workspace/redis/7000/conf/redis.conf
redis /workspace/redis/7001/redis-server /workspace/redis/7001/conf/redis.conf
redis /workspace/redis/7002/redis-server /workspace/redis/7002/conf/redis.conf
2
3
# 6.集群启用
/workspace/redis/bin/redis-cli --cluster create ... --cluster-replicas 1 -a 'xxxx'
# 7.测试连通性
/workspace/redis/bin/redis-cli -h xxxx -p xxxx -a 'xxxx' -c
/workspace/redis/bin/redis-cli -h xxxx -p xxxx -a 'xxxx' -c
/workspace/redis/bin/redis-cli -h xxxx -p xxxx -a 'xxxx' -c
/workspace/redis/bin/redis-cli -h xxxx -p xxxx -a 'xxxx' -c
/workspace/redis/bin/redis-cli -h xxxx -p xxxx -a 'xxxx' -c
/workspace/redis/bin/redis-cli -h xxxx -p xxxx -a 'xxxx' -c
2
3
4
5
6
7