本文介绍了GCP内存库上的Redis主/从的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我们当前的体系结构中,我们使用MemoryStore中的Redis作为简单的快速缓存和发布-订阅系统。

对于我们的服务之一,我们需要为复制的服务提供非常快的本地缓存。该服务将托管在GKE(Google Kubernetes Engine)上。我们的想法是每个节点都有一个Redis从节点,它将成为我们服务的任何Pod的端点。

是否可以使用我们的MemoryStore Redis作为此系统的主控?如果是,是否有相应的文档或示例?或者我们的K8S集群上应该有一个Redis主实例?

推荐答案

不确定是否可以使用Memory Store执行此操作。据我所知,它是托管服务,不提供这样的功能。

我通常看到和使用的是使用Sentinel部署Redis HA Kubernetes。

舵机:https://docs.bitnami.com/tutorials/deploy-redis-sentinel-production-cluster/

什么是哨兵?

将其视为管理从属连接的SideCar代理。如果您向它发出请求,它会将主备IP返回给您。

默认情况下,Redis的掌舵会使用2个从POD部署主POD,并将哨兵部署为侧车。

在每个节点上部署Redis从属设备可能很容易配置,但将POD直接连接到同一节点上从属设备会很奇怪,因为所有通信都使用Kubernet服务。

可以,您可以将从属节点保留在每个节点上,但不确定您的服务将如何连接到这些从属

您的应用程序将与Kubernetes的单个服务进行会话,该服务将根据前置文档返回当前主机从属IP。

哨兵文档:https://redis.io/topics/sentinel

额外说明(群集vs哨兵):

Redis群集是分布式选项,而哨兵则有利于HA,作为新主机的复制将始终随时可供处理。

这里是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

这篇关于GCP内存库上的Redis主/从的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 03:13