目录
- Redis安装
- 哨兵模式如何配置
- 哨兵模式下Redis升级
Redis安装
1、下载源码解压
wget https://download.redis.io/releases/redis-7.4.6.tar.gz
tar -zxvf redis-7.4.6.tar.gz
2、安装编译环境
yum groupinstall "Development Tools"
3、进入src目录,指定安装路径
make PREFIX=/usr/local/redis install
4、创建systemctl服务配置文件
[Unit]
Description=Redis
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /etc/redis/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
5、刷新配置
systemctl daemon-reload
6、开机启动
systemctl enable redis
yum groupinstall “Development Tools”
yum:Red Hat系列发行版的包管理工具,用于自动从配置的软件仓库中搜索、下载、安装、更新和删除软件包,并自动处理依赖关系。 groupinstall:yum的一个子命令,意思是“组安装”。它不是安装单个软件包,而是安装一个预先定义好的一组相关的软件包。 Development Tools:这是软件包组的名称。这个组包含了进行软件编译和开发所需的一系列核心工具。
Development Tools 软件包组通常包含以下核心组件(具体可能因发行版版本略有差异): gcc:GNU C编译器,用于编译C语言程序。 g++/gcc-c++:GNU C++编译器,用于编译C++程序。 make:自动化构建工具,用于根据Makefile文件来指挥编译过程。 autoconf, automake:用于生成可移植的configure脚本,让软件能适应不同的Unix-like系统。 binutils:一系列二进制工具集,如链接器ld、汇编器as等。 kernel-devel:内核开发头文件,用于编译内核模块。 cmake, ncurses-devel, zlib-devel, openssl-devel 等大量常用的开发库和头文件。
哨兵模式配置
1、主节点配置
- redis配置
# 表示redis允许所有地址连接。默认127.0.0.1,仅允许本地连接。
bind 0.0.0.0
# 修改redis监听端口
port 6379
# 允许redis后台运行
daemonize yes
# 设置为no,允许外部网络访问
protected-mode no
# 防止Sentinel彼此不识别(强烈建议)
replica-announce-ip 192.168.200.113
replica-announce-port 6379
- sentinel配置
# 修改Sentinel监听端口
port 26379
# 允许Sentinel后台运行
daemonize yes
# Sentinel监听redis主节点。2表示多少个Sentinel认为redis主节点失效时,才算真正失效
sentinel monitor mymaster 192.168.200.113 6379 2
# 配置失效时间,如果哨兵在10秒内没有收到主节点的有效响应,就将其标记为主观下线
sentinel down-after-milliseconds mymaster 10000
# 若sentinel在该配置值内未能完成master/slave自动切换,则认为本次failover失败。
sentinel failover-timeout mymaster 60000
# 在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步。
sentinel parallel-syncs mymaster 1
2、从节点配置
- redis配置
# 表示redis允许所有地址连接。默认127.0.0.1,仅允许本地连接。
bind 0.0.0.0
# 修改redis监听端口
port 6379
# 允许redis后台运行
daemonize yes
# 设置为no,允许外部网络访问
protected-mode no
# 防止Sentinel彼此不识别(强烈建议)
replica-announce-ip 192.168.200.114
replica-announce-port 6379
# 配置从节点复制主节点(从节点)
replicaof 192.168.200.113 6379
replica-read-only yes
- sentinel配置
# 修改Sentinel监听端口
port 26379
# 允许Sentinel后台运行
daemonize yes
# Sentinel监听redis主节点。2表示多少个Sentinel认为redis主节点失效时,才算真正失效
sentinel monitor mymaster 192.168.200.113 6379 2
# 配置失效时间,如果哨兵在10秒内没有收到主节点的有效响应,就将其标记为主观下线
sentinel down-after-milliseconds mymaster 10000
# 若sentinel在该配置值内未能完成master/slave自动切换,则认为本次failover失败。
sentinel failover-timeout mymaster 60000
# 在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步。
sentinel parallel-syncs mymaster 1
3、启动redis服务及哨兵
redis-server /etc/redis/redis.conf
redis-sentinel /etc/redis/sentinel.conf
Redis升级
1、升级前准备
-
确认当前环境信息
哨兵数量(至少3个)
主从关系(info replication)
哨兵配置(sentinel masters)
-
备份数据
执行bgsave手动触发RDB持久化
确认AOF和RDB文件已备份至安全位置
-
准备升级包
下载目标版本Redis安装文件
准备回退用的旧版本安装文件
2、升级方案
-
方案原则
逐个升级从节点,最后升级主节点
通过哨兵自动完成主从切换,尽量减少业务中断
保持多数哨兵节点存活以维持监控
-
详细步骤
阶段1:升级所有从节点
# 1. 选择第一个从节点,停止服务 redis-cli -p 6379 shutdown save # 2. 替换安装文件 cp redis-server /usr/local/redis/redis-server # 3. 启动从节点 redis-server /etc/redis/redis.conf # 4. 验证从节点状态,确认角色为slave,且与主节点同步正常 redis-cli -p 6379 info replication # 5. 重复升级其他从节点
阶段2:升级主节点
# 1. 通过哨兵触发主节点故障转移 redis-cli -p 26379 sentinel failover mymaster # 2. 等待哨兵选举出新主节点 redis-cli -p 26379 sentinel masters # 3. 确认原主节点已降级为从节点 redis-cli -p 6379 info replication # 4. 停止原主节点(现为从节点),进行升级 redis-cli -p 6379 shutdown save # 5. 替换安装文件 cp redis-server /usr/local/redis/redis-server # 6. 启动从节点 redis-server /etc/redis/redis.conf # 7. 验证新主从拓扑 redis-cli -p 26379 sentinel masters
阶段3:升级哨兵进程
# 1. 逐个升级哨兵节点(每次一个) redis-cli -p <sentinel-port> shutdown # 2. 替换哨兵安装文件 cp redis-sentinel /usr/local/redis/redis-sentinel # 3. 启动哨兵 redis-sentinel /etc/redis/sentinel.conf # 4. 验证哨兵状态 redis-cli -p 26379 sentinel masters阶段4:升级后验证
# 哨兵状态验证 redis-cli -p 26379 sentinel sentinels mymaster redis-cli -p 26379 sentinel get-master-addr-by-name mymaster # 故障转移测试 redis-cli -p 26379 sentinel failover mymaster