【发布时间】:2026-01-04 20:40:01
【问题描述】:
我想使用 Redis 6 的新 TLS 功能设置一个基本的 3 节点 Redis Sentinel 设置。不幸的是,Redis 6 Sentinel 似乎不够聪明,无法向客户端发送 TLS。
有没有人知道这样做的方法,或者如果不可能,是否有任何关于将来添加对此支持的在线提及?拥有这些不错的 TLS 功能却无法将它们与 Redis 自己的工具一起使用,这似乎是一种耻辱。
我知道过去人们使用 Stunnel 来执行此操作。将 TLS 支持添加到 Redis 后,我只有在无需第三方添加即可完成此操作时才感兴趣。
我的设置:
3 个 Redis 服务器(6.0-rc,上周最后一次提取),运行 TLS,测试证书 as specified in the Redis docs - 一个主服务器和 2 个副本
3 个 Sentinel(6.0-rc,也是上周最后一次撤消),没有在他们的端口上运行 TLS(我愿意,但这是次要问题)
我的尝试:
将 Sentinel 指向 Redis TLS 端口 - 这会导致 Redis 日志中出现大量关于接收到的不正确 TLS 版本的 TLS 错误,因为 Sentinel 没有与 Redis 使用 TLS。由于失败,Sentinel 认为 master 宕机了。
在 Sentinel 配置中的主 IP 前添加“https://” - 这会导致 Sentinel 拒绝运行,说它找不到主主机名。
将 TLS 选项添加到 Sentinel - 这会导致 Sentinel 尝试在其端口上与 TLS 通信,而不是与客户端通信,这无济于事。我找不到任何关于让 Sentinel 向客户说 TLS 的选项。
将 Sentinel 指向 Redis 非 TLS 端口(不理想,我宁愿只打开 TLS 端口) - 这会导致 Sentinel 向简单 Python 报告主服务器的错误(非 TLS)端口我正在测试的客户端(它实际上只是试图从 Sentinel 获取主信息)-出于显而易见的原因,我希望客户端通过 TLS 与 Redis 对话
将“replica-announce-port”指令添加到 Redis 时,Sentinel 仍指向非 TLS 端口 - 这有两种方式失败:主端口仍被错误地报告为非 TLS 端口(似乎是因为主服务器不是副本,因此该指令不适用),并且 Sentinel 现在认为副本都已关闭(因为报告了 TLS 端口,副本是自动发现的,并且它无法与上的副本通话TLS 端口)。
我知道this * question (Redis Sentinel and TLS) - 它很旧并且询问 Redis 4,所以它不一样。
【问题讨论】:
标签: ssl redis tls1.2 redis-sentinel redis-server