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

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


drbd_xen_live_migration

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
drbd_xen_live_migration [2013/06/04 15:26]
metallic [Настройка XEN]
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. Делается это командой:
Строка 227: Строка 232:
   Kernel path    :  /boot/vmlinuz-3.2.0-4-amd64   Kernel path    :  /boot/vmlinuz-3.2.0-4-amd64
   Initrd path    :  /boot/initrd.img-3.2.0-4-amd64   Initrd path    :  /boot/initrd.img-3.2.0-4-amd64
 +  
   Networking Information   Networking Information
   ----------------------   ----------------------
Строка 275: Строка 280:
   dhcp        = 'dhcp'   dhcp        = 'dhcp'
   vif         = [ 'mac=00:16:3E:8A:B6:15' ]   vif         = [ 'mac=00:16:3E:8A:B6:15' ]
 +  
   on_poweroff = 'destroy'   on_poweroff = 'destroy'
   on_reboot   = 'restart'   on_reboot   = 'restart'
Строка 285: Строка 290:
      
 Если все получилось, виртуальная машина должна запуститься и мы увидим ее консоль. Логинимся и завершаем работу виртуалки. (Отключиться от консоли Ctrl + ]). Если все получилось, виртуальная машина должна запуститься и мы увидим ее консоль. Логинимся и завершаем работу виртуалки. (Отключиться от консоли 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.1370345173.txt.gz · Последнее изменение: 2022/03/25 17:04 (внешнее изменение)