在 Azure Kubernetes 服务 (AKS) 上部署 Valkey 群集
在本文中,我们将回顾在 AKS 上运行 Valkey 群集时正确使用 Azure 可用性区域的挑战,共享一些缩放注意事项并提出解决方案。
重要
AKS 文档和示例中都提到了开源软件。 AKS 服务级别协议、有限保修和 Azure 支持不涵盖你部署的软件。 将开源技术与 AKS 一起使用时,请查阅相应社区和项目维护者提供的支持选项来制定计划。
例如,Ray 的 GitHub 存储库描述了多个在响应时间、用途和支持级别方面各不相同的平台。
Microsoft 将负责生成我们在 AKS 上部署的开源包。 该责任包括对生成、扫描、签名、验证和修补过程拥有完整的所有权,以及对容器映像中的二进制文件的控制。 如需了解详细信息,请参阅 AKS 漏洞管理和 AKS 支持范围。
什么是 Valkey?
Valkey 是 Redis 项目的分支,用于保留其原始开源许可证。 Valkey 是支持键值数据存储的高性能数据库,可用于缓存、会话存储、消息队列等。 Valkey 群集有多个节点负责托管 Valkey 数据存储。 Valkey 会将数据分片成较小的部分,并将其分散在节点之间。 在由三个主节点组成的简化 Valkey 群集中,单个副本节点支持每个节点启用基本故障转移功能。 数据分布在节点之间,使群集能够继续运行,即使其中一个节点发生故障。
有关详细信息,请参阅 Valkey 文档。
Valkey 解决方案概述
此解决方案的目标是在 AKS 上部署 Valkey,其服务级别与 Azure Redis 缓存高级层相同。
下表列出了 Azure Cache for Redis 高级层和建议的 Valkey 解决方案的主要功能:
Azure Cache for Redis 高级层 | Valkey 解决方案 |
---|---|
内存高达 1.2 TB | 使用 SKU 上运行的三Standard_E64_v5 个 Valkey 初选。 |
复制 | 为每个主 Pod 至少一个副本 Pod。 |
区域冗余 | 将主 Pod 和副本 Pod 放置在不同的可用性区域中。 |
我们将创建两个不同的 StatefulSet
资源:一个用于 Valkey 初选,一个用于副本。 StatefulSet
API 的 spec.affinity
会将主 Pod 放置在一个可用性区域中,另一个可用性区域中的副本 Pod。 此方法可确保单个区域故障不会影响任何 Valkey 分片的可用性。
注意
请注意,本文中建议的解决方案不同于 Valkey 文档,其中群集 Pod 属于单个 StatefulSet
,spec.affinity
仅会确保 Pod 放置在不同的节点上。 Valkey 文档中提供的自动 Valkey 群集初始化不会确保同一分片的主 Pod 和副本 Pod 放置在不同的可用性区域中。
后续步骤
供稿人
- Nelly Kiboi | 服务工程师
- Saverio Proto | 首席客户体验工程师
- Don High | 首席客户工程师
- LaBrina Loving | 首席服务工程师
- Ken Kilty | 首席 TPM
- Russell de Pina | 首席 TPM
- Colin Mixon | 产品经理
- Ketan Chawda | 高级客户工程师
- Naveed Kharadi | 客户体验工程师
- Erin Schaffer | 内容开发人员 2