我已为 Redis 资源创建了两个高级 Azure 缓存并设置了异地复制。门户中有一个按钮可以手动进行故障转移。
如何使用 Azure CLI 触发此故障转移?
我尝试了
az redis force-reboot --resource-group $resourceGroupName --name $redisPrimary --reboot-type $rebootType
命令,但没有成功。
我在 PowerShell 中通过断开缓存之间的(异地复制)链接然后重新创建它来完成此操作,确保反转主缓存和辅助缓存。
使用配置状态来监控删除或创建链接后的状态:
$provisioningState = (Get-AzRedisCache -Name $cacheNamePrimary).ProvisioningState
if ($provisioningState -eq 'Succeeded') { etc.. }
有一个问题,删除链接
Remove-AzRedisCacheLink
并尝试创建新链接 New-AzRedisCacheLink
后,即使配置状态将报告“成功”,也可能会出现错误。错误消息:Operation returned an invalid status code 'Conflict'
。
在本例中,我创建了一个 while 循环,当
New-AzRedisCacheLink
没有返回错误时,该循环会中断:
# Create cache link (geo-replication)
while ($true) {
$provisioningState = (Get-AzRedisCache -Name $cacheNamePrimary).ProvisioningState
if ($provisioningState -eq 'Succeeded') {
try {
New-AzRedisCacheLink -PrimaryServerName $cacheNameSecondary -SecondaryServerName $cacheNamePrimary -ErrorAction Stop
break
} catch {
Write-Output "Trying to creating cache link but received an error '$($_)'.. probably busy processing something.. retrying.."
Start-Sleep -Milliseconds 20000
}
} else {
Start-Sleep -Milliseconds 30000
Write-Output "Still waiting for cache link to be removed.. provisioning status '$provisioningState'.."
}
}