Redis Sentinel用法
1 Redis Sentinel
1.1 哨兵的作用
- 1. 监控:监控主从是否正常
- 2. 通知:出现问题时,可以通知相关人员
- 3. 故障迁移:自动主从切换
- 4. 统一的配置管理:连接者询问sentinel取得主从的地址
1.2 搭建redis主从
- 主redis配置文件
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | [root@redis01 conf] # cat /usr/local/redis/conf/redis.conf bind 0.0 . 0.0 protected - mode no port 6379 tcp - backlog 511 timeout 0 tcp - keepalive 300 daemonize yes supervised no pidfile "/var/run/redis_6379.pid" requirepass "abc" masterauth "abc" loglevel notice logfile "" databases 16 save 900 1 save 300 10 save 60 10000 stop - writes - on - bgsave - error yes rdbcompression yes rdbchecksum yes dbfilename "dump.rdb" dir "/usr/local/redis/conf" slave - serve - stale - data yes slave - read - only yes repl - diskless - sync no repl - diskless - sync - delay 5 repl - disable - tcp - nodelay no slave - priority 100 appendonly no appendfilename "appendonly.aof" appendfsync everysec no - appendfsync - on - rewrite no auto - aof - rewrite - percentage 100 auto - aof - rewrite - min - size 64mb aof - load - truncated yes lua - time - limit 5000 slowlog - log - slower - than 10000 slowlog - max - len 128 latency - monitor - threshold 0 notify - keyspace - events "" hash - max - ziplist - entries 512 hash - max - ziplist - value 64 list - max - ziplist - size - 2 list - compress - depth 0 set - max - intset - entries 512 zset - max - ziplist - entries 128 zset - max - ziplist - value 64 hll - sparse - max - bytes 3000 activerehashing yes client - output - buffer - limit normal 0 0 0 client - output - buffer - limit slave 256mb 64mb 60 client - output - buffer - limit pubsub 32mb 8mb 60 hz 10 aof - rewrite - incremental - fsync yes # Generated by CONFIG REWRITE |
- 主sentinel配置文件
1 2 3 4 5 6 7 8 9 | [root@redis01 conf] # cat sentinel.conf sentinel monitor mymaster 10.0 . 0.61 6379 2 sentinel down - after - milliseconds mymaster 15000 sentinel failover - timeout mymaster 80000 sentinel auth - pass mymaster abc bind 10.0 . 0.61 protected - mode yes daemonize yes logfile "/usr/local/redis/conf/sentinel.log" |
1.3 从节点配置
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | [root@redis02 conf] # cat redis.conf bind 0.0 . 0.0 protected - mode no port 6379 tcp - backlog 511 timeout 0 tcp - keepalive 300 cluster - enabled no cluster - config - file "nodes_6379.conf" cluster - node - timeout 15000 daemonize yes supervised no pidfile "/var/run/redis_6379.pid" masterauth "abc" requirepass "abc" loglevel notice logfile "" databases 16 save 900 1 save 300 10 save 60 10000 stop - writes - on - bgsave - error yes rdbcompression yes rdbchecksum yes dbfilename "dump.rdb" dir "/usr/local/redis/conf" slave - serve - stale - data yes slave - read - only yes repl - diskless - sync no repl - diskless - sync - delay 5 repl - disable - tcp - nodelay no slave - priority 100 appendonly no appendfilename "appendonly.aof" appendfsync everysec no - appendfsync - on - rewrite no auto - aof - rewrite - percentage 100 auto - aof - rewrite - min - size 64mb aof - load - truncated yes lua - time - limit 5000 slowlog - log - slower - than 10000 slowlog - max - len 128 latency - monitor - threshold 0 notify - keyspace - events "" hash - max - ziplist - entries 512 hash - max - ziplist - value 64 list - max - ziplist - size - 2 list - compress - depth 0 set - max - intset - entries 512 zset - max - ziplist - entries 128 zset - max - ziplist - value 64 hll - sparse - max - bytes 3000 activerehashing yes client - output - buffer - limit normal 0 0 0 client - output - buffer - limit slave 256mb 64mb 60 client - output - buffer - limit pubsub 32mb 8mb 60 hz 10 aof - rewrite - incremental - fsync yes |
- sentinel配置
1 2 3 4 5 6 7 8 9 | [root@redis02 conf] # cat sentinel.conf sentinel monitor mymaster 10.0 . 0.62 6379 2 #监控主节点 sentinel down - after - milliseconds mymaster 15000 sentinel failover - timeout mymaster 80000 sentinel auth - pass mymaster abc #密码 bind 10.0 . 0.62 daemonize yes #后台 protected - mode yes #使用安全 logfile "/usr/local/redis/conf/sentinel.log" |
- 切换日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 5104 :X 03 Feb 22 : 49 : 01.306 # +try-failover master mymaster 10.0.0.61 6379 5104 :X 03 Feb 22 : 49 : 01.308 # +vote-for-leader de08855c7e8920b21ae90cb716280882dd519558 4 5104 :X 03 Feb 22 : 49 : 01.313 # 18e37e8ca155d107964e8c9cf64f2d15e4729826 voted for de08855c7e8920b21ae90cb716280882dd519558 4 5104 :X 03 Feb 22 : 49 : 01.364 # +elected-leader master mymaster 10.0.0.61 6379 5104 :X 03 Feb 22 : 49 : 01.364 # +failover-state-select-slave master mymaster 10.0.0.61 6379 5104 :X 03 Feb 22 : 49 : 01.431 # +selected-slave slave 10.0.0.62:6379 10.0.0.62 6379 @ mymaster 10.0.0.61 6379 5104 :X 03 Feb 22 : 49 : 01.431 * + failover - state - send - slaveof - noone slave 10.0 . 0.62 : 6379 10.0 . 0.62 6379 @ mymaster 10.0 . 0.61 6379 5104 :X 03 Feb 22 : 49 : 01.508 * + failover - state - wait - promotion slave 10.0 . 0.62 : 6379 10.0 . 0.62 6379 @ mymaster 10.0 . 0.61 6379 5104 :X 03 Feb 22 : 49 : 01.512 # +promoted-slave slave 10.0.0.62:6379 10.0.0.62 6379 @ mymaster 10.0.0.61 6379 5104 :X 03 Feb 22 : 49 : 01.512 # +failover-state-reconf-slaves master mymaster 10.0.0.61 6379 5104 :X 03 Feb 22 : 49 : 01.599 # +failover-end master mymaster 10.0.0.61 6379 5104 :X 03 Feb 22 : 49 : 01.599 # +switch-master mymaster 10.0.0.61 6379 10.0.0.62 6379 5104 :X 03 Feb 22 : 49 : 01.599 * + slave slave 10.0 . 0.61 : 6379 10.0 . 0.61 6379 @ mymaster 10.0 . 0.62 6379 5104 :X 03 Feb 22 : 49 : 16.661 # +sdown slave 10.0.0.61:6379 10.0.0.61 6379 @ mymaster 10.0.0.62 6379 5104 :signal - handler ( 1517669370 ) Received SIGINT scheduling shutdown... 5104 :X 03 Feb 22 : 49 : 30.193 # User requested shutdown... 5104 :X 03 Feb 22 : 49 : 30.193 # Sentinel is now ready to exit, bye bye... |
- 重置主从
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | [root@redis01 conf] # redis-cli -a abc 127.0 . 0.1 : 6379 > INFO replication # Replication role:slave master_host: 10.0 . 0.62 master_port: 6379 master_link_status:up master_last_io_seconds_ago: 1 master_sync_in_progress: 0 slave_repl_offset: 47568 slave_priority: 100 slave_read_only: 1 connected_slaves: 0 master_repl_offset: 0 repl_backlog_active: 0 repl_backlog_size: 1048576 repl_backlog_first_byte_offset: 0 repl_backlog_histlen: 0 127.0 . 0.1 : 6379 > slaveof no one OK [root@redis02 conf] # redis-cli -a abc 127.0 . 0.1 : 6379 > SLAVEOF 10.0 . 0.61 6379 OK |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 使用 Dify + LLM 构建精确任务处理应用