четверг, 12 декабря 2013 г.

Инструкция по добавлению виртуальных доменов (DomU) для отказоустойчивого кластера серверов








1. Сделать резервные копии всех виртуальных доменов
2. Остановить службу Heartbeat на обоих узлах
3. Создать логический том LVM (строго идентично на обоих узлах)
      clu-servd1$ sudo lvcreate --name lvmvolname --size lvmvolsize VGNAME
      clu-servd3$ sudo lvcreate --name lvmvolname --size lvmvolsize VGNAME
4. Создать DRBD — устройство
   4.1.        Остановить ВСЕ виртуальные домены (DomU) на обоих узлах
               (xm shutdown)
   4.2.        Остановим службу DRBD на обоих узлах кластера
        a) clu-servd1$ sudo /etc/init.d/drbd stop
        b) clu-servd3$ sudo /etc/init.d/drbd stop
   4.3.        Описать в конфиге /etc/drbd.conf (на узле puppet) новое DRBD —
      устройство:
               resource xen-drbd-portal {
                   on clu-servd1 {
                       device /dev/drbd2;
                       disk /dev/xen_vg2/portal;
                       address        10.0.0.1:7790;
                       meta-disk      internal;
                   }
                   on clu-servd3 {
                       device /dev/drbd2;
                       disk /dev/xen_vg2/portal;
                       address        10.0.0.2:7790;
                       meta-disk      internal;
                   }
               }
   4.4.        Применим изменения конфига /etc/drbd.conf на обоих узлах кластера
        a) clu-servd1$ sudo puppetd --test
        b) clu-servd3$ sudo puppetd --test
   4.5.        Запустим службу DRBD
        a) Запустим службу DRBD на обоих узлах
           • clu-servd1$ sudo /etc/init.d/drbd start
           • clu-servd3$ sudo /etc/init.d/drbd start
        b) Создадим метадиск на обоих узлах
           • clu-servd1$ sudo drbdadm create-md xen-drbd-portal
           • clu-servd3$ sudo drbdadm create-md xen-drbd-portal
        c) Запустим созданный DRBD — ресурс на обоих узлах:
           • clu-servd1$ sudo drbdadm up xen-drbd-portal
           • clu-servd3$ sudo drbdadm up xen-drbd-portal
        d) ТЕПЕРЬ ТОЛЬКО НА PRIMARY УЗЛЕ
           • clu-servd1$ sudo drbdadm -- --overwrite-data-of-peer primary xen-drbd-portal
        e) Проверим состояния DRBD — ресурсов и понаблюдаем за процессом
           синхронизации частей созданного DRBD — ресурса на разных узлах кластера
           • clu-servd1$sudo cat /proc/drbd
           • 4: cs:SyncSource st:Secondary/Secondary ds:UpToDate/Inconsistent C r---
                  ns:5618884 nr:0 dw:0 dr:5660064 al:0 bm:342 lo:4 pe:10 ua:1290 ap:0
                     [=========>..........] sync'ed: 53.6% (4752/10239)M
                     finish: 0:00:38 speed: 127,948 (117,052) K/sec
                     resync: used:4/61 hits:352115 misses:346 starving:0 dirty:0 changed:346
                     act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
        f) Спустя некоторое время вновь проверим
           • clu-servd1$sudo cat /proc/drbd
               4: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
           •
                  ns:10485404 nr:0 dw:0 dr:10485404 al:0 bm:640 lo:0 pe:0 ua:0 ap:0
                     resync: used:0/61 hits:654698 misses:640 starving:0 dirty:0 changed:640
                     act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0
               Видим, что части DRBD — ресурса завершили синхронизацию и на
           •
               PRIMARY — узле ресурс перешел в состояние Primary
5. Создать виртуальный домен (DomU)
   5.1.        Создать конфиг — на узле puppet
        a) puppet$ sudo touch /etc/puppet/modules/xen-domu-config/files/portal
        b) Заполнить конфиг
               import os, re
           •
               arch = os.uname()[4]
               kernel = "/usr/lib/xen-default/boot/hvmloader"
               builder = 'hvm'
               device_model = "/usr/lib/xen-default/bin/qemu-dm"
               memory = 4096
               name = "portal"
               vcpus = 3
               vif = [ 'type=ioemu,bridge=eth4' ]
               disk = [ 'phy:/dev/drbd1,xvda,w', 'file:/home/paul/X86-64SBDVD3.iso,xvdc:cdrom,r' ]
               boot="dc"
               acpi = 1
               apic = 1
               stdvga=0
               sdl=0
               vnc=1
               vncpasswd='123123cheche'
               vnclisten="0.0.0.0"
               on_reboot = 'restart'
               on_crash = 'restart'
               on_powerof = 'destroy'
         c) Добавляем в класс xen-domu-config (/etc/puppet/modules/xen-domu-
            config/manifests/init.pp) описание файла конфига нового виртуального домена
            DomU
                 file { "/etc/xen/config/portal":
            •
                        owner => root,
                        group => root,
                        mode => 0644,
                        source => "puppet:///xen-domu-config/portal";
                    }
         d) Применить изменения на обоих узлах
            • clu-servd1$ sudo puppetd --test
            • clu-servd3$ sudo puppetd --test
6. Добавим информацию о созданном ресурсе (под ресурсом в данном случае понимаем
   всю связку DomU-DRBD-LVM) в Heartbeat (Heartbeat — важнейший компонент
   проекта Linux-HA, отвечающий за обнаружение выпадения узла из кластера. )
    6.1.       Добавим в файл puppet:/etc/puppet/modules/heartbeat/files/haresources
         a) Строчку «clu-servd2 xendom2::portal::xen-drbd-portal »
            • где clu-servd2 — узел на котором должен работать ресурс в штатном
               режиме
            • xendom2 — имя скрипта, реализующего управление ресурсами DomU-
               DRBD-LVM
            • portal — имя виртуального ресурса DomU, а также имя файла
               конфигурации данного виртуального домена (они должны быть
               идентичны !)
    6.2.       Применить изменения на обоих узлах
            • clu-servd1$ sudo puppetd --test
            • clu-servd3$ sudo puppetd --test
7. Рестарт Heartbeat
8. После установки ОС в DomU необходимо зафиксировать MAC в конфиге DomU
9. Установить частоту и параметры резервного копирования LVM в crontab (puppet)

Комментариев нет:

Отправить комментарий