Puede configurar la replicación de máquinas virtuales desde un sitio de origen en un sitio de destino mediante las REST API de vSphere Replication.

Requisitos previos

Para configurar una replicación de máquina virtual:
  • Debe registrar su instancia de vSphere Replication en Platform Services Controller (PSC) mediante VRMS Appliance Management Interface o la puerta de enlace de REST API de configuración del dispositivo de VRMS.
  • Debe tener un par de sitios entre los sitios de origen y de destino.

Procedimiento

  1. Para iniciar sesión en el sitio de origen, realice una solicitud POST.
    POST BASE_URL/api/rest/vr/API_VERSION/session

    Introduzca el nombre de usuario y la contraseña en el encabezado HTTP de autorización. Utilice el identificador de sesión devuelto como valor para el encabezado HTTP x-dr-session para todas las llamadas posteriores a la REST API.

  2. Para obtener el identificador de emparejamiento y el identificador de vCenter Server local, realice una solicitud GET.
    GET BASE_URL/api/rest/vr/API_VERSION/pairings/
    Respuesta de ejemplo:
    {
       "pairing_id": "e41c183f-bc55-319b-bf76-8ec83d335074", <----------- Pairing ID
       "local_vc_server": {
          "id": "0a98c22d-a553-47e4-bd56-2844f45d8ef6", <--------------- VC ID
          "url": "https://s2-srm2-219-12.eng.vmware.com:443/sdk",
          "name": "s2-srm2-219-12.eng.vmware.com",
          "server_status": "OK",
          // Other fields are not relevant in this example
    }

    Guarde el identificador de emparejamiento y el identificador de vCenter Server local.

  3. Para obtener los identificadores de máquinas virtuales por par de sitios, realice una solicitud GET.
    GET BASE_URL/api/rest/vr/API_VERSION/pairings/PAIRING_ID/vcenters/VC_GUID/vms

    Guarde el identificador de la máquina virtual para la que desea configurar la replicación.

  4. Para obtener el identificador del servidor de vSphere Replication de destino:
    1. Realice una solicitud POST para iniciar sesión en el sitio de destino.
      POST BASE_URL/api/rest/vr/API_VERSION/pairings/PAIRING_ID/remote-session

      Introduzca el nombre de usuario y la contraseña en el encabezado HTTP de autorización. Asegúrese de que el encabezado HTTP x-dr-session siga presente.

    2. Realice una solicitud GET para obtener todas las instancias de servidor de vSphere Replication Management en emparejamiento.
      GET BASE_URL/api/rest/vr/API_VERSION/pairings/PAIRING_ID/vrs

      Guarde el identificador del servidor de vSphere Replication Management de destino.

    3. Realice una solicitud GET para obtener todos los servidores de vSphere Replication registrados en el servidor de vSphere Replication Management de destino.
      GET BASE_URL/api/rest/vr/API_VERSION/pairings/PAIRING_ID/vrs/VR_ID/replication-servers

      Reemplace el valor de PAIRING_ID por el identificador del emparejamiento y el valor de VR_ID por el identificador del servidor de vSphere Replication Management de destino del paso 4.b.

      Guarde el identificador del servidor de vSphere Replication de destino del resultado.

  5. Para obtener el almacén de datos de destino, realice una solicitud GET.
    GET BASE_URL/api/rest/vr/API_VERSION/pairings/PAIRING_ID/vcenters/VC_ID/datastores

    Reemplace el valor VC_ID por el identificador de la instancia de vCenter Server de destino y guarde la respuesta.

  6. Para obtener el identificador de la directiva de almacenamiento preferida, realice una solicitud GET.
    GET BASE_URL/api/rest/vr/API_VERSION/pairings/PAIRING_ID/vcenters/VC_ID/storage-policies

    Reemplace el valor de VC_ID por el identificador de la instancia de vCenter Server de destino y guarde el identificador de directiva de almacenamiento de destino preferida.

  7. Para obtener información sobre los discos de una máquina virtual, realice una solicitud GET.
    GET BASE_URL/api/rest/vr/API_VERSION/pairings/PAIRING_ID/vcenters/VC_ID/vms/VM_ID/disks

    Reemplace el valor de VC_ID por el identificador de la instancia de vCenter Server de origen y reemplace el valor de VM_ID por el identificador de la máquina virtual que obtuvo en el paso 3 y guarde la respuesta.

  8. Para configurar la replicación, realice una solicitud POST.
    POST BASE_URL/api/rest/vr/API_VERSION/pairings/PAIRING_ID/replications
    Ejemplo de cuerpo de solicitud de configuración de replicación:
    [
       {
          "auto_replicate_new_disks": true,
          "rpo": 60,
          "lwd_encryption_enabled": false,
          "mpit_days": 0,
          "mpit_enabled": false,
          "mpit_instances": 0,
          "network_compression_enabled": false,
          "quiesce_enabled": false,
          // You get this from Step 3.
          "vm_id": "VirtualMachine:vm-38:fa655d23-b8ac-4eb1-8351-129954807e2c",
          //You get this from Step 4.
          "target_replication_server_id": "HmsRemoteHbrServer:HBRSRV-26c6bd13-1fac-4d04-adcb-2700a258025c:b41aa649-bd9b-45e0-9d41-a7a16c0b0946",
          "target_vc_id": "54d0e5ab-3e9d-4372-9f27-036cf1c24639"
          "disks": [
             {
                //  You get this from Step 5.
                "destination_datastore_id": "Datastore:datastore-18:54d0e5ab-3e9d-4372-9f27-036cf1c24639",
                // Options for destination_disk_format parameter: SAME_AS_SOURCE, SAME_AS_PRIMARY, AS_DEFINED_IN_PROFILE, FLAT, THICK, NATIVE_THICK, THIN, RDM.
                "destination_disk_format": "SAME_AS_SOURCE",
                "enabled_for_replication": true,
                "use_seeds": false,
                "destination_path": "target_folder/test-vm-1",
                // You get this from Step 6.
                "destination_storage_policy_id": "4b97756b-3c50-481a-a105-d6a7b1507f9a",
               //  You got this from Step 7.
                "vm_disk" : {
                    "vm_id": "VirtualMachine:vm-38:fa655d23-b8ac-4eb1-8351-129954807e2c",
                    "device_key": 2000,
                    "is_vm_home": false,
                    "encrypted": false,
                    "capacity": 524288,
                    "source_disk_format": "THIN",
                    "source_path": {
                        "datastore_id": "Datastore:datastore-17:fa655d23-b8ac-4eb1-8351-129954807e2c",
                        "datastore_name": "local",
                        "path": "test-vm-1",
                        "filename": "test-vm-1.vmdk"
                    },
                    "source_storage_policy_name": "Datastore Default",
                    "source_storage_policy_id": null,
                    "label": "Hard disk 1",
                    "controller_key": 1000,
                    "controller_label": "SCSI controller 0",
                    "supported_for_replication": true
                }
             },
             {
                //  You get this from Step 5.
                "destination_datastore_id": "Datastore:datastore-18:54d0e5ab-3e9d-4372-9f27-036cf1c24639",
                "destination_disk_format": "SAME_AS_SOURCE",
                "enabled_for_replication": true,
                "use_seeds": false,
                "destination_path": "target_folder/test-vm-1",
                //  You get this from Step 6.
                "destination_storage_policy_id": "4b97756b-3c50-481a-a105-d6a7b1507f9a",
                // You get this from Step 7.
                "vm_disk" : {
                    "vm_id": "VirtualMachine:vm-38:fa655d23-b8ac-4eb1-8351-129954807e2c",
                    "device_key": 0,
                    "is_vm_home": true,
                    "encrypted": false,
                    "capacity": 0,
                    "source_disk_format": null,
                    "source_path": {
                        "datastore_id": "Datastore:datastore-17:fa655d23-b8ac-4eb1-8351-129954807e2c",
                        "datastore_name": "local",
                        "path": "test-vm-1",
                        "filename": "test-vm-1.vmx"
                    },
                    "source_storage_policy_name": "Datastore Default",
                    "source_storage_policy_id": null,
                    "label": "VM home",
                    "controller_key": 0,
                    "controller_label": null,
                    "supported_for_replication": false
                }
             }
          ]
       }
    ]