目录
1. 主从复制
特点:
- 主从复制是 Redis 最基本的高可用性方案。
- 主节点(Master)负责处理写操作和读操作。
- 从节点(Slave)复制主节点的数据,并可以用于读操作。
- 从节点还可以在主节点不可用时接替主节点的功能。
工作原理:
- 从节点会向主节点发送 SYNC 命令请求进行复制。
- 主节点在收到 SYNC 命令后,开始将快照文件和增量数据发送给从节点。
- 从节点收到数据后,进行初始化复制和增量复制。
- 主从复制提供了数据备份、负载均衡和故障恢复的功能。
配置:
修改master配置文件
vim /etc/redis/6379.conf
bind 0.0.0.0
daemonize yes
logfile /var/log/redis_6379.log
dir /var/lib/redis/6379
appendonly yes
/etc/init.d/redis_6379 restart
bind 0.0.0.0
:表示 Redis 将会监听所有网络接口上的连接,这样可以从任何 IP 地址访问 Redis。daemonize yes
:表示 Redis 以守护进程模式运行。logfile /var/log/redis_6379.log
:设置 Redis 日志文件路径。dir /var/lib/redis/6379
:设置 Redis 数据库文件(RDB 文件)存放路径。appendonly yes
:开启 AOF(Append Only File)持久化模式,确保每个写操作都会被追加到文件末尾,可以防止数据丢失。
修改slave配置文件
vim /etc/redis/6379.conf
bind 0.0.0.0
daemonize yes
logfile /var/log/redis_6379.log
dir /var/lib/redis/6379
replicaof 192.168.1.22 6379
appendonly yes
/etc/init.d/redis_6379 restart
bind 0.0.0.0
:监听所有网络接口。daemonize yes
:以守护进程模式运行。logfile /var/log/redis_6379.log
:日志文件路径。dir /var/lib/redis/6379
:数据文件存储路径。replicaof 192.168.1.22 6379
:指定这个 Redis 实例为从节点,复制主节点192.168.1.22:6379
的数据。appendonly yes
:开启 AOF 持久化。
2. 哨兵
特点:
- 哨兵是 Redis 的自动故障转移和监控系统。
- 一个或多个哨兵监视 Redis 主从复制集群中的主节点和从节点。
- 当主节点不可用时,哨兵会自动选举一个从节点作为新的主节点。
- 新的主节点选举完成后,哨兵会通知其他从节点进行切换。
工作原理:
- 哨兵通过 Sentinel 集群来监控 Redis 实例的健康状态。
- 如果主节点不可用,哨兵会通过投票的方式选举一个从节点成为新的主节点。
- 哨兵会通知其他节点进行切换,并更新配置信息。
- 哨兵还能够对 Redis 集群进行监控和报警。
配置:
在主从复制的基础上配置哨兵模式,在所有节点配置
vim /opt/redis-5.0.7/sentinel.conf
protected-mode no
port 26379
daemonize yes
logfile /var/log/sentinel.log
dir /var/lib/redis/6379
sentinel monitor mymaster 192.168.1.22 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 180000
-
protected-mode no
:关闭保护模式,允许 Sentinel 通过网络连接到 Redis 实例。 -
port 26379
:指定 Sentinel 监听的端口号,通常是26379
。 -
daemonize yes
:以守护进程模式运行 Sentinel,不占用控制台。 -
logfile /var/log/sentinel.log
:指定 Sentinel 的日志文件路径和名称。 -
dir /var/lib/redis/6379
:指定 Sentinel 使用的工作目录,这个目录用于保存 Sentinel 运行时的状态信息。 -
sentinel monitor mymaster 192.168.1.22 6379 2
:- 这个配置用于设置监控的主节点信息。
mymaster
是监控的主节点的名称。192.168.1.22 6379
是主节点的地址和端口。2
表示至少需要2个 Sentinel 同意主节点失效才会触发故障转移。
-
sentinel down-after-milliseconds mymaster 30000
:- 这个配置用于设置 Sentinel 认为主节点失效需要经过的毫秒数。
- 在主节点失效后,需要至少等待 30000 毫秒(30秒)才会开始故障转移。
-
sentinel failover-timeout mymaster 180000
:- 这个配置用于设置 Sentinel 故障转移的超时时间。
- 如果在 180000 毫秒(180秒)内没有成功完成故障转移,那么故障转移会被放弃。
查看哨兵状态
redis-cli -p 26379 info Sentinel