На каждом из двух компьютеров с Ubuntu я установил KVM и создал несколько виртуальных машин. Все виртуальные машины на каждом ПК должны видеть друг друга, поэтому я не мог использовать частный IP-адрес, назначенный им KVM и AFAIK, который требует создания моста, чтобы их IP-адреса были видны друг другу. Эти две машины связаны друг с другом с помощью маршрутизатора.

Теперь я хочу перенести одну из этих виртуальных машин с одной стороны на другую. Но IP-адрес, который определяется вначале, должен быть постоянным. Можно ли сделать живую миграцию с этими условиями? Если нет, или вы знаете другие лучшие способы сделать это, пожалуйста, сообщите.

1 ответ1

0

Живая миграция - это процесс перемещения работающей виртуальной машины (ВМ) с одного физического сервера на другой, не нарушая доступность виртуальной машины для пользователей. Целью динамической миграции виртуальной машины является обеспечение возможности обслуживания или обновления виртуальной машины без каких-либо простоев пользователей виртуальной машины во время миграции. Живая миграция также известна как плавная живая миграция, когда конечный пользователь не видит заметных простоев во время процесса миграции.

Требование:

  1. Поддержка аппаратной виртуализации.
  2. Используйте процессоры от одного производителя. Например, все AMD или все Intel.
  3. Принадлежит либо к одному домену Active Directory, либо к доменам, которые доверяют друг другу.
  4. Виртуальные машины должны быть настроены на использование виртуальных жестких дисков или виртуальных дисков Fibre Channel (без физических дисков).

Обзор:

  1. Произведена настройка живой миграции. На этапе настройки динамической миграции исходный сервер создает соединение с целевым сервером. Это соединение передает данные конфигурации виртуальной машины на конечный сервер. Скелетная виртуальная машина настроена на конечном сервере, а память выделена для целевой виртуальной машины.

  2. Страницы памяти передаются от исходного узла к целевому узлу. На втором этапе динамической миграции память, выделенная для мигрирующей виртуальной машины, копируется по сети на конечный сервер. Эта память называется «рабочим набором» переносимой виртуальной машины. Страница памяти составляет 4 КБ.

  3. Измененные страницы переносятся. Третий этап динамической миграции - это процесс копирования памяти, который дублирует оставшиеся измененные страницы памяти для «тестовой виртуальной машины» на конечном сервере. Исходный сервер передает состояние процессора и устройства виртуальной машины на конечный сервер.

  4. Дескриптор хранилища перемещается с исходного сервера на конечный сервер. На четвертом этапе динамической миграции управление хранилищем, связанным с «тестовой виртуальной машиной», например любыми файлами виртуального жесткого диска или физическим хранилищем, подключенным через виртуальный адаптер Fibre Channel, передается на сервер назначения.

  5. Виртуальная машина подключена к сети на конечном сервере. На пятом этапе динамической миграции конечный сервер теперь имеет обновленный рабочий набор для «тестовой виртуальной машины», а также доступ к любому хранилищу, используемому «тестовой виртуальной машиной». В этот момент «тестовая виртуальная машина» возобновляется.

  6. Чистка сети происходит. На последнем этапе динамической миграции перенесенная виртуальная машина работает на конечном сервере. В этот момент сообщение отправляется сетевому коммутатору. Это сообщение приводит к тому, что сетевой коммутатор получает новые MAC-адреса перенесенной виртуальной машины, чтобы сетевой трафик к «тестовой виртуальной машине» и обратно мог использовать правильный порт коммутатора.

Следующие переменные могут влиять на скорость живой миграции:

• Количество измененных страниц на виртуальной машине, которую нужно перенести - чем больше количество измененных страниц, тем дольше виртуальная машина будет оставаться в состоянии миграции.

• Доступная пропускная способность сети между исходным и целевым серверами.

• Конфигурация оборудования исходного и конечного серверов.

• Загрузка на исходном и конечном серверах.

• Доступная пропускная способность (сеть или Fibre Channel) между серверами и общим хранилищем.

ШАГИ:

  1. Создание хранилища пулов NFS. Пулы NFS - это ресурсы хранения, предоставляемые хостами OVP, которые используются виртуальными машинами для целей хранения.

    1.1 Настройка каталога NFS Pool. Создайте каталог пула.

    # mkdir -p /export/x86-64-kvm-guest-pool
    

    Отредактируйте /etc /exports, чтобы добавить соответствующую строку экспорта.

    # cat /etc/exports
    /export/x86-64-kvm-guest-pool *(rw,no_subtree_check,insecure,no_root_squash)
    

    Скажите серверу NFS перезагрузить файл конфигурации экспорта.

    # exportfs –a
    

    1.2 Подключиться к гипервизору QEMU.

    # virsh connect qemu:///system
    

    1.3 Загрузите файл конфигурации для пула NFS.

    Перед загрузкой файла конфигурации рекомендуется убедиться, что переменная POOL_HOST содержит полное имя, а не локальное имя, например localhost. Использование полностью определенных имен позволяет виртуальным машинам находить необходимые ресурсы хранения, даже если они переносятся на разные хосты OVP.

    # cat xmlDir/x86-64-kvm-guest-pool.xml
    
    <pool type="netfs">
              <name>x86-64-kvm-guest-pool</name>
               <source>
               <host name='HOST_NAME'/>
                <dir path='/export/x86-64-kvm-guest-pool/'/>
                </source>
                 <target>
                 <path>/export/images/</path>
                </target>
                </pool>
    # virsh pool-define xmlDir/x86-64-kvm-guest-pool.xml
    

    ПРИМЕЧАНИЕ. Создание всех файлов примеров со значениями по умолчанию.

        # libvirt-xml-examples
        # ls
          x86-64-kvm-guest-glusterfs-qcow2.xml x86-64-kvm-guest-local-qcow2.xml
          x86-64-kvm-guest-nfs-qcow2.xml x86-64-kvm-guest-pool
          x86-64-kvm-guest-glusterfs-raw.xml x86-64-kvm-guest-local-raw.xml
          x86-64-kvm-guest-nfs-raw.xml x86-64-kvm-guest-pool.xml
    

    1.4 Запустите пул хранения

         # virsh pool-start x86-64-kvm-guest-pool
    

    Примечание: virsh - это инструмент интерфейса командной строки для управления гостевыми виртуальными машинами и гипервизором. Инструмент командной строки virsh построен на API управления libvirt и работает как альтернатива команде qemu-kvm и графическому приложению virt-manager.

    1.5 Создайте том хранения в пуле хранения x86-64-kvm-guest-pool.

      # virsh vol-create-as x86-64-kvm-guest-pool x86-64-kvm-guest-vda.raw 10G --format raw
    
  2. Запуск виртуальной машины на исходном сервере.

    2.1 Создание Linux-моста для сетевого подключения к виртуальной машине

              brctl addbr <BRIDGE_NAME>
              ifconfig <INTERFACE_NAME> 0.0.0.0 promisc up
              brctl addif <BRIDGE_NAME> <INTERFACE_NAME>
              ifconfig  <BRIDGE_NAME>  <BRIDGE_IP> up
    

    2.2 Отредактируйте файл конфигурации виртуальной машины.

          # cp x86-64-kvm-guest-nfs-raw.xml <NAME_FOR_CONF_FILE>.xml
          #vim <NAME_FOR_CONF_FILE>.xml
    
                    <domain type='kvm'>
                    <name>L2_VM2</name>   -name for VM
    ………
    
        <cpu mode='custom' match='exact'>
                 <model fallback='allow'>Conroe</model>
               <topology sockets='1' cores='3' threads='1'/>  - assign vcpus to VM
               </cpu>
    
         ……..
    
         <devices>
         <emulator>/usr/bin/kvm</emulator>
         <disk type='file' device='cdrom'>
          <driver name='qemu' type='raw'/>
          <source file='….*iso' startupPolicy='optional'>    - mention ISO file
          </source>
          <target dev='hdc' bus='ide'/>
          <readonly/>
          <serial></serial>
          <boot order='1'/>
          <alias name='ide0-1-0'/>
           <address type='drive' controller='0' bus='1' target='0' unit='0'/>
          </disk>
    

    ...... .. -. назначить здесь хранилище, созданное в разделе 1.5 VDA …… .. - назначить имя для моста, созданного в разделе 2.1 - уникально для каждой виртуальной машины

    2.3 Запустить виртуальную машину.

    2.3.1. Подключение к гипервизору QEMU.

     # virsh connect qemu:///system
    

    2.3.2 Загрузите файл конфигурации виртуальной машины.

     #virsh define xmlDir/x86-64-kvm-guest-nfs-raw.xml - created in section 2.2
    

    2.3.3 Запустить ВМ.

    Это первая загрузка виртуальной машины для загрузки образа установщика. Установите гостевой образ.

         #virsh start VM_NAME
    

    Убедитесь, что машина работает. #virsh list Id Name State -------------------------------------------- -------- 8 x86-64-kvm-guest работает может получить доступ к графическому интерфейсу виртуальной машины с помощью сеанса vnc: - порт 5900 vnc.

    2.4.4. После успешного внедрения ОС. Отредактируйте файл конфигурации виртуальной машины.

        <devices>
         <emulator>/usr/bin/kvm</emulator>
         <disk type='file' device='cdrom'>
          <driver name='qemu' type='raw'/>
          <source file='….*iso' startupPolicy='optional'>    - remove ISO file name .
          </source>
          <target dev='hdc' bus='ide'/>
          <readonly/>
          <serial></serial>
          <boot order='1'/>
          <alias name='ide0-1-0'/>
    

    Выполните шаг, указанный в разделе 2.3, чтобы запустить виртуальную машину.

  3. Миграция виртуальной машины.

    В этом упражнении предполагается, что виртуальная машина x86-64-kvm-guest работает на узле OVP SOURCE_HOST и должна быть перенесена в реальном времени на узел OVP TARGET_HOST. Прежде чем приступить к работе с этим разделом, убедитесь, что обе машины доступны друг другу.

    3.1 Создайте мост с тем же именем в TARGET_HOST, которое было создано в разделе 2.1.

    3.2 Включите общий пул NFS на TARGET_HOST.

         # scp xmlDir/x86-64-kvm-guest-pool.xml root@TARGET_HOST_IP:xmlDir.
    

    Следуйте разделу 1.3 и 1.4 раздела Target_HOST.

    3.3 На SOURCE_HOST запустите миграцию.

             # virsh migrate 
              --live \
                --p2p \ // interface name used for migration
              --verbose \
               --x86-64-kvm-guest \
               qemu+tcp://TARGET_HOST/system
    

    Верфий, если миграция прошла успешно. Запустите команду на TARGET_HOST.

     #virsh list
    Id Name State
              ----------------------------------------------------
      8 x86-64-kvm-guest running
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .