本文总结了在 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 规则,确保区域分布和高可用性。 此解决方案的目标是在 AKS 上部署 Valkey,其服务级别与 Azure Redis 缓存高级层相同。
下表列出了 Azure Cache for Redis 高级层和建议的 Valkey 解决方案的主要功能:
| Azure Cache for Redis 高级层 | Valkey 解决方案 |
|---|---|
| 内存高达 1.2 TB | 使用在 SKU 上运行的Standard_E64_v5个主要节点。 |
| 复制 | 为每个主 Pod 至少一个副本 Pod。 |
| 区域冗余 | 将主 Pod 和副本 Pod 放置在不同的可用性区域中。 |
我们创建两个不同的 StatefulSet 资源:一个用于 Valkey 主节点 Pod,一个用于副本节点 Pod。
spec.affinity API 的 StatefulSet 会将主 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