Redis 自我修复集群还是云、Kubernetes 或 Swarm 中的替代方案?



是否可以部署一个自我修复和扩展的类似Redis的键值存储,我可以在Kubernetes(或Swarm或任何其他自动化云环境(中运行?

我在 Redis 上发现的挑战:

  1. 您需要手动创建集群redis-trib
  2. 需要将新节点显式添加到群集中
  3. 需要显式删除节点
  4. 节点不会在其分片中点对点复制数据,而是使用主从模型

以上意味着以下方案都将失败。我有一个简单的 3 主集群和 3 从集群。"Master A"失败,导致 Kubernetes 在 <1 秒内启动新的"Master A":

  • 新"主 A"不了解集群,不会加入
  • 具有数据副本的"从
  • 属A"现在从新的"主A"同步,并丢失所有数据,从而破坏了从属副本的目的
  • 在全新的启动中,"Master A"可能会在"Master B"初始化之前启动(假设我甚至可以自动化集群初始化(,在"Master B"准备就绪之前,因此"Master B"永远不会真正加入集群

问题:

  1. 有没有办法在不可预测、非持久性的存储中自动化 Redis 集群初始化和同步,而无需任何人工交互?
  2. 如果没有,是否有一种替代方案是干净的内存中键值存储(持久性对我来说不太重要(,它是自我修复并且可以点对点工作?

领事/etcd/动物园管理员都 100% 点对点和自我修复(这很棒(,但它们的性能(据说(远低于 Redis 内存中的 KV。它们不是构建的,例如,用于查找每个 Web API 请求的会话。这部分是由于非分片(100% 副本(,部分是由于磁盘写入。

Kafka 的模型(虽然是一个消息队列,而不是 KV 存储(也运行良好(但取决于下面的 zk(:分区和副本,但本质上是自我修复的。我和一个经纪人交谈,它告诉我我的主题("碎片"(在哪里,我明白了。

有没有办法使用 Redis 获得完全的自治,以便我可以在 kube/swarm/cloud 中进行部署,或者提供与自治模型类似性能的替代方案?

您可以使用与 Redis Sentinel 一起使用的 Kubernetes Redis 示例。如果主站发生故障,哨兵将从站提升为新的主站。复制控制器引导新的从属 Pod。您的应用程序连接到哨兵,从该服务中您将获得新主服务器的 IP。

雷迪斯哨兵 https://redis.io/topics/sentinel

Kubernetes 示例 https://github.com/kubernetes/examples/tree/master/staging/storage/redis

相关内容

最新更新