本文最后更新于 2024年3月26日 下午
介绍
- Redis是一个高性能的key-value 数据库,完全开源,遵守BSD协议。Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供了list、set、zset、hash等数据结构的存储。
- Redis有很多应用场景,其中最常见的是作为缓存。Redis的读写性能优异,逐渐有取代memcached,成为首选服务端缓存的组件此外,Redis还可以用于计数器、消息队列、分布式锁、会话缓存等场景。
- 在JumpServer中,Redis主要用于存储会话信息和任务队列。
- 本文介绍了在Rocky 下载的安装配置哨兵模式。
环境
Redis版本: 6.27
系统:Rocky Linux 8.8 (关闭SElinux,关闭防火墙)
安装
1 2 3 4 5 6
| dnf module install redis:6
systemctl enable --now redis
systemctl status redis
|
基础配置
配置绑定IP(默认绑定lookback,监听6379端口)
配置访问密码(默认无密码)
配置内存满载策略(默认为noeviction 即不做任何淘汰)
1 2 3 4
| maxmemory-policy allkeys-lru
|
配置最大使用内存(默认无限制)
重启生效
1 2 3 4 5 6 7 8
| systemctl restart redis
systemctl status redis
redis-cli --version
|
PS:至此,单机部署已完成。
配置哨兵(sentinel)模式
Redis哨兵模式是Redis在主从复制基础上构建的一套高可用解决方案,它可以自动监控Redis主节点和从节点的状态,当主节点出现故障时,哨兵会自动将一个从节点切换为新的主节点,以保证系统的高可用性。哨兵模式的优势包括:
- 自动故障转移:当主节点出现故障时,哨兵会自动将一个从节点切换为新的主节点,以保证系统的高可用性。
- 自动配置提醒:哨兵会自动监控Redis主节点和从节点的状态,并在发现异常时发送邮件或短信提醒管理员。
- 自动恢复:当Redis主节点恢复正常时,哨兵会自动将其切换回主节点,并将之前选举出来的从节点切换回从节点。
优缺点
优点:
缺点:
- 特别是在主从切换的瞬间存在访问瞬断的情况,等待时间比较长,至少十来秒不可用。
- 哨兵模式只有一个主节点对外提供服务,没法支持很高的并发
- 单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率。
PS:与主从相比,哨兵仅解决了手动切换主从节点问题,至于其他的问题,基本上仍然存在。
节点规划(哨兵要奇数个,建议3节点起步)
主机名 |
角色 |
IP地址 |
Redis_S1 |
Master |
192.168.205.1 |
Redis_S2 |
slaves |
192.168.205.2 |
Redis_S3 |
slaves |
192.168.205.3 |
配置主从复制
Redis_S1 主节点配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| vim /etc/redis.conf
protected-mode no
masterauth pass123
bind * -::*
maxmemory-policy allkeys-lru
maxmemory 512MB
|
Redis_S2 从节点配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| vim /etc/redis.conf
protected-mode no
requirepass pass123
replicaof 192.168.205.1 6379
bind * -::*
maxmemory-policy allkeys-lru
maxmemory 512MB
|
Redis_S3 从节点配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| vim /etc/redis.conf
protected-mode no
requirepass pass123
replicaof 192.168.205.1 6379
bind * -::*
maxmemory-policy allkeys-lru
maxmemory 512MB
|
配置NTP
确保所有节点为同一个NTP服务器。
要确保所有节点时间一致
1 2 3 4 5 6 7 8
| timedatectl
dnf install chrony -y
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| vim /etc/chrony.conf
server ntp.aliyun.com iburst
systemctl enable --now chronyd systemctl restart chronyd systemctl status chronyd
|
所有节点
1 2 3 4
| systemctl restart redis
|
验证主从配置
1 2 3 4 5 6
| redis-cli 127.0.0.1:6379> AUTH password 127.0.0.1:6379> info replication
|
哨兵模式配置
每节点配置启动
1 2 3 4 5 6 7 8
| systemctl enable --now redis-sentinel
systemctl status redis-sentinel
ss -an | grep 26379
|
每节点修改配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| vim /etc/redis-sentinel.conf
sentinel monitor mymaster 192.168.205.1 6379 2
sentinel auth-pass mymaster pass123
sentinel down-after-milliseconds mymaster 10000
sentinel parallel-syncs mymaster 1
requirepass songxwn.com
PS:mymaster为自定义名称
|
所有节点
1 2 3 4 5
| systemctl restart redis-sentinel
|
检查
1 2
| redis-cli -p 26379 info sentinel
|
JumpServer接入配置
v2.28.0 开始支持哨兵模式。
1 2 3 4 5 6 7 8
| vim /opt/jumpserver/config/config.txt
REDIS_SENTINEL_HOSTS=mymaster/哨兵1:26379,哨兵2:26380,哨兵3:26381 REDIS_SENTINEL_PASSWORD=xxxxfrthnjggdrthdf REDIS_PASSWORD=qwertysdftgyhjfggs
|
参考
https://blog.csdn.net/m0_45406092/article/details/116171758
https://computingforgeeks.com/deploy-ha-redis-cluster-sentinel-rocky-alma/
https://ost.51cto.com/posts/11516