不确定您是否可以使用 MemoryStore。据我所知,它的托管服务不提供这样的功能。
一般来说,我看到和使用的是 Redis HA Kubernetes Deployment 和 Sentinel。
掌舵:https://docs.bitnami.com/tutorials/deploy-redis-sentinel-production-cluster/
什么是哨兵?
将其视为管理 Master 和 Slave 连接的 sidecar 代理。如果您向它发送请求,它将返回主 IP 和从 IP。
默认情况下,Redis 的 helm 会部署带有 2 个从 POD 的 Master POD 和作为 sidecar 的 sentinel。
当你说,The idea would be to have a Redis slave per node which would be the endpoint of any pod of our services.
注意在每个节点上部署 Redis 从站可能很容易配置,但是将 POD 直接连接到同一 节点 上的那个 从站会很奇怪,因为所有流量都使用 Kubernets 服务。
是的,您可以在每个节点上保留从站,但不确定您的服务将如何连接到那些 从站?
您的应用程序将与 Single Kubernetes 服务 通信,该服务将返回 Current 的 IP Masters 和 Slave 根据哨兵文件。
哨兵文档:https://redis.io/topics/sentinel
额外说明(集群与哨兵):
Redis 集群是分布式选项,而哨兵有利于 HA 和复制,因为新的 Master 将始终准备好处理。
这是 Python 中的一个应用示例:
from redis import Sentinel
sentinel = Sentinel([('<**Single K8s service Name**>', 26379)], socket_timeout=0.1)
sentinel.discover_master('mymaster')
('127.0.0.1', 6379)
sentinel.discover_slaves('mymaster')
[('127.0.0.1', 6380)]
参考:https://github.com/redis/redis-py#sentinel-support