shr*_*umm 5 redis kubernetes google-kubernetes-engine
我在将 Kubernetes 上的 Redis 集群暴露给外部应用程序时遇到问题。使用 Kubernetes 负载均衡器服务,我可以将外部 IP 分配给 Redis,以提供初始连接。问题是,每当客户端收到MOVED命令时,IP 地址都是 Kubernetes 内部 POD IP,集群外部的 Redis 客户端无法访问该 IP 地址。
redis-cli以下是演示的示例会话:
10.150.0.5:7000> set test value
-> Redirected to slot [6918] located at 10.28.1.9:6379
Could not connect to Redis at 10.28.1.9:6379: Operation timed out
Run Code Online (Sandbox Code Playgroud)
你如何解决这个问题?我读过的教程/指南都没有对将集群暴露给外部服务提供太多说明。大多数人关心的是在 K8s 中设置 Redis 集群。
对于仍在寻找答案的人来说,我发现的最佳选择是使用(现已官方)Redis 代理https://github.com/RedisLabs/redis-cluster-proxy。
注意:正如 Yogesh 在他的评论中提到的 - 这是 alpha 代码 - 所以请避免在生产工作负载中这样做,直到代码稳定/你知道你在做什么。
说明 代理基本上“假装”为单个 Redis 实例,因此连接到它的客户端不需要了解集群。
您应该使用最新版本的 Redis,最好是 v6 或更高版本。
| 归档时间: |
|
| 查看次数: |
9143 次 |
| 最近记录: |