Копирование снимков Azure в другой регион

Я пытаюсь создать решение для аварийного восстановления с помощью снимков в Azure. У меня очень много дисков в кластере, и в настоящее время я могу делать снимки дисков, чтобы иметь возможность восстановить их локально. Это работает

Теперь я хочу либо скопировать существующие снимки в другой регион, либо создать новые снимки моих дисков, но хранящиеся в другом регионе.

Ссылка: https://docs.microsoft.com/en-us/cli/azure/snapshot?view=azure-cli-latest#az_snapshot_create

Я пробовал это. В этом примере $ disk_location находится в eastus, а $ target_location - в eastus2.

az snapshot create --name $snapshot_name \
--resource-group $resource_group \
--location $target_location \
--source "$disk_location" \
--no-wait

Ошибка: ресурс mdw_data1 не найден. Он существует, но не находится в $ target_location.

Я также попытался создать снимок с источником в качестве другого снимка. Я столкнулся с двумя проблемами с этим. Во-первых, он заявил, что моментальный снимок уже существует, потому что я использую то же имя snapshot_name, и когда я изменил имя на другое, он дал мне ту же ошибку «не найден».

Моментальные снимки могут быть либо локально избыточными (3 копии в одном физическом расположении), либо избыточными зонами (3 копии в 3 зонах доступности в пределах региона). Ни то, ни другое не помогает в сценарии, когда регион переходит в автономный режим.

Ссылка: https://docs.microsoft.com/en-us/azure/storage/common/storage-redundancy

Кроме того, Microsoft сообщает: для приложений, требующих высокой доступности, Microsoft рекомендует использовать ZRS в основном регионе, а также выполнять репликацию в дополнительный регион. Тем не менее, я не могу скопировать свои снимки во вторичный регион, как они рекомендуют.


person Jon Roberts    schedule 23.09.2020    source источник


Ответы (1)


AWS предоставляет одну команду для копирования снимка из одного региона в другой, но Azure не предоставляет эту функцию напрямую из своего интерфейса командной строки.

Ссылка: https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-snapshot.html

пример:

aws ec2 copy-snapshot \
--region us-east-1 \
--source-region us-west-2 \
--source-snapshot-id snap-066877671789bd71b \
--description "This is my copied snapshot."

Решение Azure:

Шаг 1. Создайте учетную запись хранения в целевом расположении.

az storage account create --name $account_name \
--resource-group $resource_group \
--location $target_location

Шаг 2 - Получите ключ хранилища из учетной записи на шаге 1

Примечание. Обратите внимание, как Azure изменила storage_account на account_account.

az storage account keys list --resource-group $resource_group \
--account-name $account_name \
--query '[].value' \
--output tsv

Шаг 3 - Создайте контейнер во вновь созданной учетной записи хранения, расположенной в целевом местоположении.

az storage container create --name $container_name 
--resource-group $resource_group \
--account-key $account_key \
--account-name $account_name

Шаг 4 - Предоставьте доступ к вашему собственному снимку

Для меня это странно. Вы должны предоставить себе доступ к собственному снимку. Вы также должны указать, на какой срок действует грант.

duration="7200"

az snapshot grant-access --resource-group $resource_group \
--name $snapshot_id \
--duration-in-seconds $duration \
--query [accessSas] \
--output tsv

Шаг 5. Используйте SAS, чтобы скопировать снимок в контейнер, расположенный в вашей учетной записи хранения.

Целевой_блок - это имя снимка с добавленным к концу .vhd.

destination_blob="$snapshot_id"".vhd"

az storage blob copy start --destination-blob "$destination_blob" \
--destination-container "$container_name" \
--account-key "$account_key" \
--account-name "$account_name" \
--source-uri "$sas"

Шаг 6 - Подождите

Продолжайте запускать, пока на выходе не появится сообщение об успехе.

az storage blob show --name "$destination_blob" \
--container-name "$container_name" \
--account-key "$account_key" \
--account-name "$account_name" \
--query '[properties.copy.status]' \
--output tsv

Шаг 7 - Получите идентификатор подписки

az account show --query 'id' --output tsv

Шаг 8. Создание снимка. Azure не позволяет создавать снимок с тем же именем, но в другом регионе. Так что, к сожалению, вам придется обновить имя.

target_snapshot_id="$snapshot_id""_copy"

az snapshot create --name $target_snapshot_id \
--resource-group $resource_group \
--location $target_location \
--source "https://${account_name}.blob.core.windows.net/${container_name}/${destination_blob}" \
--source-storage-account-id "/subscriptions/${subscription_id}/resourceGroups/${resource_group}/providers/Microsoft.Storage/storageAccounts/${account_name}"

Шаг 9 - Очистка

az storage account delete --resource-group $resource_group \
--name $account_name \
--yes
person Jon Roberts    schedule 30.09.2020