Citrix XenServer — установка по сети

Данная статья описывает, как можно осуществить установку Citrix XenServer на удаленный сервер, доступный по сети. В статье будет рассмотрен сервер Hetzner, однако изложенные рекомендации применимы для сервера в любом датацентре.

Сачала нам нужно установить OS на выделенный сервер Hetzner. Дело в том, что в процессе установки Citrix XenServer 6.0 на сервер Hetzner мы будем править загрузчик ОС, поэтому лучше уже иметь установленный дистрибутив.

Заходим в панель управления Hetzner(https://robot.your-server.de/server). В меню слева жмем Servers и выбираем наш сервер. Жмем вкладку Resque. На открывшейся странице выбираем операционную систему Linux, архитектура 64bit. Жмем кнопку активации.

На этом моменте внимание. Вам будет показано сообщение о том что активация успешно завершена и будет дан пароль для доступа на сервер. Скопируйте его и сохраните, это главный пароль от нашего сервера.

Затем идем на вкладку reset, выбираем «Execute a automatic hardware reset» и жмем кнопку «Send».

Нам придется немного подождать пока сервер не перезагрузится(в среднем 1-5 минут). Пока это все происходит я предлагаю перейти к следующему шагу.

Подготовка образа Citrix XenServer.

В чем собственно суть этого шага. Нам необходимо скопировать файлы из образа Citrix XenServer в папку на Web-сервере и создать файл автоматических ответов. Именно отсюда наш сервере в дата центре Hetzner будет скачивать файлы установки.

Начнем с того что скачаем образ и примонтируем его как папку. На момент написания статьи он доступен для скачивания по ссылке скачать.

И так заходим на web-сервер под пользователем root.
Вводим следующие команды:

#Качаем образ
wget http://downloadns.citrix.com.edgesuite.net/akdlm/6760/XenServer-6.0.201-install-cd.iso
#Монтируем образ в папку /mnt
mount -o loop XenServer-6.0.201-install-cd.iso /mnt
#Создаем папку из которой будет происходить установка
mkdir /var/www/xenserver
#Копируем содержимое образа диска в эту папку
cp -a /mnt/* /var/www/xenserver

 

Подготовка файла автоответов.

Отлично, теперь мы подготовим файл автоответов. Когда наш сервер в дц Hetzner будет загружаться он скачает этот файл и будет использовать информацию из него для того чтобы установить Citrix Xen Server 6 в автоматическом режиме. Нам приходится прибегать к таким методам потому что мы не можем видеть экран сервера и контролировать что на нем происходит, следовательно и ответить на вопросы установщика не сможем. Создание файла автоответов лучше производить на Web-сервере на котором мы распаковали образ диска Citrix XenServer 6.

И так, первая строка, в ней мы указываем тип Storage Repository. В нашем случае указан lvm.

<installation mode="fresh" srtype="lvm">

2 строка, мы указываем диск на который будем ставить Citrix XenServer 6 на сервере Hetzner. В данном случае sda. И указываем что не требуется создание диска для гостевых систем.

<primary-disk gueststorage="no">sda</primary-disk>

 

В 3 строке указываем keymap, т.к. русская локализация не поддерживается, выбираем en.

<keymap>en</keymap>

4 строка задаёт hostname сервера, в нашем случае это xenserver-ex4s.

<hostname>xenserver-ex4s</hostname>

В 5 строке мы задаём пароль root пользователя сервера. В примере он задан my_password.

<root-password>my_password</root-password>

6 строка. В ней мы указываем что установка будет происходить по url и адрес, откуда установщику брать пакеты. Вам необходимо заменить 8.8.8.8 на ip адрес вашего Web-сервера на который вы выгружали образ диска Citrix XenServer.

<source type ="url">http://8.8.8.8/xenserver/</source>

7 строка это всего лишь комментарий, его трогать не надо. Просто добавьте в файл. Она говорит о том что не нужно выполнять никаких дополнительных скриптов после окончания установки.

<!-- No Post install scripts configured -->

В 8 строке мы указываем основной сетевой интерфейс и способ получения ip. В примере интерфейс указан eth0 и static.

<admin-interface name="eth0" proto="static">

 

Скорее всего восьмую строку модифицировать вам не придется т.к. сервера с несколькими интерфейсами hetzner не предоставляет, а способ получения ip неизменен.
9 строка. В ней необходимо заменить  hetzner_server_ip на ip адрес вашего сервера в дц Hetzner. Его можно посмотреть в панели администрирования.

<ip>hetzner_server_IP</ip>
10 строка. Маска подсети, её можно увидеть если на сервере в дц Hetzner дать команду ifconfig в консоль.

<subnet-mask>255.255.255.224</subnet-mask>
11 строка. Адрес шлюза сервера в дц Hetzner. Эту информацию тоже можно узнать из вывода команды ifconfig.

<gateway>hetzner_gateway_IP</gateway>
12 строку пропустим, её модифицировать не нужно. Её просто необходимо добавить в файл.

</admin-interface>
13-15 строки задают сервера dns. В принципе оставьте без изменений.

<nameserver>213.133.98.98</nameserver>
<nameserver>213.133.99.99</nameserver>
<nameserver>213.133.100.100</nameserver>

16 строка задаёт временную зону сервера.

<timezone>Europe/Berlin</timezone>

17 задаёт способ конфигурации времени.

<time-config-method>ntp</time-config-method>

18-20 задают сервера для синхронизации времени.

<ntpservers>213.239.239.164</ntpservers>
<ntpservers>213.239.239.165</ntpservers>
<ntpservers>213.239.239.166</ntpservers>

 

Посмотрим что у нас получилось:

 

<installation mode="fresh" srtype="lvm">
<primary-disk gueststorage="no">sda</primary-disk>
<keymap>en</keymap>
<hostname>xenserver-ex4s</hostname>
<root-password>my_password</root-password>
<source type ="url">http://8.8.8.8/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.xml в каталоге /var/www/xenserver на Web-сервере, т.е. в тот же каталог куда мы распаковали образ Citrix XenServer 6.

Установка Citrix XenServer 6 на сервер Hetzner.

Пока мы подготавливали образ, на наш сервер в дц Hetzner уже установилась Ubuntu 12.04 и мы можем начать установку Citrix XenServe’a. Для этого нам понадобится войти в кнсоль управления сервером, под логином root и паролем который нам выдала панель управления в пункте 1.

Далее вводим команды:

#Переходим в каталог /boot 
cd /boot
#Cкачиваем необходимые файлы
wget http://xx.xx.xx.xx/xenserver/install.img
wget http://xx.xx.xx.xx/xenserver/boot/vmlinuz
wget http://xx.xx.xx.xx/xenserver/boot/xen.gz
 Необходимо заменить xx.xx.xx.xx на ip нашего Web-сервера.

Теперь необходимо настроить Grub для загрузки ядра Xen при следующем включении.

Для этого нам необходимо отредактировать файл: /boot/grub/grub.cfg

nano /boot/grub/grub.cfg

Откроется окно редактора, в нем вам нужно найти первый шаблон загрузки и привести его к следующему виду:

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 /boot/xen.gz dom0_mem=752M acpi=off nosmp noapic noirqbalance
module /boot/vmlinuz answerfile=http://xx.xx.xx.xx/xenserver/xenserver.xml install
module /boot/install.img
}

Особое внимание стоит уделить последним 3 строкам. В оригинальном файле они не такие. Все строки после search —no-floppy —fs-uuid и до закрывающейся фигурной скобки в оригинальном файле необходимо удалить и скопировать из приведенного выше файла, заменив в нем xx.xx.xx.xx на ip вашего Web-сервера.
Теперь сохраняем файл CTRL+X.
Прежде чем сделать финальный аккорд после которого начнется, нам нужно позаботиться о слежении за состояние сервера(стартовал или нет) во время установки, а лишь потом перезагружать сервер.

Следим за установкой.

У меня установка длилась порядка 2х часов. Нам не терпится узнать что же там происходит на сервере и работает ли он вообще. Для этого есть ряд утилит которые могут косвенно свидетельствовать о том работает сервер или повис.

PING

Да да, просто в консоли можно ввести

ping -t ip_hetzner_server

заменив ip_hetzner_server на ip вашего сервера в hetzner и увидеть, есть ли ответ от сервера. Во время перезагрузки ответа не будет. Перезагрузка длится примерно 1-3 минуты. если сервер не отвечает дольше то значит что то пошло не так.

Logfile

Еще одним из показателей может быть лог файл web-сервера. Т.е. если наш сервер работает то и в логах web-сервера мы будем видеть заприси о том что идут запросы. Посмотреть можно так:

tail -f /var/log/apache2/*.log

Установка длится в зависимости от скорости связи между Web-сервером и сервером в Hetzner. У меня скорость не поднималась более 200кб\сек. Не знаю уж чья это вина. Может Hetzner режет входящий трафик, может у меня канал слабый. Установка у меня длилась примерно 2 часа.

После того как сервер все установит он перезагрузится автоматически. Это вы сможете увидеть в выводе команды PING(перестанут приходить ответные пакеты).

 

Стартуем установку

Теперь, когда всё готово, скрестив пальцы перезагружаем сервер.
reboot
Теперь скорее открываем консоль, если вы её свернули и смотрим. Сначала пропадут пинги до сервера, затем они должны появиться примерно через 1-3 минуты. Как только пинги появились, начинаем смотреть на консоль web-сервера если пошли запросы от вашего Hetzner сервера, значит все отлично — на пару часиков можем пойти проветриться, нам предстоит еще много трудных задач.

Конец установки.

О том что установка завершена может свидетельствовать следующая запись в лог файле.
Web-cервера:
"GET /xenserver/packages.XS602E001.XS602E002/xapi-core-0.2-3310.i686.rpm HTTP/1.1" 200 6671241 "-" "Python-urllib/2.4"

Это последний файл из набора, который должен скачать установщик.

 

Настройка RAID1(mdraid) на сервере Hetzner

Подготовим диски

По завершении установки, подключаемся к серверу по ssh и начинаем настройку RAID raid массива.

Для начала посмотрим какие разделы на диске создал установщик:

sgdisk -p /dev/sda 

 

Эта команда выведет:

Вывод команды sgdisk -p /dev/sda

И так, что мы видим. 3 раздела.

  1. Раздел где собственно и находится Citrix XenServer.(4 гб)
  2. Раздел для бекапов. Туда XenServer бекапится. Например при накатывании обновлений.(4 гб)
  3. Раздел для гостевых машин.(690 гб — это только в моём случае, в вашем он может отличаться из за размера диска)

На всякий случай лучше записать куда нибудь данные из последних 3х строк. Это параметры созданных установщиком разделов.

Далее полностью сотрем таблицу разделов на втором диске

sgdisk --zap-all /dev/sdb

Теперь установим GPT таблицу разделов:
sgdisk --mbrtogpt --clear /dev/sdb 

Если система выводит сообщение о том что использует старую таблицу разделов и для новая таблица разделов будет применена только после перезагрузки, сразу же перезагружаемся и продолжаем выполнение команд по этой инструкции. 

Создадим первый раздел:

sgdisk --new=1:2048:8388641 /dev/sdb
sgdisk --typecode=1:fd00 /dev/sdb
sgdisk --attributes=1:set:2 /dev/sdb

Цифры выделенные оранжевым это начало и конец раздела. Их можно взять из вывода команды sgdisk -p /dev/sda

Создадим второй раздел:

sgdisk --new=2:8390656:16777249 /dev/sdb
sgdisk --typecode=2:fd00 /dev/sdb

Создадим третий раздел:

sgdisk —new=3:16777250:1465149134 /dev/sdb
sgdisk —typecode=3:fd00 /dev/sdb

Для проверки можно запустить команду

sgdisk -p /dev/sdb

Её вывод должен быть идентичен выводу, который мы получили в начале разметки диска(см.Первую картинку).

Добавление дисков в RAID1 массив на Hetzner для Citrix XenServer 6.

Теперь создадим 3 массива для 3х разделов. Это делается для того чтобы при крахе одного раздела не полетели к чертям данные из остальных разделов.

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 missing /dev/sdb2

mdadm --create /dev/md2 --level=1 --raid-devices=2 missing /dev/sdb3

Стоит обратить внимание на то что мы создаем RAID массивы в degrade режиме, т.е. RAID массивы из одного диска. Это делается потому что с разделами на диске sda сейчас работает Citrix XenServer и при добавлении в массив могут быть проблемы.

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

Переносим Citrix XenServer 6 на RAID массив.

Создадим файловую систему на первом RAID массиве:

mkfs.ext3 /dev/md0

Смонтируем первый раздел RAID массива в папку /mnt:

mount /dev/md0 /mnt

Скопируем корневую файловую систему на смонтированный в папку /mnt раздел RAID массива md0

cp -vxpR / /mnt

Теперь изменим файл конфигурации дисков для Citrix XenServer 6 и покажем ему что теперь загружаться нужно с RAID массива. Для этого открываем:

nano /mnt/etc/fstab

Заменяем: root=LABEL=root-parmckln на /dev/md0. Нажимаем CTRL+X чтобы выйти и Y чтобы подтвердить сохранение.

 

Теперь установим загрузчик Citrix XenServer 6 в RAID массив.

mount --bind /dev /mnt/dev
mount -t sysfs none /mnt/sys
mount -t proc none /mnt/proc
chroot /mnt /sbin/extlinux --install /boot
dd if=/mnt/usr/share/syslinux/gptmbr.bin of=/dev/sdb

Создадим новый образ Initrd, который содержит драйверы для новой корневой файловой системы на массиве RAID.

chroot /mnt
mkinitrd -v -f --theme=/usr/share/splash --without-multipath /boot/initrd-`uname -r`.img `uname -r`
exit 

Наконец отредактируем /mnt/boot/extlinux.conf.
nano /mnt/boot/extlinux.conf  и заменим все упоминания о старой корневой файловой системе ( root=LABEL=xxx ) на root=/dev/md0.

Теперь необходимо размонтировать md0.

umount -l /dev/md0 

Далее в панели администрирования сервера Hetzner выбираем загрузку в Rescue режиме и запоминаем пароль. Затем перезагружаем сервер. Ждем пока загрузится и подключаемся по ssh.

Расставим метки на разделы первого диска (sda):

sgdisk --typecode=1:fd00 /dev/sda
sgdisk --typecode=2:fd00 /dev/sda
sgdisk --typecode=3:fd00 /dev/sda 

Добавляем в RAID массив разделы первого диска:

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

Сразу после добавления начнется синхронизация дисков, это дело долгое, но процесс должен дойти до конца. Наблюдать вы можете запустив команду:
watch -n 1 cat /proc/mdstat

Как только сервер синхронизирует все разделы, можно перезагрузить сервер. Сервер загрузится уже с RAID массива и все что вам останетcя это создать Storage Repository(SR). Делается это так:

xe sr-create content-type=user type=lvm device-config:device=/dev/md2 shared=false name-label="Local storage"

Вот собственно и все. Можно подключаться XenCenter и работать. Удачи! Буду рад вопросам и пожеланиям в комментариях.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *