【Azure Redis 缓存】Azure Redis功能性讨论
关于使用Azure Redis服务在以下九大方面的功能性的解说:
- 高可用
- 备份可靠性
- 配置自动化
- 部署多样性
- 快速回档功能
- 数据扩容
- SLA稳定性
- 数据安全性
- 监控系统
一:高可用
Azure Cache for Redis 具有内置的高可用性。 其高可用性体系结构的目标是确保托管的 Redis 实例正常运行,即使其基础虚拟机 (VM) 受计划内或计划外中断的影响。 它提供的可用性百分比率要远高于将 Redis 承载在单个 VM 上的情况。使用多个称为“节点”的用于缓存的 VM 来实现高可用性。 它将这些节点配置为以协调的方式进行数据复制和故障转移。 它还会协调维护操作,例如 Redis 升级维护等。
默认情况下,在“标准”或“高级”层级中,Azure Cache for Redis 在一对 Redis 服务器上运行。 这两个服务器托管在专用 VM 上。 开源 Redis 只允许一台服务器处理数据写入请求。 此服务器是主要节点,而另一服务器是副本。 预配服务器节点后,Azure Cache for Redis 可向其分配主要角色和副本角色。 主要节点通常负责为来自 Redis 客户端的写入和读取请求提供服务。
更多详细说明,请见:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-high-availability
通常,Redis 客户端会与 Redis 缓存中的主节点通信,以获取所有读取和写入请求。 某些 Redis 客户端可以配置为从副本节点进行读取。
二:备份可靠性
Redis 暂留可让你保留存储在 Redis 中的数据。 还可以获取快照并备份数据,以便在出现硬件故障时进行加载。保存数据时,Azure 存储会自动加密数据。 支持自动备份和手动备份,备份存放在共享存储上,不占用本地磁盘空间;可以参考 https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-premium-persistence
Azure Redis 缓存使用以下模型提供 Redis 暂留:
- RDB 暂留 - 配置 RDB(Redis 数据库)暂留以后,Azure Redis 缓存按照可配置的备份频率,将 Azure Redis 缓存的快照以 Redis 二进制格式暂留在磁盘上。 如果发生了灾难性事件,导致主缓存和副缓存都无法使用,则会使用最新快照重新构造缓存。 详细了解 RDB 暂留的优点和缺点。
- AOF 暂留 - 配置 AOF(仅追加文件)暂留后,Azure Redis 缓存将每个写入操作保存到日志,此日志每秒至少保存到 Microsoft Azure 存储帐户一次。 如果发生了灾难性事件,导致主缓存和副缓存都无法使用,则会使用存储的写入操作重新构造缓存。 详细了解 AOF 暂留的优点和缺点。
三:配置自动化
可使用PowerShell脚本一键式创建数据库实例:
#创建名为 myCache 的 Azure Redis New-AzRedisCache -ResourceGroupName myGroup -Name mycache -Location "China North"
而Set-AzRedisCache命令
可用于更新属性,例如 Size
、Sku
、EnableNonSslPort
和 RedisConfiguration
值。
#更新名为 myCache 的 Azure Redis 缓存的 maxmemory-policy Set-AzRedisCache -ResourceGroupName "myGroup" -Name "myCache" -RedisConfiguration @{"maxmemory-policy" = "allkeys-random"}
可自定义数据库多种配置参数,但需要自己编写相应代码和脚本,参考文档:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-manage-redis-cache-powershell
四:部署多样性
Azure Redis提供不同的级别:
- 基本:基本缓存是单个缓存节点,适用于开发/测试和非关键型工作负荷。
- 标准:基于主/从复制的生产级别缓存服务。
- 高级:适合企业的级别,可用作缓存和暂留数据。专为最大规模和企业集成而设计。
标准版支持主从,高级版支持主从/集群方式部署。参考文档:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-premium-clustering
什么是 Redis 群集?
Azure Redis 缓存提供的 Redis 群集与 在 Redis 中实施的一样。 Redis 群集具有以下优势:
- 能够在多个节点中自动拆分数据集。
- 能够在部分节点遇到故障或无法与群集其余部分通信的情况下继续运行。
- 更大的吞吐量:增加分片数时,吞吐量呈线性增加。
- 更大的内存大小:增加分片数时,内存大小呈线性增加。
五:快速回档功能
启用Redis数据暂留后,支持自动备份和数据恢复。Redis可以自动获取快照并备份数据,以便在出现硬件故障时进行加载。
导入/导出是一种 Azure Redis 缓存数据管理操作,可用于通过从高级缓存导入 Azure Redis 缓存数据库 (RDB) 快照以及将 Azure Redis 缓存数据库 (RDB) 快照导出到 Azure 存储帐户中的 blob 来相应地将数据导入到 Azure Redis 缓存以及从 Azure Redis 缓存导出数据。
- 导出 - 可以将 Azure Redis 缓存 RDB 快照导出到页 Blob。
- 导入 - 可以从页 Blob 或块 Blob 导入 Azure Redis 缓存 RDB 快照。
通过导入/导出可在不同的 Azure Redis 缓存实例之间进行迁移,或者在使用之前使用数据填充缓存。参考文档:
如何为高级 Azure Redis 缓存配置数据暂留:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-premium-persistence
在 Azure Redis 缓存中导入和导出数据:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-import-export-data
六:数据扩容
Azure Redis 缓存具有不同的缓存产品/服务,使缓存大小和功能的选择更加灵活。 如果创建缓存后,应用程序的要求发生更改,可以更改缓存的大小和定价层。支持按需扩容,包括但不限于数据容量、可读实例和副本数量;支持无缝扩容,可不中断服务,对上层业务透明。
可以扩展到不同定价层,但有以下限制:
- 不能从较高的定价层缩放到较低的定价层。
- 不能从高级缓存向下缩放到标准或基本缓存。
- 不能从标准缓存向下缩放到基本缓存。
- 可从基本缓存缩放到标准缓存,但不能同时更改大小。 如果需要不同大小,则可以执行后续缩放操作以缩放为所需大小。
- 不能从基本缓存直接缩放到高级缓存。 首先在一个缩放操作中从基本缩放到标准,然后在后续的缩放操作中从标准缩放到高级。
- 不能从较大的大小减小为 C0 (250 MB) 。
在缩放过程中,缓存是否可用?
- 标准和高级缓存在缩放操作期间保持可用。 但是,缩放标准和高级缓存时,以及从基本缓存缩放到标准缓存时,可能会发生连接故障。 这些连接故障预期为很小的故障,redis 客户端应能立即重新建立连接。
- 基本缓存在缩放为不同大小的操作期间处于脱机状态。 基本缓存在从基本缩放到标准时仍然可用,但可能会出现较小的连接故障。 如果发生连接故障,redis 客户端应能立即重新建立连接。
详细操作请见:如何缩放 Azure Redis 缓存
七:SLA稳定性
支持主从和集群架构,自动进行容灾切换和故障迁移;可用性保障不低于99.9% --基础版没有SLA保证,其他版本都不低于99.9%
选项 | 说明 | 可用性 | 标准 | 高级 | Enterprise |
---|---|---|---|---|---|
标准复制 | 单个数据中心或可用性区域 (AZ) 中具有自动故障转移功能的双节点复制配置 | 99.9% | ✔ | ✔ |
- |
Enterprise 群集 | 链接了两个区域中的缓存实例,提供自动故障转移 | 99.9% | - | - |
✔ |
异地复制 | 两个区域中的链接缓存实例,具有用户控制的故障转移 | 99.9%(对于单个区域) | - | ✔ |
- |
Azure Cache for Redis 的高可用性: https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-high-availability
八:数据安全性
Azure底层有相关的安全防护确保数据的存储安全,而在传输方面,默认使用SSL访问(6380)使用TLS1.2加密套件保证在数据传输中的安全。同时也可以隔离Redis,通过专用链接或VNET来实现网络隔离:Azure 专用链接和虚拟网络 (VNET) 部署为 Azure Cache for Redis 提供增强的安全性和流量隔离。 使用 VNET,可以进一步通过网络访问控制策略来限制访问。
Azure 专用链接的 Azure Cache for Redis:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-private-link
为高级 Azure Cache for Redis 配置虚拟网络支持:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-premium-vnet
九:监控系统
支持对Redis实例信息的可视化监控(监控内容包括但不限于CPU利用率、连接数、Memory等),可以根据指标配置相应的警报:
如何监视用于 Redis 的 Azure 缓存: https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-monitor
用于 Redis 的 Azure 缓存使用 Azure Monitor 提供用于监视缓存实例的几个选项。 可以查看度量值、将度量值图表固定到启动板、自定义监视图表的日期和时间范围、在图表中添加和删除度量值,以及设置符合特定条件时发出的警报。 借助这些工具,可以监视 Azure Redis 缓存实例的运行状况,以及管理缓存应用程序。
每分钟使用 Redis INFO 命令收集约两次用于 Redis 的 Azure 缓存实例的指标,然后将其自动存储 30 天(请参阅导出缓存指标以配置不同保留期策略),以便这些指标可以显示在指标图表中并由预警规则进行评估。 有关用于每个缓存度量值的不同 INFO 值的详细信息,请参阅 可用度量值和报告间隔。
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!