在 Azure Kubernetes 服务 (AKS) 上部署 Valkey 群集

本文总结了在 Azure Kubernetes 服务(AKS)上部署 Valkey(BSD)高性能密钥/值数据存储的步骤。 Valkey 部署侧重于利用副本和可用性区域实现高可用性和复原能力。 我们还提供指导,用于使用 Locust 负载测试框架测试 Valkey 部署的复原能力。

重要

AKS 文档和示例中都提到了开源软件。 AKS 服务级别协议、有限保修和 Azure 支持不涵盖你部署的软件。 将开源技术与 AKS 一起使用时,请查阅相应社区和项目维护者提供的支持选项来制定计划。

Microsoft 将负责生成我们在 AKS 上部署的开源包。 该责任包括对生成、扫描、签名、验证和修补过程拥有完整的所有权,以及对容器映像中的二进制文件的控制。 如需了解详细信息,请参阅 AKS 漏洞管理和 AKS 支持范围。

什么是 Valkey?

Valkey 是 Redis 项目的分支,用于保留其原始开源许可证。 Valkey 是支持键值数据存储的高性能数据库,可用于缓存、会话存储、消息队列等。 Valkey 群集有多个节点负责托管 Valkey 数据存储。 Valkey 会将数据分片成较小的部分,并将其分散在节点之间。 在由三个主节点组成的简化 Valkey 群集中,单个副本节点支持每个节点启用基本故障转移功能。 数据分布在节点之间,使群集能够继续运行,即使其中一个节点发生故障。

在 AKS 上部署的 Valkey 体系结构图,有三个主节点,以及每个主节点有一个副本。

有关详细信息,请参阅 Valkey 文档。

Valkey 解决方案概述

此解决方案在两个可用性区域之间部署三个 Valkey 主 Pod,每个主 Pod 在第三个区域都有一个副本 Pod,并在Standard_E64_v5 SKU 节点上运行。 您创建两个不同的 StatefulSet 资源,并使用 spec.affinity 规则确保区域分布,以实现高可用性。 你要创建两个StatefulSet:一个用于 Valkey 主 Pod,另一个用于副本 Pod。

注意

请注意,本文中建议的解决方案不同于 Valkey 文档,其中群集 Pod 属于单个 StatefulSet,spec.affinity 仅会确保 Pod 放置在不同的节点上。 Valkey 文档中介绍的自动 Valkey 集群初始化不能确保同一分片的主 Pod 和副本 Pod 被放置在不同的可用区中。

后续步骤

供稿人

Microsoft 会维护本文。 最初由以下贡献者撰写:

  • Nelly Kiboi | 服务工程师
  • Saverio Proto | 首席客户体验工程师
  • Don High | 首席客户工程师
  • LaBrina Loving | 首席服务工程师
  • Ken Kilty | 首席 TPM
  • Russell de Pina | 首席 TPM
  • Colin Mixon | 产品经理
  • Ketan Chawda | 高级客户工程师
  • Naveed Kharadi | 客户体验工程师
  • Erin Schaffer | 内容开发人员 2