Функция репликации объектов асинхронно копирует блочные BLOB-объекты между исходной и целевой учетными записями хранения. При настройке репликации объектов создается политика репликации, указывающая исходную учетную запись хранения и целевую учетную запись. Политика репликации включает одно или несколько правил, задающих исходный и целевой контейнеры, и указывает, какие блочные BLOB-объекты в исходном контейнере будут реплицированы. Дополнительные сведения о репликации объектов см. в разделе Репликация объектов для блочных BLOB-объектов.
В этой статье описывается настройка политики репликации объектов с помощью портала Azure, PowerShell или Azure CLI. Вы также можете использовать одну из клиентских библиотек поставщика ресурсов службы хранилища Azure для настройки репликации объектов.
Предпосылки
Перед настройкой репликации объектов создайте исходные и целевые учетные записи хранения, если они еще не существуют. Исходные и целевые учетные записи могут быть учетными записями хранения версии 2 общего назначения или учетными записями блочных BLOB-объектов класса Premium. Дополнительные сведения см. в статье "Создание учетной записи хранения Azure".
Для репликации объектов необходимо, чтобы управление версиями BLOB-объектов было включено как для исходной, так и для целевой учетной записи, а канал изменений BLOB был включен для исходной учетной записи. Дополнительные сведения об управлении версиями BLOB-объектов см. в статье Управление версиями BLOB-объектов. Дополнительные сведения о канале изменений см. в статье "Поддержка канала изменений" в хранилище BLOB-объектов Azure. Помните, что включение этих функций может привести к дополнительным затратам.
Чтобы настроить политику репликации объектов для учетной записи хранения, необходимо назначить роль Azure Resource Manager Участника с областью действия на уровне учетной записи хранения или выше. Дополнительные сведения см. в документации по управлению доступом на основе ролей Azure (Azure RBAC).
Репликация объектов еще не поддерживается в учетных записях с включенным иерархическим пространством имен.
Если у вас есть доступ к исходным и целевым учетным записям хранения, можно настроить политику репликации объектов в обеих учетных записях. В следующих примерах показано, как настроить репликацию объектов с помощью портала Azure, PowerShell или Azure CLI.
При настройке репликации объектов на портале Azure необходимо настроить политику только в исходной учетной записи. Портал Azure автоматически создает политику в целевой учетной записи после того, как вы настроите исходную учетную запись.
Чтобы создать политику репликации на портале Azure, выполните следующие действия.
Перейдите к исходной учетной записи хранения на портале Azure.
В разделе "Управление данными" выберите репликацию объектов.
Выберите "Создать правила репликации".
Выберите целевую подписку и учетную запись хранения.
В разделе сведений о паре контейнеров выберите исходный контейнер из исходной учетной записи и целевой контейнер из целевой учетной записи. Вы можете создать до 10 пар контейнеров на политику репликации на портале Azure. Сведения о настройке более 10 пар контейнеров (до 1000) см. в статье Настройка репликации объектов с помощью JSON-файла.
На следующем рисунке показан набор правил репликации.
При необходимости укажите один или несколько фильтров, чтобы скопировать только блобы, соответствующие шаблону префикса. Например, если указать префикс b
, реплицируются только те объекты BLOB, имя которых начинается с заданной буквы. В качестве части префикса можно указать виртуальный каталог. Можно добавить не более пяти совпадений префикса. Строка префикса не поддерживает подстановочные знаки.
На следующем изображении показаны фильтры, ограничивающие копирование объектов в рамках правила репликации.
По умолчанию область копирования устанавливается для копирования только новых объектов. Чтобы скопировать все объекты в контейнере или скопировать объекты, начиная с пользовательской даты и времени, выберите ссылку изменения и настройте область копирования для пары контейнеров.
На следующем изображении показана настраиваемая область копирования, которая копирует объекты, начиная с указанной даты и времени.
Нажмите кнопку "Сохранить" и применить , чтобы создать политику репликации и начать репликацию данных.
После настройки репликации объектов на портале Azure отображаются политика и правила репликации, как показано на следующем рисунке.
Чтобы создать политику репликации с помощью PowerShell, сначала установите версию 2.5.0 или более позднюю версию модуля Az.Storage PowerShell. Дополнительные сведения об установке Azure PowerShell см. в статье Установка Azure PowerShell с помощью PowerShellGet.
В следующем примере показано, как сначала создать политику репликации в целевой учетной записи, а затем в исходной учетной записи. Не забудьте заменить значения в угловых скобках собственными значениями.
# Sign in to your Azure account.
Connect-AzAccount
# Set variables.
$rgName = "<resource-group>"
$srcAccountName = "<source-storage-account>"
$destAccountName = "<destination-storage-account>"
$srcContainerName1 = "source-container1"
$destContainerName1 = "dest-container1"
$srcContainerName2 = "source-container2"
$destContainerName2 = "dest-container2"
# Enable blob versioning and change feed on the source account.
Update-AzStorageBlobServiceProperty -ResourceGroupName $rgName `
-StorageAccountName $srcAccountName `
-EnableChangeFeed $true `
-IsVersioningEnabled $true
# Enable blob versioning on the destination account.
Update-AzStorageBlobServiceProperty -ResourceGroupName $rgName `
-StorageAccountName $destAccountName `
-IsVersioningEnabled $true
# List the service properties for both accounts.
Get-AzStorageBlobServiceProperty -ResourceGroupName $rgName `
-StorageAccountName $srcAccountName
Get-AzStorageBlobServiceProperty -ResourceGroupName $rgName `
-StorageAccountName $destAccountName
# Create containers in the source and destination accounts.
Get-AzStorageAccount -ResourceGroupName $rgName -StorageAccountName $srcAccountName |
New-AzStorageContainer $srcContainerName1
Get-AzStorageAccount -ResourceGroupName $rgName -StorageAccountName $destAccountName |
New-AzStorageContainer $destContainerName1
Get-AzStorageAccount -ResourceGroupName $rgName -StorageAccountName $srcAccountName |
New-AzStorageContainer $srcContainerName2
Get-AzStorageAccount -ResourceGroupName $rgName -StorageAccountName $destAccountName |
New-AzStorageContainer $destContainerName2
# Define replication rules for each container.
$rule1 = New-AzStorageObjectReplicationPolicyRule -SourceContainer $srcContainerName1 `
-DestinationContainer $destContainerName1 `
-PrefixMatch b
$rule2 = New-AzStorageObjectReplicationPolicyRule -SourceContainer $srcContainerName2 `
-DestinationContainer $destContainerName2 `
-MinCreationTime 2021-09-01T00:00:00Z
# Create the replication policy on the destination account.
$destPolicy = Set-AzStorageObjectReplicationPolicy -ResourceGroupName $rgName `
-StorageAccountName $destAccountName `
-PolicyId default `
-SourceAccount $srcAccountName `
-Rule $rule1,$rule2
# Create the same policy on the source account.
Set-AzStorageObjectReplicationPolicy -ResourceGroupName $rgName `
-StorageAccountName $srcAccountName `
-InputObject $destPolicy
Чтобы создать политику репликации с помощью Azure CLI, сначала установите Azure CLI версии 2.11.1 или более поздней. Дополнительные сведения можно найти в документации по началу работы с Azure CLI.
Затем включите управление версиями BLOB-объектов в учетных записях хранения источника и назначения и включите поток изменений в исходной учетной записи, вызвав команду az storage account blob-service-properties update. Не забудьте заменить значения в угловых скобках собственными значениями.
az login
az storage account blob-service-properties update \
--resource-group <resource-group> \
--account-name <source-storage-account> \
--enable-versioning \
--enable-change-feed
az storage account blob-service-properties update \
--resource-group <resource-group> \
--account-name <dest-storage-account> \
--enable-versioning
Создайте исходные и целевые контейнеры в соответствующих учетных записях хранения.
az storage container create \
--account-name <source-storage-account> \
--name source-container-1 \
--auth-mode login
az storage container create \
--account-name <source-storage-account> \
--name source-container-2 \
--auth-mode login
az storage container create \
--account-name <dest-storage-account> \
--name dest-container-1 \
--auth-mode login
az storage container create \
--account-name <dest-storage-account> \
--name dest-container-2 \
--auth-mode login
Создайте новую политику репликации и связанное правило в целевой учетной записи, используя команду az storage account or-policy create.
az storage account or-policy create \
--account-name <dest-storage-account> \
--resource-group <resource-group> \
--source-account <source-storage-account> \
--destination-account <dest-storage-account> \
--source-container source-container-1 \
--destination-container dest-container-1 \
--min-creation-time '2021-09-01T00:00:00Z' \
--prefix-match a
Служба хранилища Azure задает идентификатор политики для новой политики при его создании. Чтобы добавить дополнительные правила в политику, используйте команду az storage account or-policy rule add и укажите идентификатор политики.
az storage account or-policy rule add \
--account-name <dest-storage-account> \
--resource-group <resource-group> \
--source-container source-container-2 \
--destination-container dest-container-2 \
--policy-id <policy-id> \
--prefix-match b
Затем создайте политику в исходной учетной записи с помощью идентификатора политики.
az storage account or-policy show \
--resource-group <resource-group> \
--account-name <dest-storage-account> \
--policy-id <policy-id> |
az storage account or-policy create --resource-group <resource-group> \
--account-name <source-storage-account> \
--policy "@-"
Если у вас нет разрешений на исходную учетную запись хранения или если вы хотите использовать более 10 пар контейнеров, можно настроить репликацию объектов в целевой учетной записи и предоставить JSON-файл, содержащий определение политики другому пользователю, чтобы создать ту же политику в исходной учетной записи. Например, если исходная учетная запись находится в другом клиенте Microsoft Entra из целевой учетной записи, можно использовать этот подход для настройки репликации объектов.
Сведения о создании JSON-файла, содержащего определение политики, см. в файле определения политики.
Примечание.
Репликация объектов между клиентами разрешена по умолчанию для учетной записи хранения. Чтобы предотвратить репликацию между клиентами, можно задать свойство AllowCrossTenantReplication , чтобы запретить репликацию объектов между клиентами для учетных записей хранения. Дополнительные сведения см. в разделе "Запрет репликации объектов в клиентах Microsoft Entra".
В примерах этого раздела показано, как настроить политику репликации объектов в целевой учетной записи, а затем получить JSON-файл для этой политики, которую другой пользователь может использовать для настройки политики в исходной учетной записи.
Чтобы настроить репликацию объектов в целевой учетной записи с помощью JSON-файла на портале Azure, выполните следующие действия.
Создайте локальный JSON-файл, определяющий политику репликации в целевой учетной записи. Задайте для поля policyId значение по умолчанию , чтобы служба хранилища Azure определила идентификатор политики.
Простой способ создать JSON-файл, определяющий политику репликации, — сначала создать тестовую политику репликации между двумя учетными записями хранения на портале Azure. Затем можно скачать правила репликации и изменить JSON-файл по мере необходимости.
Перейдите к параметрам репликации объектов для целевой учетной записи на портале Azure.
Выберите "Отправить правила репликации".
Отправьте JSON-файл. На портале Azure отображаются политика и правила, которые будут созданы, как показано на следующем рисунке.
Выберите "Отправить ", чтобы создать политику репликации в целевой учетной записи.
Затем можно скачать JSON-файл, содержащий определение политики, которое можно предоставить другому пользователю для настройки исходной учетной записи. Чтобы скачать этот JSON-файл, выполните следующие действия.
Перейдите к параметрам репликации объектов для целевой учетной записи на портале Azure.
Нажмите кнопку "Дополнительно " рядом с политикой, которую вы хотите скачать, а затем выберите "Скачать правила", как показано на следующем рисунке.
Сохраните JSON-файл на локальном компьютере, чтобы предоставить общий доступ другому пользователю, чтобы настроить политику в исходной учетной записи.
Скачанный JSON-файл содержит идентификатор политики, созданный службой хранилища Azure для политики в целевой учетной записи. Для настройки репликации объектов в исходной учетной записи необходимо использовать тот же идентификатор политики.
Помните, что отправка JSON-файла для создания политики репликации для целевой учетной записи через портал Azure не автоматически создает ту же политику в исходной учетной записи. Другой пользователь должен создать политику в исходной учетной записи, прежде чем служба хранилища Azure начнет репликацию объектов.
Чтобы скачать JSON-файл, содержащий определение политики репликации для целевой учетной записи из PowerShell, вызовите команду Get-AzStorageObjectReplicationPolicy , чтобы вернуть политику. Затем преобразуйте политику в JSON и сохраните ее в виде локального файла, как показано в следующем примере. Не забудьте заменить значения в угловых скобках и путь к файлу собственными значениями:
$rgName = "<resource-group>"
$destAccountName = "<destination-storage-account>"
$destPolicy = Get-AzStorageObjectReplicationPolicy -ResourceGroupName $rgName `
-StorageAccountName $destAccountName
$destPolicy | ConvertTo-Json -Depth 5 > c:\temp\json.txt
Чтобы использовать JSON-файл для определения политики репликации в исходной учетной записи с помощью PowerShell, извлеките локальный файл и преобразуйте из JSON в объект. Затем вызовите команду Set-AzStorageObjectReplicationPolicy , чтобы настроить политику в исходной учетной записи, как показано в следующем примере.
При выполнении примера обязательно задайте параметр -ResourceGroupName
для группы ресурсов исходной учетной записи и параметр -StorageAccountName
для имени исходной учетной записи. Кроме того, не забудьте заменить значения в угловых скобках и путь к файлу собственными значениями:
$object = Get-Content -Path C:\temp\json.txt | ConvertFrom-Json
Set-AzStorageObjectReplicationPolicy -ResourceGroupName $rgName `
-StorageAccountName $srcAccountName `
-PolicyId $object.PolicyId `
-SourceAccount $object.SourceAccount `
-DestinationAccount $object.DestinationAccount `
-Rule $object.Rules
Чтобы записать определение политики репликации для учетной записи-получателя в JSON-файл с помощью Azure CLI, введите команду az storage account or-policy show и вывод осуществите в файл.
В следующем примере выполняется запись определения политики в JSON-файл с именемpolicy.json. Не забудьте заменить значения в угловых скобках и путь к файлу собственными значениями:
az storage account or-policy show \
--account-name <dest-account-name> \
--policy-id <policy-id> > policy.json
Чтобы использовать JSON-файл для настройки политики репликации в исходной учетной записи с помощью Azure CLI, вызовите команду az storage account or-policy create и назовите файл policy.json . Не забудьте заменить значения в угловых скобках и путь к файлу собственными значениями:
az storage account or-policy create \
-resource-group <resource-group> \
--source-account <source-account-name> \
--policy @policy.json
Включение метрик репликации
Метрики репликации можно включить как в новых, так и в существующих политиках репликации объектов. Для наблюдения за метриками может потребоваться несколько минут.
Вы можете включить метрики с помощью панели репликации объектов из нового столбца метрик или изменения раздела Правила редактирования политики из "..." в строке политики OR.
Включение метрик поддерживается в API версии 2021-08-01 и выше. В политику репликации можно добавить новое поле метрик. Образец:
{
"sourceAccount": "<source-account-name>",
"destinationAccount": "<destination-account-name>",
"metrics":
{
"enabled": true
},
"rules":
[
{
"ruleId": "<rule-id>",
"sourceContainer": "<source-container-name>",
"destinationContainer": "<destination-container-name>"
}
]
}
Если включить метрики в политике, настроенной для копирования существующих данных, вы можете наблюдать увеличение объема в начале, пока политика работает на начальном этапе перечисления. После завершения репликация начнется.
Просмотр метрик репликации
Чтобы просмотреть метрики мониторинга, щелкните ссылку "Вид " в столбце метрик
Чтобы просмотреть метрики в Azure Monitor, щелкните диаграмму метрики. Это приведет к просмотру метрик Azure Monitor с дополнительными возможностями фильтрации.
Проверить состояние репликации объекта данных
Для проверки состояния репликации блоба в исходной учетной записи используйте портал Azure, PowerShell или Azure CLI. Свойства репликации объектов не заполняются до завершения или сбоя репликации.
Чтобы проверить состояние репликации для блоба в исходной учетной записи хранения на портале Azure, выполните следующие действия.
- Перейдите к исходной учетной записи на портале Azure.
- Найдите контейнер, содержащий исходный объект BLOB.
- Выберите блоб, чтобы отобразить его свойства. Если большой двоичный объект успешно реплицирован, в разделе репликации объектов будет задано значение Complete. Идентификатор политики репликации и идентификатор правила, управляющего репликацией объектов для этого контейнера, также перечислены.
Чтобы проверить состояние репликации для объекта BLOB в исходном аккаунте с помощью PowerShell, получите значение свойства ReplicationStatus объектной репликации, как показано в следующем примере. Не забудьте заменить значения в угловых скобках собственными значениями.
$ctxSrc = (Get-AzStorageAccount -ResourceGroupName $rgName `
-StorageAccountName $srcAccountName).Context
$blobSrc = Get-AzStorageBlob -Container $srcContainerName1 `
-Context $ctxSrc `
-Blob <blob-name>
$blobSrc.BlobProperties.ObjectReplicationSourceProperties[0].Rules[0].ReplicationStatus
Чтобы проверить статус репликации для объекта Blob в исходной учетной записи, используя Azure CLI, получите значение свойства статуса репликации объекта, как показано в следующем примере:
az storage blob show \
--account-name <source-account-name> \
--container-name <source-container-name> \
--name <source-blob-name> \
--query 'objectReplicationSourceProperties[].rules[].status' \
--output tsv \
--auth-mode login
Если статус репликации BLOB в исходной учетной записи указывает на сбой, расследуйте следующие возможные причины.
- Убедитесь, что в конечной учетной записи настроена политика репликации объектов.
- Убедитесь, что целевой контейнер по-прежнему существует.
- Если исходный большой двоичный объект зашифрован с помощью предоставленного клиентом ключа при выполнении операции записи, репликация объекта завершится ошибкой. Дополнительные сведения о ключах, представляемых клиентом, см. в статье Указание ключа шифрования при отправке запроса в Хранилище BLOB-объектов.
Удаление политики репликации
Чтобы удалить политику репликации и связанные с ней правила, используйте портал Azure, PowerShell или CLI.
Чтобы удалить политику репликации на портале Azure, выполните следующие действия.
- Перейдите к исходной учетной записи хранения на портале Azure.
- В разделе "Параметры" выберите репликацию объектов.
- Нажмите кнопку "Дополнительно" рядом с именем политики.
- Выберите "Удалить правила".
Чтобы удалить политику репликации, удалите политику как из исходной учетной записи, так и из целевой учетной записи. При удалении политики также удаляются все связанные с ней правила.
# Remove the policy from the destination account.
Remove-AzStorageObjectReplicationPolicy -ResourceGroupName $rgName `
-StorageAccountName $destAccountName `
-PolicyId $destPolicy.PolicyId
# Remove the policy from the source account.
Remove-AzStorageObjectReplicationPolicy -ResourceGroupName $rgName `
-StorageAccountName $srcAccountName `
-PolicyId $destPolicy.PolicyId
Чтобы удалить политику репликации, удалите политику как из исходной учетной записи, так и из целевой учетной записи. При удалении политики также удаляются все связанные с ней правила.
az storage account or-policy delete \
--policy-id <policy-id> \
--account-name <source-storage-account> \
--resource-group <resource-group>
az storage account or-policy delete \
--policy-id <policy-id> \
--account-name <dest-storage-account> \
--resource-group <resource-group>
Дальнейшие действия