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

Развертывание отказоустойчивого кластера XEN over DRBD over LVM (+Heartbeat) на базе ОС Linux Debian 5.04 (lenny). Версия гипервизора Xen — 4.0.0 Способ развертывания — PUPPET.

     






Выполняется развертывание базовой ОС Debian, превращение в puppet, с пом. puppet
выполняется настройка сети, агрегированных каналов, репозиториев, DRBD, Heartbeat, etc.
Выполняется установка Dom0 — ядра linux linux-image-2.6.26-2-xen-amd64. Поддержка
DRBD реализована в виде модуля ядра.
На отдельной станции осуществляется сборка из исходных кодов гипервизора Xen-4.0.0
(tarball). После этого тарбол переноситься на production узел и разворачивается там.
Hardware:
2x HP ProLiant DL360G6 (Xeon X5550 2.66 GHz, 24 GB)
Software:
Linux Debian 5.04 (linux-image-2.6.26-2-xen-amd64 + Xen4.0.0)
    1. Установим базовую систему Linux Debian на оба узла
    2. Сразу после установки # aptitude install mc openssh-server sudo
    3. Настроим репозиторий пакетов debian (в нашем случае это репозиторий в локальной
        сети)
   # vi /etc/apt/sources.list
   deb http://repo/debian lenny main contrib non-free
   # aptitude update
4. Установим Xen-4.0.0 из исходных кодов с оффициального сайта (согласно
   руководству Jean Baptiste FAVRE). Achtung! Из соображений безопасности этап
   компиляции должен быть выполнен на отдельном компьютере.
   Remember ? "Never install dev tools on productions servers"
   1. Этап компиляции (на отдельном компьютере)
   aptitude install bcc bin86 gawk bridge-utils iproute libcurl3 libcurl4-openssl-dev bzip2
   module-init-tools transfig tgif texinfo \
   texlive-latex-base texlive-latex-recommended texlive-fonts-extra texlive-fonts-
   recommended pciutils-dev mercurial \
   build-essential make gcc libc6-dev zlib1g-dev python python-dev python-twisted
   libncurses5-dev patch libvncserver-dev \
   libsdl-dev libjpeg62-dev iasl libbz2-dev e2fslibs-dev git-core uuid-dev gcc-multilib
   Xen compilation
   Xen compilation steps Getting Xen sources
   $ mkdir ~/Xen
   $ cd ~/Xen
   $ wget http://bits.xensource.com/oss-xen/release/4.0.0/xen-4.0.0.tar.gz
   $ tar -xzf xen-4.0.0.tar.gz
   $ cd xen-4.0.0/
   Compile Xen
   $ make xen
   $ make tools
   $cd dist/install/etc
   $mv sysconfig default
   $cd init.d
   Replace sysconfig with default (line 23) in xend.
   Replace sysconfig with default (line 38) in xendomains.
   tar -czf xen4.tar.gz dist
   2. Этап установки (из заранее собранного tarball)
   Xen4 install Archive extraction
   $ tar -xzf xen4.tar.gz
   $ cd dist
   $ ./install.sh
   Xen FS setup
   $ echo "none /proc/xen xenfs defaults 0 0" >> /etc/fstab
        Xen4 services setup
        $ update-rc.d xend defaults 20 21
        $ update-rc.d xendomains defaults 20 21
        $ sudo aptitude install libpci3 libsdl1.2debian libx11-6  libxext6 libgl1-mesa-glx
    5. Внесем ряд изменений в файл /boot/grub/menu.lst (до установки xen-dom0-kernel !) - на
        самих узлах!
        ## Xen hypervisor options to use with the default Xen boot option
        # xenhopt=dom0_mem=512M
        ## Xen Linux kernel options to use with the default Xen boot option
        # xenkopt=console=tty0 pci=nomsi
    6. We need increase the quantity of loop devices (default = 8 ), because each DomU needs a
        few for connecting cd images (руками на каждом узле)
        #/etc/modules
        loop max_loop=64
    7. Превратим узел в puppet (в локальной сети развернут сервер puppet с dns — именем -
        «puppet»)
        # aptitude install puppet
        На стороне puppet-сервера
        $ sudo puppetca —list
        $ sudo puppetca —sign clu-servd1.company.org
        Все последующие манипуляции на обоих узлах выполняются с помощью механизма
        puppet.
    8. С помощью механизма puppet
        1. Настроим файл /etc/sudoers
        2. Настроим репозиторий пакетов debian (/etc/apt/sources.list)
        3. Установим клиент системы мониторинга nagios
        4. Установим ntp-клиент
        5. Настроим ethernet — интерфейсы, в том числе агрегированный интерфейс bond0
        6. Установим xen-dom0-kernel (linux-image-2.6.26-2-xen-amd64). При установке будет
            выполнена update-grub.
        7. Установим модули ядра drbd и lvm2
        8. Установим и настроим службу puppet
P.S. По сути все вышеперечисленные установки и настройки будут выполнены в момент
превращения узла в «puppet», т.к. скрипты puppet написаны и отлажены заранее.
P.P.S. В дальнейшем с помощью механизма puppet мы также будем осуществлять управление
файлами конфигураций DomU, настраивать резервное копирование для этих DomU.
    9. Создадим физические тома PV и группы томов VG (позже, для каждого виртуального
        домена мы будем создавать логический том LV а поверх LV — устройство DRBD)
        root@clu-servd1:~# fdisk -l
        Disk /dev/sda: 364.9 GB, 364999999488 bytes
        255 heads, 63 sectors/track, 44375 cylinders
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Disk identifier: 0x00000000
          Device Boot      Start     End    Blocks Id System
        /dev/sda1           1    44375 356442156 8e Linux LVM
        Disk /dev/sdb: 368.2 GB, 368260677632 bytes
        255 heads, 63 sectors/track, 44771 cylinders
        Units = cylinders of 16065 * 512 = 8225280 bytes
        Disk identifier: 0x2b1208c0
          Device Boot      Start     End    Blocks Id System
        /dev/sdb1           1    44771 359623026 8e Linux LVM
У нас есть два готовых раздела /dev/sda1 и /dev/sdb1 (тип — 8e - Linux LVM). Поверх этих
разделов создадим группы виртуальных томов xen_vg1 и xen_vg2
Создаем физические тома (на обеих нодах):
root@clu-servd1:~# pvcreate /dev/sda1
 Physical volume "/dev/sda1" successfully created
root@clu-servd1:~# pvcreate /dev/sdb1
 Physical volume "/dev/sdb1" successfully created
root@clu-servd1:~# pvs
 PV        VG Fmt Attr PSize PFree
 /dev/sda1      lvm2 -- 339.93G 339.93G
 /dev/sdb1      lvm2 -- 342.96G 342.96G
Создадим группы томов (на обеих нодах):
root@clu-servd1:~# vgcreate xen_vg1 /dev/sda1
 Volume group "xen_vg1" successfully created
root@clu-servd1:~# vgcreate xen_vg2 /dev/sdb1
 Volume group "xen_vg2" successfully created
root@clu-servd1:~# vgs
 VG      #PV #LV #SN Attr VSize VFree
 xen_vg1 1 0 0 wz--n- 339.93G 339.93G
 xen_vg2 1 0 0 wz--n- 342.96G 342.96G
    10. Настроим беспарольный доступ узлов кластера друг к другу по протоколу SSH на
        основе открытых ключей (узел кластера должен иметь возможность исполнять
        команды от лица root на другом узле — это нужно для успешной работы службы
          heartbeat)
Генерируем ключ и передаем его на второй узел:
clu-servd1:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
58:ac:4f:e3:7b:39:07:81:38:ca:06:e5:e3:c8:a7:61 root@clu-servd1
The key's randomart image is:
+--[ RSA 2048]----+
|            |
| . .        |
| o .o.        |
| . o o+. .      |
| . = oo.S . |
| E * + ..        |
|.= o o |
| .     .+ . |
|      .. o |
+-----------------+
clu-servd1:~#
clu-servd1:~#
clu-servd1:~# ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.2
The authenticity of host '10.0.0.2 (10.0.0.2)' can't be established.
RSA key fingerprint is f7:39:d9:d6:42:d8:23:85:aa:3f:5c:72:00:dd:4c:35.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.2' (RSA) to the list of known hosts.
root@10.0.0.2's password:
Now try logging into the machine, with "ssh 'root@10.0.0.2'", and check in:
  .ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Аналогично на втором узле.
Проверить в обе стороны.

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

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