Utilisez cette procédure si l'option « Appliqué à » est configurée dans l'une des règles DFW (cela signifie que cette option n'est pas définie sur « DFW »).

Note : Pour la migration de NSX-V vers NSX-T, consultez l'article de la base de connaissances https://kb.vmware.com/s/article/56991 pour plus d'informations.

Pour la migration de NSX-T vers NSX-V, la migration d'une machine virtuelle de charge de travail vers NSX-V peut ne pas fonctionner, car le filtre de pare-feu distribué dans NSX-T est toujours plus élevé que dans NSX-V. Pour résoudre ce problème, placez la machine virtuelle de charge de travail dans la liste d'exclusion de NSX-T avant un déplacement par vMotion.

Conditions préalables

  • Vérifiez que :
    • vSphere vMotion est activé sur l'adaptateur VMkernel de chaque hôte dans le cluster impliqué dans cette migration. Pour obtenir des instructions détaillées sur l'activation de vMotion sur l'adaptateur VMkernel, reportez-vous à la documentation du produit vSphere.
    • L'hôte de destination dans NSX-T dispose de ressources suffisantes pour recevoir les machines virtuelles migrées.
    • Les hôtes source et de destination sont dans un état opérationnel. Résolvez les problèmes impliquant des hôtes, y compris les états déconnectés.

Pour plus d'informations sur vMotion, consultez Migration avec vMotion dans la documentation du produit vSphere.

Procédure

  1. Obtenez l'UUID d'instance de toutes les VM que vous prévoyez de migrer.
    Les UUID d'instances sont nécessaires lorsque vous effectuez l'appel d'API à l'étape suivante. Reportez-vous à l'exemple en bas de cette section pour savoir comment obtenir l'UUID d'instance d'une VM.
  2. Exécutez la demande d'API POST suivante :
    POST https://{nsxt-mgr-ip}/api/v1/migration/vmgroup?action=pre_migrate

    Cette API crée un port de segment logique (VIF) correspondant à l'UUID d'instance de machine virtuelle de chaque machine virtuelle de charge de travail NSX-V dans le groupe de machines virtuelles que vous allez migrer via le pont de couche 2 vers le segment de superposition de NSX-T. Pour obtenir un exemple de corps de demande de cette API, reportez-vous à la section Processus de migration « lift-and-shift » dans l'article de la zone technique de NSX.

  3. Appelez l'API GetVmGroupExecutionDetails. Cette API est disponible à partir de NSX-T 3.2.2.
    Appelez l'API GetVmGroupExecutionDetails pour obtenir le résultat de l'appel d'API préalable à la migration avec le même group_id (et le federation_site_id pour la migration cross-VC). Le résultat inclut une liste « logical_switch_id_to_vm_instance_id_and_vnics_map » et une liste « failedVmInstanceIds » facultative qui inclut les UUID des VM introuvables dans l'instance de VC source. Par exemple :
    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. Suivez le code pseudo Python ci-dessous pour écrire un script afin d'effectuer une migration par vMotion des machines virtuelles.

    Pour obtenir un exemple, reportez-vous à la section Exemples de scripts python de l'article de la zone technique de NSX.

        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. Appliquez les balises de sécurité et l'appartenance statique de VM aux machines virtuelles migrées.
    POST https://{nsxt-mgr-ip}/api/v1/migration/vmgroup?action=post_migrate
    Le point de terminaison de l'API vmgroup avec l'action post_migrate applique les balises de sécurité NSX-V aux machines virtuelles de charge de travail migrées sur le segment de superposition NSX-T.

    Pour obtenir un exemple de corps de demande de cette API, reportez-vous à la section Processus de migration « lift and shift » dans l'article de la zone technique de NSX.

  6. Finalisez l'infrastructure pour terminer la migration.
    POST https://{nsxt-mgr-ip}/api/v1/migration?action=finalize_infra
    Cette API de migration supprime toutes les configurations d'objets temporaires qui ont été créées lors de la migration, et garantit que l'infrastructure NSX-T est dans un état propre. Par exemple, les ensembles d'adresses IP temporaires sont supprimés des groupes.

    Cette API POST n'a pas de corps de demande.

  7. Vérifiez que tous les éléments de configuration prévus ont été migrés vers l'environnement NSX-T.
    Par exemple, vérifiez si les configurations suivantes sont correctement migrées :
    • Règles de pare-feu distribué définies par l'utilisateur.
    • Tous les regroupements d'objets, tels que les ensembles d'adresses IP, les groupes, les balises, etc.
    • Les membres effectifs s'affichent dans les groupes dynamiques.
    • Les balises sont appliquées aux machines virtuelles de charge de travail migrées.
  8. À la page Migrer les charges de travail, cliquez sur Terminer.
    Une boîte de dialogue s'affiche pour vous permettre de confirmer que vous souhaitez terminer la migration. Si vous terminez la migration, tous les détails de celle-ci s'effaceront. Vous ne pourrez plus réviser ses paramètres, Par exemple, quelles entrées ont été effectuées sur la page Résoudre la configuration.

Exemple : Obtention de l'UUID d'instance de VM à partir du MOB vCenter

Cet exemple montre comment obtenir ou confirmer l'UUID d'instance d'une VM à partir de vCenter Server Managed Object Browser (MOB) à l'adresse http://{vCenter-IP-Address}/mob. Vous pouvez également obtenir ou confirmer l'UUID d'instance d'une VM en effectuant un appel d'API à vSphere.

  1. Dans un navigateur Web, entrez vCenter Managed Object Browser à l'adresse http//{vCenter-IP-Address}/mob.
  2. Cliquez sur Contenu.
  3. Recherchez rootFolder dans la colonne Nom, puis cliquez sur le lien correspondant dans la colonne Valeur. Par exemple, group-d1.
  4. Recherchez childEntity dans la colonne Nom, puis cliquez sur le lien correspondant dans la colonne Valeur. Par exemple, datacenter-21.
  5. Recherchez hostFolder dans la colonne Nom, puis cliquez sur le lien correspondant dans la colonne Valeur. Par exemple, group-h23.
  6. Recherchez childEntity dans la colonne Nom. La colonne valeur correspondante contient des liens vers les clusters d'hôtes. Cliquez sur le lien du cluster d'hôtes approprié. Par exemple, domain-c33.
  7. Recherchez host dans la colonne Nom. La colonne Valeur correspondante répertorie les hôtes de ce cluster par MOID vCenter et nom d'hôte. Cliquez sur le lien d'hôte approprié (par exemple, host-32).
  8. Recherchez vm dans la colonne Nom. La colonne Valeur correspondante répertorie les machines virtuelles par MOID vCenter et nom d'hôte. Par exemple, vm-216 (web-01a). Cliquez sur la VM qui vous intéresse.
  9. Recherchez config dans la colonne Nom. Cliquez sur config dans la colonne Valeur.
  10. Recherchez instanceUuid dans la colonne Nom. La colonne Valeur correspondante répertorie l'UUID de l'instance de machine virtuelle. Par exemple, 502e71fa-1a00-759b-e40f-ce778e915f16.

Que faire ensuite

Une fois la migration des VM de charge de travail effectuée, vous pouvez supprimer le pont de couche 2.