我对K8中的Redis不太了解

时间:2019-06-28 19:10:33

标签: redis google-kubernetes-engine

我使用舵图在GKE中设置redis。

它创建了3个服务redis-master,redis-slave和redis-headless。当我通过“ redis-headless”连接到它时,出现错误(大约66%的时间):

READONLY You can't write against a read only replica.

我认为这是因为它正在路由到两个从属实例。如果我使用母版,那么它似乎可以工作。

我认为我应该只使用redis-master进行连接?它会使用奴隶吗?如果主机发生故障,它会更新吗?我应该路由到从属服务器(用于读取查询)吗?

我想对它的工作方式(假设是这样)感到更好。

谢谢

1 个答案:

答案 0 :(得分:0)

假设您正在参考stable/redis图表。

您可以通过运行kubectl describe service <service_name>获得更多详细信息。检查SelectorEndpoints字段。 redis-headless服务选择所有Redis容器,而redis-master仅选择标记为role:master的Redis主容器。

默认情况下,写操作只能由主服务器处理,但是您可以从副本中读取数据。 Redis副本主要用于:

  1. 提高吞吐量。如果主服务器已经忙于写操作,则可以将读取命令发送到副本。请注意,默认情况下复制是异步进行的,因此不能保证强一致性。

  2. 高可用性。通过使用Redis Sentinel,当旧主副本不健康时,副本可以升级为新主副本。这还可以防止在未打开Redis持久性的情况下崩溃的主服务器提出空数据。

对于stable/redis图表,您可以配置sentinel.enabled以启用Redis Sentinel和自动故障转移。还有一个stable/redis-ha图表。