Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵
Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵
Redis Cluster 集群相关配置,使用集群方式的你必须重视和知晓。别嘴上原理说的头头是道,而集群有哪些配置?如何配置让集群快到飞起,实现真正的高可用却一头雾水,通过下面这些配置详解也让你对集群原理更加深刻。
cluster-enabled
普通的 Redis 实例是不能成为集群的一员,想要将该节点加入 Redis Cluster,需要设置 cluster-enabled yes
。
cluster-config-file
cluster-config-file nodes-6379.conf
指定集群中的每个节点文件。
集群中的每个节点都有一个配置文件,这个文件并不是让程序员编辑的,是我自己创建和更新的,每个节点都要使用不同的配置文件,一定要确保同一个集群中的不同节点使用的是不同的文件。
cluster-node-timeout
设置集群节点不可用的最大超时时间,节点失效检测。集群中当一个节点向另一个节点发送PING命令,但是目标节点未在给定的时限内返回PING命令的回复时,那么发送命令的节点会将目标节点标记为PFAIL(possible failuer,可能已失效);
如果master 节点超过这个时间还是无响应,则用它的从节点将启动故障迁移,升级成主节点。
注意,任何一个节点在这个时间之内如果还是没有连上大部分的主节点,则此节点将停止接收任何请求。
默认配置是 cluster-node-timeout 15000
,单位是毫秒数。
cluster-port
该端口是集群总线监听 TCP 连接的端口,默认配置为 cluster-port 0
,我就会把端口绑定为客户端命令端口 + 10000(客户端端口默认 6379,所以绑定为 16379 作为集群总线端口)。每个 Redis Cluster 节点都需要开放两个端口:
- 一个用于服务于客户端的 TCP 端口,比如 6379.
- 另一个称为集群总线端口,节点使用集群总线进行故障监测、配置更新、故障转移等。客户端不要与集群总线端口通信,另外请确保在防火墙打开这两个端口,否则 Redis 集群接地那将无法通信。
cluster-replica-validity-factor
该配置用于决定当 Redis Cluster 集群中,一个 master 宕机后,如何选择一个 slave 节点完成故障转移自动恢复(failover)。如果设置为 0 ,则不管 slave 与 master 之间断开多久,都认为自己有资格成为 master。
下面提供了两种方式来评估 slave 的数据是否太旧。
- 如果有多个 slave 可以 failover,他们之间会通过交换信息选出拥有拥有最大复制 offset 的 slave 节点。
- 每个 slave 节点计算上次与 master 节点交互的时间,这个交互包含最后一次
ping
操作、master 节点传输过来的写指令、上次可 master 断开的时间等。如果上次交互的时间过去很久,那么这个节点就不会发起 failover。
针对第二点,交互时间可以通过配置定义,如果 slave 与 master 上次交互的时间大于 (node-timeout * cluster-replica-validity-factor) + repl-ping-replica-period
,该 slave 就不会发生 failover。
例如,``node-timeout = 30秒,
cluster-replica-validity-factor=10,
repl-ping-slave-period=10`秒, 表示slave节点与master节点上次交互时间已经过去了310秒,那么slave节点就不会做failover。
调大 cluster-replica-validity-factor
则允许存储过旧数据的 slave 节点提升为 master,调小的话可能会导致没有 slave 节点可以升为 master 节点。
考虑高可用,建议大家设置为 cluster-replica-validity-factor 0
。
cluster-migration-barrier
没有 slave 节点的 master 节点称为孤儿 master节点,这个配置就是用于防止出现裸奔的 master。
当某个 master 的 slave 节点宕机后,集群会从其他 master 中选出一个富余的 slave 节点迁移过来,确保每个 master 节点至少有一个 slave 节点,防止当孤立 master 节点宕机时,没有slave节点可以升为 master 导致集群不可用。
默认配置为 cluster-migration-barrier 1
,是一个迁移临界值。
含义是:迁移后 master 节点至少还有 1 个 slave 节点才能做迁移操作。比如 master A 节点有2个以上 slave 节点 ,当集群出现孤儿 master B 节点时,A 节点富余的 slave 节点可以迁移到 master B 节点上。
生产环境建议维持默认值,最大可能保证高可用,设置为非常大的值或者配置 cluster-allow-replica-migration no
禁用自动迁移功能。
cluster-allow-replica-migration
默认配置为 yes,表示允许自动迁移。
cluster-require-full-coverage
默认配置是 yes
,表示为当 redis cluster 发现至少还有一个 哈希槽没有被分配时禁止查询操作。
这就会导致集群部分宕机,整个集群就不可用了,当所有哈希槽都有分配,集群会自动变为可用状态。
如果你希望 cluster 的子集依然可用,配置成 cluster-require-full-coverage yes
。
cluster-replica-no-failover
默认配置为 no
,当配置成 yes
,在master 宕机时,slave 不会做故障转移升为 master。
这个配置在多数据中心的情况下会很有用,你可能希望某个数据中心永远不要升级为 master 节点,否则 master 节点就漂移到其他数据中心了。
cluster-allow-reads-when-down
默认是 no
,表示当集群因主节点数量达不到最小值或者哈希槽没有完全分配而被标记为失效时,节点将停止所有客户端请求。
设置成 yes
,则允许集群失效的情况下依然可从节点中读取数据,保证了高可用。
cluster-allow-pubsubshard-when-down
配置成 yes
,表示当集群因主节点数量达不到最小值或者哈希槽没有完全分配而被标记为失效时,pub/sub 依然可以正常运行。
cluster-link-sendbuf-limit
设置每个集群总线连接的发送字节缓冲区的内存使用限制,超过限制缓冲区将被清空(主要为了防止发送缓冲区发送给慢速连接时无限延长时间的问题)。
默认禁用,建议最小设置1gb,这样默认情况下集群连接缓冲区可以容纳至少一pubsub消息(client-query-buffer-limit 默认是1gb);

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
一文读懂云渲染“串流”全链路时延及优化策略
这是一个让云游戏完美起步的时代。 云游戏作为产业内近年来炙手可热的话题,具有“云端运行、超高清、零延时、即点即玩”等众多特性。 随着 5G 时代的到来,以及中心云能力下沉至边缘云,高带宽、低延迟、高性能这些特性与云游戏紧密结合,突破实时云渲染的带宽和延迟问题,也赋予了云游戏更大的想象力。 就在今年6月,央视推出了首个大型沉浸式数字交互空间《三星堆奇幻之旅》,让观众摆脱本地硬件限制,仅通过一个H5页面带观众破屏穿越,“身临其境”探索考古现场。 沉浸式体验背后, “云渲染”和“串流”是绕不开的核心技术。 01 实现云游戏的关键技术:「串流」 “云渲染” 将大型沉浸式体验需要的3D渲染应用部署在云端,使得观众看到和交互的画面,都是云端实时渲染计算出来的。 “串流” 是实现云游戏的关键方式,通过数据中心将游戏渲染场景转换成视频流,再通过传输网络推送到用户终端显示。 同时,用户在实时显示的图像上,通过键盘鼠标、触控等方式传输指令到云端,实时控制3D渲染应用做出相应的响应。 整个过程延迟通常小于100ms。 云渲染「串流」技术通常应用在云上考古、云旅游、虚拟数字人直播、智慧城市数字孪生应用和云...
- 下一篇
免费的可视化 Web 报表工具,积木报表 — JimuReport v1.5.4 版本发布
项目介绍 一款免费的低代码可视化报表,像搭建积木一样在线拖拽设计!低代码开发必备,功能涵盖,数据报表、打印设计、图表报表、大屏设计等! 秉承 “简单、易用、专业” 的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题,完全免费的! 当前版本:v1.5.4 | 2022-10-25 集成依赖 <dependency> <groupId>org.jeecgframework.jimureport</groupId> <artifactId>jimureport-spring-boot-starter</artifactId> <version>1.5.4</version> </dependency> mogodb/redis 支持包(按需添加) <dependency> <groupId>org.jeecgframework.jimureport</groupId> <artifactId>jimur...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19