【发布时间】:2018-11-14 14:34:08
【问题描述】:
我正在学习 StackExchange.Redis 和 Kubernetes,所以我制作了一个简单的 .net 核心应用程序,它从部署在 kubernetes 上的 Redis master+2slave 读取键/值。 (所以,一切,Redis 和我的应用程序,都在容器中运行)
要连接到 redis,我使用文档中建议的语法:
ConnectionMultiplexer.Connect("server1:6379,server2:6379,server3:6379");
但是,如果我用 redis-cli MONITOR 监控 3 个容器,请求总是从主服务器处理,2 个从服务器什么都不做,所以没有负载平衡。
我还尝试连接到公开 3 个 Redis 容器端点的 Kubernetes 负载均衡器服务,结果是当我启动 .net 应用程序时,请求由 3 个 Redis 节点之一随机处理,但总是在同一个节点上。我必须重新启动 .net 应用程序,它将查询另一个节点,但后续查询始终在该节点上进行。
使用带有主/从 Redis 设置的 StackExchange.Redis 以负载平衡方式读取键/值的正确方法是什么?
谢谢
【问题讨论】:
-
请分享你的 kubernetes manifests for redis deploymenet/statefulset 和服务
标签: asp.net-core kubernetes stackexchange.redis