Utilice este procedimiento si "Se aplica a" está configurado en ninguna de las reglas de DFW (esto significa que A "Se aplica a" se le asigna el valor "DFW").

Nota: Para obtener más información sobre la migración de NSX-V a NSX-T, consulte el artículo de la base de conocimientos https://kb.vmware.com/s/article/56991.

En la migración de NSX-T a NSX-V, es posible que no se pueda migrar una máquina virtual de carga de trabajo de vuelta a NSX-V debido a que el filtro de firewall distribuido en NSX-T siempre es más alto que en NSX-V. La solución alternativa es colocar la máquina virtual de carga de trabajo en la lista de exclusión de NSX-T antes de aplicar vMotion.

Requisitos previos

  • Asegúrese de que:
    • vSphere vMotion está habilitado en el adaptador de VMkernel de cada host del clúster implicado en esta migración. Para conocer paso a paso cómo habilitar vMotion en el adaptador de VMkernel, consulte la documentación del producto vSphere.
    • El host de destino en NSX-T tiene suficientes recursos para recibir las máquinas virtuales migradas.
    • Los hosts de origen y de destino se encuentran en un estado operativo. Solucione los problemas con los hosts, incluidos los estados desconectados.

Para obtener más información sobre vMotion, consulte Migración con vMotion en la documentación de producto de vSphere.

Procedimiento

  1. Obtenga el UUID de instancia de todas las máquinas virtuales que va a migrar.
    Los UUID de instancia son necesarios cuando se realiza la llamada API en el siguiente paso. Consulte el ejemplo en la parte inferior de esta sección sobre cómo obtener el UUID de instancia de una máquina virtual.
  2. Ejecute la siguiente solicitud de API POST:
    POST https://{nsxt-mgr-ip}/api/v1/migration/vmgroup?action=pre_migrate

    Esta API crea un puerto de segmento lógico (VIF) que se corresponde con el UUID de instancia de máquina virtual de cada máquina virtual de carga de trabajo de NSX-V del grupo de máquinas virtuales que se va a migrar a través del puente de capa 2 al segmento de superposición de NSX-T. Para ver un ejemplo de un cuerpo de solicitud de esta API, consulte la sección Proceso de migración lift-and-shift del artículo de NSX Tech Zone.

  3. Ejecute el API GetVmGroupExecutionDetails. Esta API está disponible a partir de NSX-T 3.2.2
    Ejecute el API GetVmGroupExecutionDetails para obtener el resultado de la llamada API previa a la migración con el mismo group_id (y federation_site_id para la migración entre VC). El resultado incluye una lista "logical_switch_id_to_vm_instance_id_and_vnics_map" y una lista opcional "failedVmInstanceIds", que incluye los UUID de las máquinas virtuales que no se encuentran en el VC de origen. Por ejemplo:
    GET /api/v1/migration/vmgroup/actions/get_vm_group_execution_details?group_id=<group-id>&federation_site_id=<site_id>
    Response:
    {
      "logical_switch_id_to_vm_instance_id_and_vnics_map":[
        {
          "ls_id":"36885723-7581-4696-a195-ef83851dc35f",
          "vm_and_vnics_mapping":[
            {
              "vm_instance_id":"52199e21-6aab-26e4-8c82-069a17d67667",
              "vnics":[
                "4001"
              ]
            },
            {
              "vm_instance_id":"52630e5d-ce6f-fac0-424c-4aa4bdf6bd56",
              "vnics":[
                "4001"
              ]
            }
          ]
        }
      ],
      "failedVmInstanceIds":[
        "501557f6-2197-1fe8-14e5-89898cee5fec"
      ]
    }
  4. Siga el código pseudo python a continuación para escribir un script para migrar las máquinas virtuales con vMotion.

    Para ver un ejemplo, consulte la sección Ejemplos de scripts Python del artículo de NSX Tech Zone.

        define _get_nsx_networks_in_host(self, host):
            ls_id_to_nsx_pgs_map = {}
            for net in host.network:
                if isinstance(net, vim.dvs.DistributedVirtualPortgroup):
                    if hasattr(net.config, 'backingType'):
                        if net.config.backingType == 'nsx' and net.config.logicalSwitchUuid:
                            ls_id_to_nsx_pgs_map[net.config.logicalSwitchUuid] =\
                               [net.key, net.config.distributedVirtualSwitch.uuid]
                elif isinstance(net, vim.OpaqueNetwork):
                    if net.summary.opaqueNetworkType == 'nsx.LogicalSwitch':
                        ls_id_to_nsx_pgs_map[net.summary.opaqueNetworkId] = [None, net.summary.opaqueNetworkId]
            return ls_id_to_nsx_pgs_map
     
         define _get_vms_vnic_to_ls_id_map(self, logical_switch_id_to_vm_instance_id_and_vnics_map):
            vm_uuid_2_vnics_map = {}
            for ls_id_2_vm_vnics in logical_switch_id_to_vm_instance_id_and_vnics_map:
                ls_id = ls_id_2_vm_vnics['ls_id']
                for vm_vnics in ls_id_2_vm_vnics['vm_and_vnics_mapping']:
                    vnic_2_ls_id = vm_uuid_2_vnics_map.get(vm_vnics['vm_instance_id'], {})
                    for vnic in vm_vnics['vnics']:
                        vnic_2_ls_id[vnic] = ls_id
                    vm_uuid_2_vnics_map[vm_vnics['vm_instance_id']] = vnic_2_ls_id
            return vm_uuid_2_vnics_map
        
        def _get_nsxt_vnic_spec(self, device, dvpg_key, switch_id, vif_id):
            If dvpg_key:
                vdsPgConn = vim.dvs.PortConnection()
                vdsPgConn.portgroupKey = dvpg_key
                vdsPgConn.switchUuid = switch_id
                device.backing = vim.vm.device.VirtualEthernetCard.DistributedVirtualPortBackingInfo()
                device.backing.port = vdsPgConn
            else:
                device.backing = vim.vm.device.VirtualEthernetCard.OpaqueNetworkBackingInfo()
                device.backing.opaqueNetworkId = switch_id
                device.backing.opaqueNetworkType = 'nsx.LogicalSwitch'
            device.externalId = vif_id
            dev_spec = vim.Vm.Device.VirtualDeviceSpec()
            dev_spec.SetOperation(vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
            dev_spec.SetDevice(device)
            return dev_spec
        
        def _migrate_vm(self, vmObject, vnic_2_ls_id_map, ls_id_to_nsx_pgs_map):
            devices = vmObject.config.hardware.device
            nic_devices = [device for device in devices if isinstance(device, vim.Vm.device.VirtualEthernetCard)]
            vnic_changes = []
            for device in nic_devices:
                ls_id = vnic_2_ls_id_map.get(str(device.key))
                if ls_id:
                    vif_id = vmObject.config.instanceUuid + ":" + str(device.key)
                    nsx_pg = ls_id_to_nsx_pgs_map.get(ls_id)
                    vnic_spec = self._get_nsxt_vnic_spec(device, nsx_pg[0], nsx_pg[1], vif_id)
                    vnic_changes.append(vnic_spec)
            relocate_spec = vim.Vm.RelocateSpec()
            relocate_spec.SetDeviceChange(vnic_changes)
            # set other fields in the relocate_spec
            vmotion_task = vmObject.Relocate(relocate_spec)
            WaitForTask(vmotion_task)
        
        
        vm_uuid_2_vnics_map = self._get_vms_vnic_to_ls_id_map(logical_switch_id_to_vm_instance_id_and_vnics_map)
        for vm_uuid, vnic_2_ls_id_map in vm_uuid_2_vnics_map.items():
            # get the vmObject by the vm_uuid
            # find a target host that has all the networks needed by this VM
            ls_id_to_nsx_pgs_map = self._get_nsx_networks_in_host(host)
            self._migrate_vm(vmObject, vnic_2_ls_id_map, ls_id_to_nsx_pgs_map)
  5. Aplique las etiquetas de seguridad y la pertenencia estática de las máquinas virtuales a las máquinas virtuales migradas.
    POST https://{nsxt-mgr-ip}/api/v1/migration/vmgroup?action=post_migrate
    El endpoint de la API vmgroup con la acción post_migrate aplica las etiquetas de seguridad de NSX-V a las máquinas virtuales de carga de trabajo migradas en el segmento de superposición de NSX-T.

    Para ver un ejemplo de un cuerpo de solicitud de esta API, consulte la sección Proceso de migración lift-and-shift del artículo de NSX Tech Zone.

  6. Finalice la infraestructura para completar la migración.
    POST https://{nsxt-mgr-ip}/api/v1/migration?action=finalize_infra
    Esta API de migración elimina cualquier configuración de objeto temporal que se haya creado durante la migración y garantiza que la infraestructura de NSX-T esté en un estado limpio. Por ejemplo, los conjuntos de direcciones IP temporales se eliminan de los grupos.

    Esta API POST no tiene un cuerpo de solicitud.

  7. Compruebe que los elementos de configuración esperados se hayan migrado al entorno de NSX-T.
    Por ejemplo, compruebe que las siguientes configuraciones se hayan migrado correctamente:
    • Reglas de firewall distribuido definidas por el usuario
    • Todos los objetos de agrupación, como conjuntos de direcciones IP, grupos, etiquetas, etc.
    • Los miembros efectivos se muestran en los grupos dinámicos.
    • Las etiquetas se aplican a las máquinas virtuales de carga de trabajo migradas.
  8. En la página Migrar cargas de trabajo, haga clic en Finalizar.
    Aparece un cuadro de diálogo para confirmar que la migración ha finalizado. Cuando finaliza la migración, se borran todos los detalles de esta. A partir de ese momento ya no podrá revisar la configuración de esta migración. Por ejemplo, las entradas que se realizaron en la página Resolver configuración.

Ejemplo: Obtener UUID de instancia de máquina virtual de vCenter MOB

En este ejemplo, se muestra cómo obtener o confirmar el UUID de una instancia de máquina virtual desde explorador de objetos administrados (MOB) de vCenter Server en http://{IP-de-vCenter}/mob. También puede obtener o confirmar el UUID de instancia de una máquina virtual ejecutando una llamada API a vSphere.

  1. En un navegador web, acceda al explorador de objetos administrados de vCenter en http//{dirección-IP-vCenter}/mob.
  2. Haga clic en content (contenido).
  3. Busque rootFolder en la columna Name (Nombre) y, a continuación, haga clic en el vínculo correspondiente en la columna Value (Valor). Por ejemplo, group-d1.
  4. Busque childEntity en la columna Name (Nombre) y, a continuación, haga clic en el vínculo correspondiente en la columna Value (Valor). Por ejemplo, Datacenter-21.
  5. Busque hostFolder en la columna Name (Nombre) y, a continuación, haga clic en el vínculo correspondiente en la columna Value (Valor). Por ejemplo, group-h23.
  6. Busque childEntity en la columna Name. La columna Value correspondiente contiene vínculos a clústeres de hosts. Haga clic en el enlace del clúster de hosts apropiado. Por ejemplo, domain-c33.
  7. Busque host en la columna Name. En la columna Value correspondiente se indican los hosts de ese clúster por MOID de vCenter y nombre de host. Haga clic en el vínculo de host adecuado, por ejemplo, host-32.
  8. Busque vm en la columna Name. En la columna Value correspondiente, se indican las máquinas virtuales por MOID de vCenter y nombre de host. Por ejemplo, vm-216 (web-01a). Haga clic en la máquina virtual que le interese.
  9. Busque config en la columna Name. Haga clic en config en la columna Value.
  10. Busque instanceUuid en la columna Name. La columna Value correspondiente incluirá el UUID de la instancia de la máquina virtual. Por ejemplo, 502e71fa-1a00-759b-e40f-ce778e915f16.

Qué hacer a continuación

Después de la migración de las máquinas virtuales de carga de trabajo, podrá eliminar el puente de capa 2.