如何将现有Azure Cache for Redis实例更新为区域性实例?CLI报错求替代方案
解决Azure Cache for Redis从单区域改为区域冗余的AZ CLI替代方案
你遇到的问题是因为zones属于Redis缓存的基础部署属性,az redis update命令不支持直接修改这类涉及架构变更的配置,而Azure门户通过底层API/ARM模板操作支持该变更。以下是两种可行的替代方法:
方法一:使用Azure REST API执行更新
- 获取Azure访问令牌:
az account get-access-token --query accessToken -o tsv
- 构造PUT请求,调用Redis资源管理API:
- 请求URL:
https://management.azure.com/subscriptions/{你的订阅ID}/resourceGroups/{资源组名}/providers/Microsoft.Cache/Redis/{Redis实例名}?api-version=2023-08-01 - 请求头:添加
Authorization: Bearer {上一步获取的令牌}和Content-Type: application/json - 请求体:复制现有Redis实例的完整配置(可通过
az redis show --name "$REDIS_CACHE" --resource-group "$RESOURCE_GROUP"获取),修改zonalAllocationPolicy为Automatic,按需添加zones配置。示例简化请求体:
- 请求URL:
{ "location": "eastus", "properties": { "sku": { "name": "Premium", "family": "P", "capacity": 2 }, "zonalAllocationPolicy": "Automatic", // 保留其他原有属性如redisConfiguration、enableNonSslPort等 }, "tags": {} }
- 用curl或API工具发送请求完成更新。
方法二:导出ARM模板并重新部署
- 导出现有Redis实例的ARM模板:
- 登录Azure门户,进入目标Redis缓存页面,选择「自动化」>「导出模板」,下载包含
template.json和parameters.json的压缩包。
- 登录Azure门户,进入目标Redis缓存页面,选择「自动化」>「导出模板」,下载包含
- 编辑
template.json:- 在
resources数组的Microsoft.Cache/Redis资源节点中,添加或修改zonalAllocationPolicy字段为"Automatic",如需指定可用区,添加"zones": ["1", "2"](根据区域支持的可用区调整)。
- 在
- 使用AZ CLI重新部署模板:
az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-file ./template.json \ --parameters ./parameters.json \ --mode Incremental
--mode Incremental参数确保仅修改指定配置,保留其他现有属性。
注意:操作前建议备份Redis缓存数据,避免架构变更过程中出现意外。
内容的提问来源于stack exchange,提问作者Gaurav Agarwal
相关产品推荐
相关产品推荐

