Инструменты пользователя

Инструменты сайта


drbd_xen_live_migration

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
drbd_xen_live_migration [2013/06/04 14:58]
metallic [Настройка DRBD]
drbd_xen_live_migration [2022/03/25 17:00] (текущий)
Строка 96: Строка 96:
                   # after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork                   # after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork
           }           }
 +  
           syncer {           syncer {
                   # rate after al-extents use-rle cpu-mask verify-alg csums-alg                   # rate after al-extents use-rle cpu-mask verify-alg csums-alg
 +  
                   # Максимальная скорость синхронизации(МБ/сек)                   # Максимальная скорость синхронизации(МБ/сек)
                   rate 100M;                   rate 100M;
           }           }
 +  
   }   }
  
Строка 183: Строка 183:
  
   cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----   cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
 +   
 +<note tip> 
 +Можно обойтись без синхронизации, если диски пустые или имеют одинаковый набор данных: 
 +  # drbdadm -- --clear-bitmap new-current-uuid Wheezy 
 +После выполнения этой команды ресурс на обоих узлах сразу перейдет в состояние UpToDate без синхронизации.   
 +</note>
 ===== Настройка XEN ===== ===== Настройка XEN =====
 К текущему моменту у нас один узел работает в режиме мастера, если мы не перезагружали систему. Если же была перезагрузка, то оба узла работают в режиме слейв, тогда любой из них нужно перевести в режим мастер, для первоначальной установки DomU. Делается это командой: К текущему моменту у нас один узел работает в режиме мастера, если мы не перезагружали систему. Если же была перезагрузка, то оба узла работают в режиме слейв, тогда любой из них нужно перевести в режим мастер, для первоначальной установки DomU. Делается это командой:
  
-# drbdadm primary Wheezy+  # drbdadm primary Wheezy
  
-Теперь отформатируем и примонтируем диск(на мастере):+Теперь устанавливаем гостевую систему с помощью утилит XEN методом debootstrap(для простоты устанавливаем без swap-раздела, а в реальной жизне нужно указать доп. параметр, указывающий на устройство, которое будет использовано в качестве swap-диска):
  
-  # mkfs.ext3 /dev/drbd1 +  # xen-create-image --hostname=Wheezy --memory=512mb --vcpus=1 --dhcp --pygrub --dist=wheezy --mirror=http://mirror.yandex.ru/debian/ --fs=ext4 --image-dev=/dev/drbd1 --noswap --output=/etc/xen/virtuals
-  # mount /dev/drbd1 /mnt+
  
 +  * **hostname** - имя хоста, которое будет задано установленной системе
 +  * **memory** - кол-во оперативной памяти, которое будет выделено гостю (потом можно изменить)
 +  * **vcpus** - кол-во процессоров(ядер), которое будет выделено гостю (потом можно изменить)
 +  * **dhcp** - указываем, что гость будет получать настройки сети автоматически, после установки уже можем сконфигурировать сами, как хотим
 +  * **pygrub** - указываем, что будем использовать псевдозагрузчик, который будет выполнять загрузку ядра гостевой ОС
 +  * **dist** - кодовое имя устанавливаемого дистрибутива, список поддерживаемых можно посмотреть тут /usr/lib/xen-tools
 +  * **mirror** - зеркало, откуда брать установочные файлы (понятное дело, должен быть доступ к интернету на время установки)
 +  * **fs** - файловая система для гостевой ОС
 +  * **image-dev** - этим параметром указываем, что у нас уже есть устройство для установки гостевой ОС и его нужно использовать целиком
 +  * **noswap** - уже сказано, что для теста ставим без раздела подкачки
 +  * **output** - указываем каталог, в который сгенерится файл конфигурации нашей виртуалки
 +
 +После выполнения команды, мы должны увидеть нечто подобное:
 +
 +  WARNING
 +  -------
 +  
 +    You appear to have a missing vif-script, or network-script, in the
 +   Xen configuration file /etc/xen/xend-config.sxp.
 +  
 +    Please fix this and restart Xend, or your guests will not be able
 +   to use any networking!
 +  
 +  
 +  General Information
 +  --------------------
 +  Hostname       :  Wheezy
 +  Distribution   :  wheezy
 +  Mirror         :  http://mirror.yandex.ru/debian/
 +  Root Device    :  /dev/drbd1
 +  Partitions     :  Image type     :  full
 +  Memory size    :  512mb
 +  Kernel path    :  /boot/vmlinuz-3.2.0-4-amd64
 +  Initrd path    :  /boot/initrd.img-3.2.0-4-amd64
 +  
 +  Networking Information
 +  ----------------------
 +  IP Address     : DHCP [MAC: 00:16:3E:8A:B6:15]
 +  
 +  
 +  Creating ext4 filesystem on /dev/drbd1
 +  Done
 +  Installation method: debootstrap
 +  Done
 +  
 +  Running hooks
 +  Done
 +  
 +  No role scripts were specified.  Skipping
 +  
 +  Creating Xen configuration file
 +  Done
 +  
 +  No role scripts were specified.  Skipping
 +  All done
 +  
 +  
 +  Logfile produced at:
 +           /var/log/xen-tools/Wheezy.log
 +  
 +  Installation Summary
 +  ---------------------
 +  Hostname        :  Wheezy
 +  Distribution    :  wheezy
 +  IP-Address(es)  :  dynamic
 +  RSA Fingerprint :  e6:e6:77:3c:1f:b2:a0:d8:d9:15:db:b7:a7:1a:32:9a
 +  Root Password   :  _тут_будет_пароль_root_
 +
 +Смотрим что нам за конфиг нагенерили:
 +
 +  bootloader = '/usr/lib/xen-4.1/bin/pygrub'
 +  
 +  vcpus       = '1'
 +  memory      = '512'
 +  
 +  root        = '/dev/xvda2 ro'
 +  disk        = [ 'phy:/dev/drbd1,xvda2,w', ]
 +  
 +  name        = 'Wheezy'
 +  
 +  dhcp        = 'dhcp'
 +  vif         = [ 'mac=00:16:3E:8A:B6:15' ]
 +  
 +  on_poweroff = 'destroy'
 +  on_reboot   = 'restart'
 +  on_crash    = 'restart'
 +
 +Пробуем запустить для проверки работоспособности(с подключением к консоле)
 +
 +  # xm create -c /etc/xen/virtuals/Wheezy
 +  
 +Если все получилось, виртуальная машина должна запуститься и мы увидим ее консоль. Логинимся и завершаем работу виртуалки. (Отключиться от консоли Ctrl + ]).
 +
 +Итак, виртуалка работает, переводим на обоих узлах drbd-ресурс виртуалки в режим secondary. Теперь в конфиге виртуалки нужно поправить параметры жесткого диска, заменить тип phy(физическое устройство) на drbd, также вместо указания пути к блочному устройству, нужно указать имя drbd-ресурса(Wheezy):
 +
 +  disk        = [ 'drbd:Wheezy,xvda2,w', ]
 +
 +Что такое drbd-тип устройства в XEN? В каталоге /etc/xen/scripts есть различные скрипты виртуальных устройств, в том числе block-drbd. С помощью этого скрипта, drbd-ресурс узла, на котором выполняется запуск виртуальной машины, переходит в режим primary автоматически и обратно в secondary, когда виртуальная машина прекращает выполнение. Кроме этого, скрипт сам передает виртуальной машине информацию о пути к блочному устройству. Понятное дело, подобных устройств в конфигурации виртуалки может быть больше, чем одно.
 +
 +Теперь пробуем снова запустить виртуалку, если все прошло корректно, мы должны увидеть ее в списке запущенных гостей:
 +
 +  # xm list
 +  Name                                        ID   Mem VCPUs      State   Time(s)
 +  Domain-0                                      1383         r-----    772.7
 +  Wheezy                                         512         -b----     14.1
 +
 +А drbd-устройство на этом узле должно быть в режиме primary(хотя если это было бы не так, то виртуалка не запустилась)
 +
 +  # cat /proc/drbd
 +  version: 8.3.11 (api:88/proto:86-96)
 +  srcversion: 41C52C8CD882E47FB5AF767
 +  
 +   1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
 +      ns:328 nr:0 dw:328 dr:664 al:6 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
 +
 +Ну и самое интересное, то, ради чего, все это городили. Живая миграция без остановки работы виртуалки ни на секунду. Правим на обоих узлах конфиг /etc/xen/xend-config.sxp
 +
 +  # Разрешаем живую миграцию
 +  (xend-relocation-server yes)
 +  
 +  # Разрешаем живую миграцию для любой виртуалки(можно указать список, кому можно)
 +  (xend-relocation-hosts-allow '')
 +
 +Перезапускаем XEN
 +
 +  # /etc/init.d/xen restart
 +  
 +Посе перезапуска оба узла должны слушать порт 8002.
 +
 +Сама миграция выполняется очень просто, одной командой:
 +
 +  # xm migrate --live Wheezy 192.168.1.2
 +
 +  * **Wheezy** - имя виртуалки XEN
 +  * **192.168.1.2** - адрес(или имя) ноды, на которую мигрируем
 +
 +Если все работает корректно, то через некоторое время(от нескольких секунд до нескольких минут) виртуальная машина переедет на второй узел и продолжит выполнятся там, также на втором узле drbd-ресурс перейдет в режим primary, на первом узле в secondary.
 +
 +===== Аппаратная виртуализация =====
 +Если используется полностью аппаратная виртуализация, например для запуска windows-систем, то тут есть одна особенность: не поддерживается использование в качестве типа устройств drbd. Т.е. в конфигурации виртуальной машины нужно указывать путь к блончному устройству(например /dev/drbd2). Соответственно никакой скрипт нам теперь не поможет перевести drbd-ресурс в primary режим. Соотвественно в случае аппаратной виртуализации для поддержки живой миграции нужно на обоих узлах держать drbd-ресурс в режиме primary всегда. В остальном все работает точно также, как описано выше.
 +
 +Пример виртуальной машины для запуска Windows 2012 Server (или любой другой системы с аппаратной виртуализацией):
 +
 +  kernel = "/usr/lib/xen-4.1/boot/hvmloader"
 +  builder='hvm'
 +  memory = 2048
 +  name = "Win2012"
 +  vcpus=1
 +  acpi=1
 +  apic=1
 +  device_model = '/usr/lib/xen-4.1/bin/qemu-dm'
 +  
 +  vif = [ 'type=ioemu, bridge=br0' ]
 +  disk = [ 'phy:/dev/drbd2,ioemu:hda,w', 'file:/home/WindowsServer2012_RU_STD_TRIAL.ISO,hdc:cdrom,r']
 +  
 +  # boot on floppy (a), hard disk (c) or CD-ROM (d)
 +  boot="c"
 +  
 +  usbdevice='tablet'
 +  
 +  vnc=1
 +  vncunused=0
 +  vnclisten = '127.0.0.1'
 +  vncdisplay=0
 +  vncconsole=0
 +  vncpasswd=''
 +  
 +  sdl=0
 +  vncviewer=0
 +  
 +  stdvga=0
 +  serial='pty'
 +  ne2000 = "0"
 +  
 +  on_poweroff = 'destroy'
 +  on_reboot = 'restart'
 +  on_crash = 'restart'
  
drbd_xen_live_migration.1370343517.txt.gz · Последнее изменение: 2022/03/25 17:04 (внешнее изменение)