Hetzner - DokuWiki

Citrix XenServer/ru

Inhaltsverzeichnis

Установка XenServer

Для начала следует установить минимальную ОС с поддержкой GPT (например, Debian или Ubuntu). Далее следует зайти на сервер и переписать (запомнить) сетевые настройки из файла /etc/ networking/interfaces.

Скачивание и распаковка XenServer

Скачайте ISO-образ с

   xenserver.org
    wget http://downloadns.citrix.com.edgesuite.net/akdlm/6760/XenServer-6.0.201-install-cd.iso
    mount -o loop XenServer-6.0.201-install-cd.iso /mnt
    mkdir /var/www/xenserver
    cp -a /mnt/* /var/www/xenserver

Создание файла ответов

Вот пример файла с именем xenserver.xml.
Обратите внимание: после копирования убедитесь в правильности указанных сетевых настроек.

<installation mode="fresh" srtype="lvm">
    <primary-disk gueststorage="yes">sda</primary-disk>
    <keymap>de</keymap>
    <hostname>xenserver-ex4s</hostname>
    <root-password>my_password</root-password>
    <source type ="url">http://xx.xx.xx.xx/xenserver/</source>
    <!-- No Post install scripts configured -->
    <admin-interface name="eth0" proto="static">
    <ip>Hetzner Server IP</ip>
    <subnet-mask>255.255.255.224</subnet-mask>
    <gateway>Hetzner Gateway IP</gateway>
    </admin-interface>
    <nameserver>213.133.98.98</nameserver>
    <nameserver>213.133.99.99</nameserver>
    <nameserver>213.133.100.100</nameserver>
    <timezone>Europe/Berlin</timezone>
    <time-config-method>ntp</time-config-method>
    <ntp-servers>ntp</ntp-servers>
    <ntpservers>213.239.239.164</ntpservers>
    <ntpservers>213.239.239.165</ntpservers>
    <ntpservers>213.239.239.166</ntpservers>
    </installation>

Этот файл следует расположить там же, где расположено остальное содержимое диска XenServer. В нашем примере это директория /var/www/xenserver.

Настройки PXE

На новом сервере: скопируйте следующие файлы с вашего web-сервера на сервер, используемый для установки XenServer:

   cd /boot
    wget http://www.example.com/xenserver/install.img
    wget http://www.example.com/xenserver/boot/vmlinuz
    wget http://www.example.com/xenserver/boot/xen.gz

Также следует изменить настройки загрузчика. В Ubuntu 12.04 используется GRUB2. В файле /boot/grub/grub.cfg следует изменить первую запись (смотри последние 3 строки):

if [ "${linux_gfx_mode}" != "text" ]; then load_video; fi
    menuentry 'Ubuntu, with Linux 3.2.0-24-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod raid
    insmod mdraid1x
    insmod part_gpt
    insmod part_gpt
    insmod ext2
    set root='(mduuid/xxxxxxxxxxxxx)'
    search --no-floppy --fs-uuid --set=root 2caba589-8a66-457a-81a2-2f43c7203736
    multiboot /xen.gz dom0_mem=752M acpi=off nosmp noapic noirqbalance
    module /vmlinuz answerfile=http://<IP-адрес удалённого сервера>/xenserver/xenserver.xml install
    module /install.img
    }
    

Обратите внимание: в адресе файла ответов следует использовать IP-адрес, а не доменное имя. Поэтому следует быть осторожным при использовании виртуальных хостов и т.п.

Перезагрузка

Перезагрузите сервер, например, при помощи команды reboot. Теперь должна начаться установка XenServer. Несколько опосредованно следить за ходом установки наблюдая за обращениями к веб-серверу, например, при помощи команды "tail -f /var/log/apache2/access.log".

Если в теение нескольких минут после презагрузки нет активности, скорее всего это означает, что сервер остановился загрузочном меню. В этом случае попросите подключить к серверу KVM Console и подтвердите выбор первого пункта, просто нажав <ENTER>.

Программный RAID1

После установки XenServer должен быть доступен по SSH с паролем, указанным в файле ответов. При создании таблицы разделов XenServer 6 использует GPT, а не MBR. Это означает, что большие диски (например 3 TB в EX4) будут доступны полностью.

Подготовка второго диска (sdb)

Диск /dev/sda после установки должен содержать 3 раздела. To transfer the partitions evenly you can look at the partitions on /dev/sda:

    sgdisk -p /dev/sda

Удалите разделы на диске /dev/sdb:

    sgdisk --zap-all /dev/sdb

Создайте новую таблицу разделов GPT:

    sgdisk --mbrtogpt --clear /dev/sdb

Добавьте новые разделы указав их границы (пример для диска объёмом 3 ТБ):

    sgdisk --new=1:2048:8388641 /dev/sdb
    sgdisk --typecode=1:fd00 /dev/sdb
    sgdisk --new=2:8390656:16777249 /dev/sdb
    sgdisk --typecode=2:fd00 /dev/sdb
    sgdisk --new=3:16779264:5860533134 /dev/sdb
    sgdisk --typecode=3:fd00 /dev/sdb
    sgdisk /dev/sda --attributes=1:set:2
    sgdisk /dev/sdb --attributes=1:set:2
    sgdisk --typecode=1:fd00 /dev/sda
    sgdisk --typecode=2:fd00 /dev/sda
    sgdisk --typecode=3:fd00 /dev/sda

Создание массива

Массив RAID1, настроенный Hetzner, всё ещё частично задействован. XenServer создал 3 раздела на /dev/sda и оставил /dev/sdb нетронутым, как показано в файле ответа в примере. Остатки RAID удалены:

    mdadm --stop /dev/md0

Создание нового массива RAID:

    mknod /dev/md0 b 9 0
    mknod /dev/md1 b 9 1
    mknod /dev/md2 b 9 2
    mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1
    mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
    mdadm --create /dev/md2 --level=1 --raid-devices=2 missing /dev/sdb3

Опционально: Создание битовых карт для каждого устройства в RAID массиве. Битовые карты мало влияют на производительность, однако значительно сокращают время восстановления массива после сбоя.

    mdadm --grow /dev/md0 -b internal
    mdadm --grow /dev/md1 -b internal
    mdadm --grow /dev/md2 -b internal

Сохраните новую конфигурацию RAID в обновлённом файле mdadm.conf:

    mdadm --examine --scan > /etc/mdadm.conf

Скопируйте в RAID данные Store Manager:

    pvcreate -ff /dev/md2
    vgextend VG_<TAB> /dev/md2
    pvmove /dev/sda3 /dev/md2

Удалите /dev/sda3 из группы томов SR:

    vgreduce VG_<TAB> /dev/sda3
    pvremove /dev/sda3

Примонтируйте /dev/md0 и скопируйте файловую систему:

    mkfs.ext3 /dev/md0
    mount /dev/md0 /mnt
    cd /
    cp -axv . /mnt

Теперь нужно отредактировать файл /mnt/etc/fstab:

Примечание: текстовый редактор nano использовать не рекомендууется, так как он автоматически вставляет перенос строки, если строки длинные. Это может привести к нечитаемости конфигурационного файла. Такое поведение редактора можно избежать, использовав ключ «nano --nowrap», или просто, используя другой текстовый редактор, такой, как vi.

    vi /mnt/etc/fstab

Замените параметр "root=LABEL=root-xxxxxx" на "/dev/md0"

Создайте новый Initrd:

    mkdir /mnt/root/initrd-raid
    mkinitrd -v --fstab=/mnt/etc/fstab /mnt/root/initrd-raid/initrd-`uname -r`-raid.img `uname -r`
    cd /mnt/root/initrd-raid
    zcat initrd-`uname -r`-raid.img | cpio -i

Отредактируйте файл "init", добавив для «raidautorun /dev/md0» следующее:

    raidautorun /dev/md1
    raidautorun /dev/md2

Скопируйте новый ramdisk в /mnt/boot:

find . -print | cpio -o -Hnewc | gzip -c > /mnt/boot/initrd-`uname -r`-raid.img

    rm /mnt/boot/initrd-2.6-xen.img

    ln -s initrd-`uname -r`-raid.img /mnt/boot/initrd-2.6-xen.img

    vi /mnt/boot/extlinux.conf
    

Теперь замените «root=LABEL=root-xyz» на «root=/dev/md0» во всех пунктах меню.

Установите MBR для GPT на /dev/sdb:

    cat /mnt/usr/share/syslinux/gptmbr.bin > /dev/sdb
    cd /mnt
    extlinux  --raid -i boot/
    umount /dev/md0
    sync

Теперь RAID массив почти готов, не достаёт лишь /dev/sda1. Загрузитесь в Rescue систему (активируйте Rescue систему в панели Robot, скопируйте пароль и перезапустите сервер с помощью опции «hardware reset»). В Rescue системе выполните следующее:

    mdadm -a /dev/md0 /dev/sda1
    mdadm -a /dev/md2 /dev/sda3

Теперь RAID массив должен будет впервые синхронизироваться, что может занять продолжительное время (!) (Согласно данной инструкции, на свеже установленном сервере EX4S это занимает около 6 часов). Прогресс можно наблюдать так:

    watch -n 1 cat /proc/mdstat

Подключение локальной библиотеки ISO

XenServer не имеет возможности доступа к образам ISO на локальном диске. Чтобы это исправить, необходимо создать новый LV в зоне данных LVM, чтобы затем пробросить его через локальный NFS сервер. Это не самое оптимальное решение, но это работает. Источник:http://forums.citrix.com/thread.jspa?messageID=1393861&tstart=0

Найдите свой собственный VG

    vgscan
    #Reading all physical volumes. This may take a while...
    #Found volume group "VG_XenStorage-709d46ed-8193-d470-4ab8-21953af4f863" using metadata type lvm2

Создайте новый LVM

(Пример с 20 ГБ)

    lvcreate -L 20G -n ISO VG_XenStorage-<myID>
    #Logical volume "ISO" created

Создание файловой системы

    mkfs.ext3 /dev/VG_XenStorage-<myID>/ISO

Правка /etc/exports

    mkdir /ISO
    echo "/ISO 127.0.0.1(rw,no_root_squash,sync)" >> /etc/exports

Активация NFS и Portmap

    chkconfig --level 345 nfs on
    chkconfig --level 345 portmap on
    service nfs start
    service portmap start

Монтирование при загрузке

   Добавьте в конец файла «/etc/rc.local» следующее:
    lvchange -a y /dev/VG_XenStorage-<myID>/ISO
    mount /dev/VG_XenStorage-<myID>/ISO /ISO

Введите библиотеку ISO в XenCenter

В XenCenter, вы теперь можете добавить библиотеку хранилище типа «NFS ISO». В качестве точки монтирования можно указать «localhost:/ISO».

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

Настройка хоста в качестве маршрутизатора

XenServer можно сделать маршрутизатором с помощью изменений в файле «/etc/sysctl.conf» (первые несколько строк до «net.ipv4.ip_forward = 0» включительно, должны быть заменены на следующее):

# Kernel sysctl configuration file for Red Hat Linux
    #
    # For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
    # sysctl.conf(5) for more details.

    # Controls IP packet forwarding
    net.ipv4.ip_forward = 1
    net.ipv6.conf.all.forwarding=1

    # Controls proxy arp
    net.ipv4.conf.default.proxy_arp = 0

    # Turn off redirects
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.lo.send_redirects = 0
    net.ipv4.conf.xenbr0.send_redirects = 0
    

Настройки теперь актуальны после каждой перезагрузки. Их также можно применить и без перезагрузки, с помощью следующей команды:

    sysctl -p

IPv4

Настройка дополнительных IP-адресов

У всех серверов в Hetznerб по умолчанию есть один IPv4 адрес. Однако, вы можете заказать до 3-х дополнительных одиночных IPv4 адресов. Смотрите: IP-адреса

Настройка failover IP

Failover IP это дополнительный адрес, который можно переключать между серверами Hetzner.

Настройка дополнительной подсети

В обычном варианте настройки с 3 дополнительными IPv4 адресами, вы можете запустить до 3-х виртуальных машин. Вы также можете заказать и подсети. Смотрите: IP-адреса

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

Для того, чтобы хост система маршрутизировала пакеты из подсети, нам нужно добавить первый адрес подсети на интерфейс xenbr0 (в примере использууется сеть xx.yy.177.160/27):

    ip addr add xx.yy.177.161/27 dev xenbr0

Маршрутизация на соседние серверы

Если вы заказали сразу несколько серверов и они оказались в одной стойке и их IP-адреса идут один за другим, вы обнаружите, однако, что они не будут «видеть» друг друга (отвечать на ping), тогда как обычно, серверы из одной подсети способны «видеть» друг друга напрямую, без шлюза. В Hetzner это невозможно в виду соображений безопасности. Соседствующие серверы имеют доступ друг другу только через шлюз от Hetzner. Настроить моршрут необходимо следующим образом:

    route add -net xx.yy.44.64 netmask 255.255.255.192 gw xx.yy.44.65 xenbr0

В данном случае xx.yy.44.65 является IP-адресом шлюза Hetzner. Для получения IP-адреса сети, мы прости отнимаем 1, и получаем xx.yy.44.64.

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

Пример конфигурации:

   *Серверу назначены следующие IP-адреса: xx.yy.44.76, xx.yy.44.105, xx.yy.44.108 and xx.yy.44.110.
   **Все эти адреса из одной сети xx.yy.44.64/26.
   **Шлюз подсети — это xx.yy.44.65.
   *XenServer виртуальные машины получают IP-адреса xx.yy.44.105, xx.yy.44.108 и xx.yy.44.110
   **Шлюз xx.yy.44.76.
   *Дополнительно заказанная подсеть из 32 IP-адресов — это xx.yy.177.160/27
   **Первый и последний адреса подсети не используются, один из них является сетевым адресом, второй — широковещательным
   **IP-адрес xx.yy.177.161 является шлюзом, итого, остаются доступными 29 IP-адресов: xx.yy.177.162 - xx.yy.177.191
   **Шлюзом для виртуальных машин в жтой подсети служит xx.yy.177.161.

Для того, чтобы настройки оставались в силе и после перезагрузки, в файл /etc/sysconfig/networking-scripts/ifcfg-xenbr0 нужно добавить следующее:

    up ip addr add xx.yy.177.161/27 dev xenbr0
    down ip addr del xx.yy.177.161/27 dev xenbr0
    up route add -net xx.yy.44.64 netmask 255.255.255.192 gw xx.yy.44.65 xenbr0
    down route del -net xx.yy.44.64 netmask 255.255.255.192 gw xx.yy.44.65 xenbr0

IPv6

Все серверы поставляются с подсетью /64 протокола IPv6. Для тех клиентов, кто получил свои серверы до февраля 2013 года, эта подсеть можеь быть бесплатно заказана из панели Robot и автоматически активирована.

Возьмём для примера подсеть 2a01:4f8:xxx:xxxx::/64

В данном случае XenServer получит IP-адрес 2a01:4f8:161:xxxx::2/112.

Поскольку XenServer не поддерживает настройку IPv6 через интерфейс управления в xconsole, нужно будет использовать небольшой скрипт. Он располагается в "/etc/init.d" и называется «network6». Скрипт выглядит так:

#!/bin/bash
    #
    # network6      This starts and stops ipv6 on xenbr0
    #
    # chkconfig: 2345 15 85
    # description: ipv6 configuration
    # source: http://www.wirrewelt.de/entry/ipv6-mit-xenserver-5-5-bei-hetzner
    # Copyright 2010 Sascha Huck
    #
    ### BEGIN INIT INFO
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    ### END INIT INFO
    # Source function library.
    . /etc/rc.d/init.d/functions
    # Von Hetzner zugewiesenes Gateway
    IPV6GATEWAY=fe80::1
    # Eigene Adresse und eigenes Subnetz
    IPV6HOSTADDR=2a01:4f8:161:xxxx::2/112
    IPV6HOSTSUBNET=2a01:4f8:161:xxxx::0/112

    usage ()
    {
       echo "Usage: service $prog {start|stop}"
       RETVAL=1
    }
    start ()
    {
       # Insert kernel modules
       modprobe esp6
      # Configure our ip address
       ip -6 addr add $IPV6HOSTADDR dev xenbr0
      # Configure routing to hetzner gateway
       ip -6 route add $IPV6GATEWAY dev eth0
       ip -6 route add $IPV6GATEWAY dev xenbr0
       ip -6 route add default via $IPV6GATEWAY

      # Enable ipv6 forwarding (don't work in /etc/sysctl.conf)
       sysctl -w net.ipv6.conf.all.forwarding=1

    }
    stop ()
    {
    }
    case "$1" in
       start) start; RETVAL=$? ;;
       stop) stop; RETVAL=$? ;;
       *) usage ; RETVAL=2 ;;
    esac
    exit $RETVAL
    ########
    

Примечание: некоторые строки необходимо изменить согласно с вашей конфигурацией. Перед использованием скрипта, отредактируйте его соответственно. С помощью команды

    chmod a+x

скрипт делается исполняемым, а с помощью команды

    chkconfig network6 on

он добавляется в процесс загрузки.

Загрузка модуля ядра «esp6» является решением для XenServer, так как «modprobe ipv6» заканчивается выводом «Module not found», тогда как «modprobe esp6» загружает IPv6 модуль.

На виртуальных машинах (если они работают на Linux) вы можете добавить следующие настройки:

    ip addr add 2a01:4f8:161:xxx::y/64 dev eth0
    ip route add default via 2a01:4f8:161:xxx::2

Замена драйвера сетевой карты (опционально)

Драйвер по умолчанию в XenServer, который используется для сетевой карты Realtek (r8169), в некоторых случаях служит причиной потери пакетов. Поэтому, его можно заменить другим: r8168. Для сборки драйвера необходим специальный набор Driver Development Kit (DDK), который можно скачать с сайта Citrix:

   http://support.citrix.com/article/CTX138885 (Для XenServer 6.2.0 с Hotfix XS62E004)

Предположим, ISO файл уже скопирован в /ISO. Во-первых, хранилище виртуальных машин должно быть обозначено из XenCenter, как хранилище по умолчанию (клик правой кнопко мыши -> Default Storage), так как в противном случае команда xe vm-import не работает.

Монтирование ISO:

    mkdir /mnt/iso
    mount -o loop /local/iso/XenServer-6.2.0-XS62E004-ddk.iso /mnt/iso

Импорт DDK VM:

    xe vm-import filename=/mnt/iso/ddk/ova.xml

В XenCenter сетевое устройство нужно добавить на виртуальную машину. После этого машину можно перезапустить и назначить root-пароль, с которым вы сможете авторизоваться.

Теперь мы можем добавить корректные сетевые настройки для виртуальных машин в следующих файлах:

   «/etc/sysconfig/network-scripts/ifcfg-eth0»
    DEVICE=eth0
    BOOTPROTO=static
    IPADDR=<IP address of the VM>
    NETMASK=255.255.255.224
    ONBOOT=yes
    TYPE=ethernet
   «/etc/sysconfig/network-scripts/route-eth0»
    IP-ADRESSE-DER_VM dev eth0 scope link
    default via IP-DES-XENSERVERS-BZW-BEI-IP-NETZ-DIE-DES-xenbr0:1
   «/etc/resolv.conf»
    nameserver 213.133.99.99
    nameserver 213.133.100.100

Теперь скачайте драйвер, разархивируйте его, и скомпилируйте:

    cd /root
    wget http://r8168.googlecode.com/files/r8168-8.037.00.tar.bz2
    tar xjf r8168-8.037.00.tar.bz2
    cd r8168-8.037.00
    make all

Новый драйвер (src/r8168.ko) необходимо перенести на хост систему: «/lib/modules/<newest kernel version>/kernel/drivers/net/»

Назначьте корректные права:

    chmod 0744 /lib/modules/<newest kernel version>/kernel/drivers/net/r8168.ko

Теперь добавьте драйвер в файл «/etc/modprobe.conf»:

    echo "alias eth0 r8168" > /etc/modprobe.conf

Скомпилированный драйвер теперь должен быть активирован. Поскольку сервер не будет доступен всё это время (несколько секунд), необходимые инструкции будут добавлены в одну команду:

    rmmod r8169 && depmod -a && modprobe r8168 && service network restart && service ipaliases restart

Через несколько секунд сервер должен стать доступен по сети с новым драйвером.

    lspci -nnk | grep -i net -A2

Последняя строка вывода должна выглядеть так: «Kernel driver in use: r8168»

Перенос виртуальных машин с другого (более старого) Xenserver

К счастью, XenServer достаточно гибок в отношении переноса виртуальных машин на другой хост. Существует много способов сделать это, один из которых — это удалённо примонтировать директорию (как NFS) старого хоста на новом. В этой директории ВМ экспортируется на другой хост (с помощью «xe vm-export uuid=xxx-xxx filename=vm1.xva») и затем импортируется на новый хост («xe vm-import filename=vm1.xva»).

Источники

   *XenServer 5.5 (Немецкий)
   *Дополнительные IP-адреса
   *XenServer 5.6 Installation per KVM Console (Немецкий)
   *http://blog.codeaddict.org/?p=5
   *http://pastebin.com/psaWg7QK
   *https://wiki.archlinux.org/index.php/Installing_with_Software_RAID_or_LVM#RAID_installation
   *http://www.schirmacher.de/display/INFO/XenServer+5.5+auf+Hetzner+Server+installieren (Немецкий)
   *http://www.wirrewelt.de/2010/10/ipv6-mit-xenserver-5-5-bei-hetzner/ (Немецкий)


© 2018. Hetzner Online GmbH. Alle Rechte vorbehalten.