查看“Redis Sentinel”的源代码
←
Redis Sentinel
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
Redis Sentinel 在不使用 Redis Cluster 时为 Redis 提供高可用性。 [[文件:Redis Sentinel.png|无|缩略图|629x629像素]] 简单来说,Redis Sentinel 负责监控 master 和 slave,并在 master 出问题的时候从 slave 中选举一个出来作为 master 对外提供访问 === 注意 === 因为涉及到选举机制,所以 Redis Sentinel 的实例至少要有3个 === 配置文件 === ==== master.conf ==== <syntaxhighlight lang="console"> bind 127.0.0.1 port 6379 requirepass vn4sj5kbxdaG masterauth "vn4sj5kbxdaG" </syntaxhighlight>master 配置文件中也加入 masterauth 是因为在故障转移之后,原 master 会变成 slave,再连接新 master 的时候需要提供密码,否则会无法进行数据同步 ==== slave.conf ==== <syntaxhighlight lang="console"> bind 127.0.0.1 port 6380 replicaof 127.0.0.1 6379 requirepass vn4sj5kbxdaG masterauth "vn4sj5kbxdaG" </syntaxhighlight> ==== sentinel0.conf ==== <syntaxhighlight lang="console"> port 5000 sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 60000 sentinel parallel-syncs mymaster 1 sentinel auth-pass mymaster vn4sj5kbxdaG </syntaxhighlight> ==== sentinel1.conf ==== <syntaxhighlight lang="console"> port 5001 sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 60000 sentinel parallel-syncs mymaster 1 sentinel auth-pass mymaster vn4sj5kbxdaG </syntaxhighlight> ==== sentinel2.conf ==== <syntaxhighlight lang="console"> port 5002 sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 60000 sentinel parallel-syncs mymaster 1 sentinel auth-pass mymaster vn4sj5kbxdaG </syntaxhighlight> ==== sentinel 配置项说明 ==== ===== sentinel monitor mymaster 127.0.0.1 6379 2 ===== 给 master 一个命名,2 是 quorum,是多个 Sentinel 中需要对 master 不可达(unreachable)状态达成一致意见的 Sentinel 个数 ===== sentinel down-after-milliseconds mymaster 5000 ===== The down-after-milliseconds value is 5000 milliseconds, that is 5 seconds,so masters will be detected as failing as soon as we don't receive any reply from our pings within this amount of time. ===== sentinel failover-timeout mymaster 60000 ===== <code>failover-timeout</code> 用于指定当 Sentinel 主观下线一个 Redis master 时,Sentinel 需要等待多长时间来执行故障转移(failover)操作。这个时间间隔称为“故障转移超时时间”。 默认情况下,<code>failover-timeout</code> 的值是 30 秒,也就是说,如果 Sentinel 检测到 master 宕机,会等待 30 秒后执行故障转移。 在这个时间内,Sentinel 会继续监控 master 的状态,如果它重新启动并且 Sentinel 认为它可以正常工作,那么 Sentinel 将不会执行故障转移。 可以通过修改 <code>failover-timeout</code> 配置项的值来改变故障转移的超时时间。 例如,将 <code>failover-timeout</code> 的值设置为 60 秒,可以使 Sentinel 在 master 宕机后等待更长的时间再执行故障转移,这可以降低错误的故障转移率。 ===== sentinel parallel-syncs mymaster 1 ===== <code>parallel-syncs</code> 用于控制执行故障转移操作时,新的 master 同步数据的并发度。 在 Redis Sentinel 中,当一个 slave 被提升为新的 master 后,其他的 slave 需要同步新的 master 上的数据。 <code>parallel-syncs</code> 配置项用于控制同步操作的并发度,默认值是 1,表示同步操作是串行执行的,也就是一个一个地同步每个 slave。 可以将 <code>parallel-syncs</code> 的值设置为一个大于 1 的数字,以提高同步操作的并发度,从而加速同步操作。 但是需要注意的是,并发度越高,需要的网络带宽和系统资源也就越多,可能会对系统造成负担,因此需要根据具体的应用场景和硬件配置来选择合适的并发度。 需要注意的是,在 Redis Sentinel 3.2 版本之前,<code>parallel-syncs</code> 配置项的值对 slave 同步操作的并发度控制并不是很精确,而是会受到一些其他因素的影响。 在 Redis Sentinel 3.2 版本及之后的版本中,<code>parallel-syncs</code> 配置项的值才真正控制 slave 同步操作的并发度。 ===== sentinel auth-pass mymaster vn4sj5kbxdaG ===== 配置 sentinel 访问 master 的密码 === 启动 === ==== master ==== <syntaxhighlight lang="powershell"> F:\下载目录\Redis-x64-5.0.14.1>.\redis-server.exe .\config\sentinel\master.conf </syntaxhighlight> ==== slave ==== <syntaxhighlight lang="powershell"> F:\下载目录\Redis-x64-5.0.14.1>.\redis-server.exe .\config\sentinel\slave.conf </syntaxhighlight> ==== sentinel0 ==== <syntaxhighlight lang="powershell"> F:\下载目录\Redis-x64-5.0.14.1>.\redis-server.exe .\config\sentinel\sentinel0.conf --sentinel </syntaxhighlight> ==== sentinel1 ==== <syntaxhighlight lang="powershell"> F:\下载目录\Redis-x64-5.0.14.1>.\redis-server.exe .\config\sentinel\sentinel1.conf --sentinel </syntaxhighlight> ==== sentinel2 ==== <syntaxhighlight lang="powershell"> F:\下载目录\Redis-x64-5.0.14.1>.\redis-server.exe .\config\sentinel\sentinel2.conf --sentinel </syntaxhighlight> === 思考 === ==== sentinel 各个节点的配置文件中并没有配置其他 sentinel 节点,它们是怎么找到彼此的呢? ==== 应该也是通过 master === 故障转移测试 === Ctrl + C 停止监听 6379 的 master, 观察 sentinel 控制台输出发现监听 6380 的原 slave 配提升成了 master, 原 master 被降成了 slave,重启监听 6379 的原 master,观察控制台输出发现它以 standalone 模式启动后开始作为 slave 连接 master === 参考 === https://redis.io/docs/management/sentinel/ https://www.youtube.com/watch?v=GEg7s3i6Jak https://github.com/marcel-dempers/docker-development-youtube-series/tree/7ef03d3865cd25dec9c105202cb80f75a7b2448d/storage/redis/clustering
返回至
Redis Sentinel
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
Spring Boot 2 零基础入门
Spring Cloud
Spring Boot
设计模式之禅
VUE
Vuex
Maven
算法
技能树
Wireshark
IntelliJ IDEA
ElasticSearch
VirtualBox
软考
正则表达式
程序员精讲
软件设计师精讲
初级程序员 历年真题
C
SQL
Java
FFmpeg
Redis
Kafka
MySQL
Spring
Docker
JMeter
Apache
Linux
Windows
Git
ZooKeeper
设计模式
Python
MyBatis
软件
数学
PHP
IntelliJ IDEA
CS基础知识
网络
项目
未分类
MediaWiki
镜像
问题
健身
国债
英语
烹饪
常见术语
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息