La replicación de objetos copia asincrónicamente los blobs en bloques entre una cuenta de almacenamiento de origen y una de destino. Al configura la replicación de objetos, se crea una política de replicación que especifica la cuenta de almacenamiento de origen y la cuenta de destino. Una directiva de replicación incluye una o más reglas que especifican un contenedor de origen y un contenedor de destino e indican qué blob en bloques del contenedor de origen se replicarán. Para obtener más información sobre la replicación de objetos, vea Replicación de objetos para blobs en bloques.
En este artículo se describe cómo configurar una directiva de replicación de objetos mediante Azure Portal, PowerShell o la CLI de Azure. También puede usar una de las bibliotecas cliente del proveedor de recursos de Azure Storage para configurar la replicación de objetos.
Prerrequisitos
Antes de configurar la replicación de objetos, cree las cuentas de almacenamiento de origen y destino si aún no existen. Las cuentas de origen y destino pueden ser cuentas de almacenamiento de uso general v2 o cuentas de blob en bloques prémium. Para obtener más información, consulte Creación de una cuenta de Azure Storage.
La replicación de objetos requiere que el control de versiones de blobs esté habilitado para la cuenta de origen y de destino, y que la fuente de cambios de blobs esté habilitada para la cuenta de origen. Para más información sobre el control de versiones de blobs, consulte Control de versiones de blobs. Para obtener más información sobre la fuente de cambios, consulte Compatibilidad con la fuente de cambios en Azure Blob Storage. Tenga en cuenta que habilitar estas características puede dar lugar a costos adicionales.
Para configurar una directiva de replicación de objetos para una cuenta de almacenamiento, debe tener asignado el rol Colaborador de Azure Resource Manager, con ámbito al nivel de la cuenta de almacenamiento o superior. Para más información, consulte los roles integrados de Azure en la documentación del control de acceso basado en roles de Azure (RBAC de Azure).
La replicación de objetos aún no se admite en las cuentas que tienen habilitado un espacio de nombres jerárquico.
Si tiene acceso a las cuentas de almacenamiento de origen y de destino, puede configurar la directiva de replicación de objetos en ambas cuentas. En los ejemplos siguientes se muestra cómo configurar la replicación de objetos con Azure Portal, PowerShell o la CLI de Azure.
Al configurar la replicación de objetos en Azure Portal, solo tiene que configurar la directiva en la cuenta de origen. Azure Portal crea automáticamente la directiva en la cuenta de destino después de configurarla para la cuenta de origen.
Para crear una directiva de replicación en Azure Portal, siga estos pasos:
Vaya a la cuenta de almacenamiento de origen en Azure Portal.
En Administración de datos, seleccione Replicación de objetos.
Seleccione Crear reglas de replicación.
Seleccione la suscripción de destino y la cuenta de almacenamiento.
En la sección Detalles del par contenedor , seleccione un contenedor de origen de la cuenta de origen y un contenedor de destino de la cuenta de destino. Puede crear hasta 10 pares de contenedores por directiva de replicación desde Azure Portal. Para configurar más de 10 pares de contenedores (hasta 1000), consulte Configurar la replicación de objetos mediante un archivo JSON.
En la imagen siguiente se muestra un conjunto de reglas de replicación.
Si lo desea, especifique uno o varios filtros para copiar solo blobs que coincidan con un patrón de prefijo. Por ejemplo, si especifica un prefijo b, solo se replican los blobs cuyo nombre comience por esa letra. Puede especificar un directorio virtual como parte del prefijo. Puede agregar un máximo de hasta cinco coincidencias de prefijo. La cadena de prefijo no admite caracteres comodín.
En la imagen siguiente se muestran filtros que restringen los blobs que se copian como parte de una regla de replicación.
De forma predeterminada, el ámbito de copia se establece para copiar solo nuevos objetos. Para copiar todos los objetos del contenedor o copiar objetos a partir de una fecha y hora personalizados, seleccione el vínculo cambiar y configure el ámbito de copia para el par de contenedores.
En la imagen siguiente se muestra un ámbito de copia personalizado que copia objetos de una fecha y hora especificadas en adelante.
Seleccione Guardar y aplicar para crear la directiva de replicación e iniciar la replicación de datos.
Después de configurar la replicación de objetos, Azure Portal muestra la directiva de replicación y las reglas, como se muestra en la siguiente imagen.
Para crear una directiva de replicación con PowerShell, instale primero la versión 2.5.0 o posterior del módulo de PowerShell Az.Storage. Para más información sobre cómo instalar Azure PowerShell, consulte Instalación de Azure PowerShell con PowerShellGet.
En el ejemplo siguiente se muestra cómo crear primero una directiva de replicación en la cuenta de destino y, a continuación, en la cuenta de origen. No olvide reemplazar los valores entre corchetes angulares por sus propios valores:
# 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
Para crear una directiva de replicación con la CLI de Azure, instale primero la versión 2.11.1 o posterior de la CLI de Azure. Para más información, consulte Introducción a la CLI de Azure.
A continuación, habilite el control de versiones de blobs en las cuentas de almacenamiento de origen y de destino, y habilite la fuente de cambios en la cuenta de origen, llamando al comando az storage account blob-service-properties update. No olvide reemplazar los valores entre corchetes angulares por sus propios valores:
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
Cree los contenedores de origen y destino en sus respectivas cuentas de almacenamiento.
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
Cree una nueva directiva de replicación y una regla asociada en la cuenta de destino mediante una llamada 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 Storage establece el identificador de directiva de la nueva directiva cuando se crea. Para agregar reglas adicionales a la directiva, llame a az storage account or-policy rule add y proporcione el identificador de la directiva.
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
A continuación, cree la política en la cuenta de origen mediante el identificador de política.
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 "@-"
Si no tiene permisos para la cuenta de almacenamiento de origen o si desea usar más de 10 pares de contenedores, puede configurar la replicación de objetos en la cuenta de destino y proporcionar un archivo JSON que contenga la definición de directiva a otro usuario para crear la misma directiva en la cuenta de origen. Por ejemplo, si la cuenta de origen está en un inquilino de Microsoft Entra diferente de la cuenta de destino, puede usar este enfoque para configurar la replicación de objetos.
Para obtener información sobre cómo crear un archivo JSON que contenga la definición de directiva, consulte Archivo de definición de directiva.
Nota:
La replicación de objetos entre inquilinos se permite de forma predeterminada para una cuenta de almacenamiento. Para evitar la replicación entre inquilinos, puede establecer la propiedad AllowCrossTenantReplication para impedir la replicación de objetos entre inquilinos para las cuentas de almacenamiento. Para obtener más información, consulte Impedir la replicación de objetos en los inquilinos de Microsoft Entra.
Los ejemplos de esta sección muestran cómo configurar la directiva de replicación de objetos en la cuenta de destino y, a continuación, obtener el archivo JSON de esa directiva que otro usuario puede usar para configurar la directiva en la cuenta de origen.
Para configurar la replicación de objetos en la cuenta de destino con un archivo JSON en Azure Portal, siga estos pasos:
Cree un archivo JSON local que defina la directiva de replicación en la cuenta de destino. Establezca el campo policyId en predeterminado para que Azure Storage defina el identificador de directiva.
Una manera sencilla de crear un archivo JSON que defina una directiva de replicación es crear primero una directiva de replicación de prueba entre dos cuentas de almacenamiento en Azure Portal. Después, puede descargar las reglas de replicación y modificar el archivo JSON según sea necesario.
Vaya a la configuración de replicación de objetos de la cuenta de destino en Azure Portal.
Seleccione Cargar reglas de replicación.
Cargue el archivo JSON. Azure Portal muestra la directiva y las reglas que se crearán, como se muestra en la imagen siguiente.
Seleccione Cargar para crear la directiva de replicación en la cuenta de destino.
A continuación, puede descargar un archivo JSON que contenga la definición de directiva que puede proporcionar a otro usuario para configurar la cuenta de origen. Para descargar este archivo JSON, siga estos pasos:
Vaya a la configuración de replicación de objetos de la cuenta de destino en Azure Portal.
Seleccione el botón Más situado junto a la directiva que desea descargar y, a continuación, seleccione Descargar reglas, como se muestra en la siguiente imagen.
Guarde el archivo JSON en el equipo local para compartirlo con otro usuario para configurar la directiva en la cuenta de origen.
El archivo JSON descargado incluye el identificador de directiva que Azure Storage creó para la directiva en la cuenta de destino. Debe usar el mismo identificador de directiva para configurar la replicación de objetos en la cuenta de origen.
Tenga en cuenta que cargar un archivo JSON para crear una directiva de replicación para la cuenta de destino a través de Azure Portal no crea automáticamente la misma directiva en la cuenta de origen. Otro usuario debe crear la directiva en la cuenta de origen antes de que Azure Storage empiece a replicar objetos.
Para descargar un archivo JSON que contiene la definición de directiva de replicación para la cuenta de destino de PowerShell, llame al comando Get-AzStorageObjectReplicationPolicy para devolver la directiva. A continuación, convierta la directiva en JSON y guárdela como un archivo local, como se muestra en el ejemplo siguiente. Recuerde reemplazar los valores entre corchetes angulares y la ruta de acceso del archivo por sus propios valores:
$rgName = "<resource-group>"
$destAccountName = "<destination-storage-account>"
$destPolicy = Get-AzStorageObjectReplicationPolicy -ResourceGroupName $rgName `
-StorageAccountName $destAccountName
$destPolicy | ConvertTo-Json -Depth 5 > c:\temp\json.txt
Para usar el archivo JSON para definir la directiva de replicación en la cuenta de origen con PowerShell, recupere el archivo local y convierta de JSON a un objeto. A continuación, llame al comando Set-AzStorageObjectReplicationPolicy para configurar la directiva en la cuenta de origen, como se muestra en el ejemplo siguiente.
Al ejecutar el ejemplo, asegúrese de establecer el -ResourceGroupName parámetro en el grupo de recursos de la cuenta de origen y el -StorageAccountName parámetro en el nombre de la cuenta de origen. Además, recuerde reemplazar los valores entre corchetes angulares y la ruta de acceso del archivo por sus propios valores:
$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
Para escribir la definición de la directiva de replicación para la cuenta de destino en un archivo JSON desde CLI de Azure, llame al comando az storage account or-policy show y genere el resultado en un archivo.
En el ejemplo siguiente se escribe la definición de directiva en un archivo JSON denominado policy.json. Recuerde reemplazar los valores entre corchetes angulares y la ruta de acceso del archivo por sus propios valores:
az storage account or-policy show \
--account-name <dest-account-name> \
--policy-id <policy-id> > policy.json
Para usar el archivo JSON para configurar la directiva de replicación en la cuenta de origen con la CLI de Azure, llame al comando az storage account or-policy create y haga referencia al archivo policy.json . Recuerde reemplazar los valores entre corchetes angulares y la ruta de acceso del archivo por sus propios valores:
az storage account or-policy create \
-resource-group <resource-group> \
--source-account <source-account-name> \
--policy @policy.json
Habilitación de métricas de replicación
Puede habilitar las métricas de replicación en directivas de replicación de objetos nuevas y existentes. Puede tardar unos minutos en empezar a observar las métricas.
Puede habilitar las métricas utilizando la hoja Replicación de objetos desde la nueva columna Métricas o editando la sección Editar reglas de una directiva desde "…" en la fila de la directiva OR.
La habilitación de métricas se admite en la versión de API 2021-08-01 y versiones posteriores. Puede agregar el nuevo campo de métricas a la directiva de replicación. Sample:
{
"sourceAccount": "<source-account-name>",
"destinationAccount": "<destination-account-name>",
"metrics":
{
"enabled": true
},
"rules":
[
{
"ruleId": "<rule-id>",
"sourceContainer": "<source-container-name>",
"destinationContainer": "<destination-container-name>"
}
]
}
Si habilita métricas en una directiva configurada para copiar datos existentes, es posible que observe un aumento al principio mientras la directiva trabaja en la fase inicial de enumeración. Una vez completado, se iniciará la replicación.
Visualización de métricas de replicación
Puede hacer clic en el vínculo Ver de la columna Métricas para ver las métricas de supervisión.
Para ver aún más las métricas en Azure Monitor, haga clic en el gráfico de una métrica. Esto le dirigirá a la vista Métricas de Azure Monitor con más funcionalidades de filtrado.
Comprobación del estado de replicación de un blob
Puede comprobar el estado de replicación de un blob en la cuenta de origen mediante Azure Portal, PowerShell o la CLI de Azure. Las propiedades de replicación de objetos no se rellenan hasta que la replicación se haya completado o fallado.
Para comprobar el estado de replicación de un blob en la cuenta de origen de Azure Portal, siga estos pasos:
- Vaya a la cuenta de origen en Azure Portal.
- Busque el contenedor que incluye el blob de origen.
- Seleccione el blob para mostrar sus propiedades. Si el blob se ha replicado correctamente, verá en la sección Replicación de objetos que el estado está establecido en Completado. También se muestran el identificador de la directiva de replicación y el identificador de la regla que rige la replicación de objetos para este contenedor.
Para comprobar el estado de replicación de un blob en la cuenta de origen con PowerShell, obtenga el valor de la propiedad ReplicationStatus de replicación de objetos, como se muestra en el ejemplo siguiente. No olvide reemplazar los valores entre corchetes angulares por sus propios valores:
$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
Para comprobar el estado de replicación de un blob en la cuenta de origen con la CLI de Azure, obtenga el valor de la propiedad de estado de replicación de objetos, como se muestra en el ejemplo siguiente:
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
Si el estado de replicación de un blob en la cuenta de origen indica un error, investigue las posibles causas que se mencionan a continuación:
- Asegúrese de que la directiva de replicación de objetos está configurada en la cuenta de destino.
- Compruebe que el contenedor de destino aún existe.
- Si el blob de origen se cifró con una clave proporcionada por el cliente como parte de una operación de escritura, se producirá un error en la replicación de objetos. Para más información sobre las claves proporcionadas por el cliente, consulte Especificación de una clave de cifrado en una solicitud a Blob Storage.
Eliminación de una directiva de replicación
Para quitar una directiva de replicación y sus reglas asociadas, use Azure Portal, PowerShell o la CLI.
Para quitar una directiva de replicación en Azure Portal, siga estos pasos:
- Vaya a la cuenta de almacenamiento de origen en Azure Portal.
- En Configuración, seleccione Replicación de objetos.
- Seleccione el botón Más situado junto al nombre de la directiva.
- Seleccione Eliminar reglas.
Para quitar una directiva de replicación, elimine la directiva de la cuenta de origen y de la cuenta de destino. Al eliminar la directiva también se eliminan las reglas asociadas.
# 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
Para quitar una directiva de replicación, elimine la directiva de la cuenta de origen y de la cuenta de destino. Al eliminar la directiva también se eliminan las reglas asociadas.
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>
N/A
Comportamiento al volver a crear una directiva de replicación de objetos
Cuando se elimina una directiva de replicación de objetos y se vuelve a crear en el mismo par de contenedores de origen y destino, Azure trata la nueva directiva como una relación de replicación completamente independiente. Se aplica el siguiente comportamiento:
Se genera un nuevo identificador de directiva para la directiva que se vuelve a crear.
Se finalizan las tareas de replicación asociadas a la directiva anterior.
Al contenedor de destino se le asigna un nuevo bloqueo de replicación asociado al nuevo identificador de directiva.
El estado de replicación de la directiva anterior no se reutiliza.
Comportamiento de replicación después de volver a crear una directiva de replicación de objetos
Después de volver a crear la directiva, Azure intenta la replicación de nuevo para blobs aptos y el resultado depende de la disponibilidad del historial de versiones del blob en la cuenta de origen:
Si un blob de origen no tiene ninguna versión anterior disponible en el destino: Azure determina que el blob ya se ha copiado en una directiva anterior. La re-replicación de ese blob no tiene éxito. Solo las nuevas escrituras de blobs (o las nuevas versiones creadas después de volver a crear la directiva) se replican correctamente.
Si un blob de origen tiene versiones anteriores disponibles en el destino: Azure puede volver a replicar el blob. El blob se copia de nuevo en el destino como una nueva versión. Esto permite volver a replicar correctamente los blobs existentes sin incoherencia de datos.
Pasos siguientes