Pull to refresh

Пошаговое руководство по установке Debian 5.0 Lenny + XEN + LVM + Routing на Hetzner DS3000

Reading time 7 min
Views 15K

Вступление


Недавно мне потребовалось перенести несколько сайтов различных клиентов на нормальный выделенный сервер (не виртуальный). Я давно выбирал, где лучше арендовать сервер и выбором стала немецкая компания Hetzner Online и ее тарифный план DS 3000 (AMD Athlon 64 X2 4200+/2Gb DDR/2x160Gb HDD — как выяснилось потом — на сервере оказалось два винчестера по 320Гб).

Но мне не хотелось всех размещать на одном сервере. Поэтому было решено сделать виртуальные машины на базе технологии XEN (к тому же в придачу к серверу на ТП DS 3000 Hetzner Online бесплатно выдает 6 IP-адресов, которые очень удобно будут смотреться для отдельных проектов). В Сети можно найти много информации по теме настройки и самого XEN'а на Debian'e и настройки роутинга на нем, поднятии виртуалок на LVM (lvm дает большее быстродействие, чем виртуалки на базе image-файлов), даже в вики самой фирмы была информация об этом (но на немецком — Google Translate нам в помощь). Но. Было одно «Но». Она вся была разрозненная и кусками. Я нигде не смог найти толкового пошагового руководства для настройки «от» и «до».

Поэтому, всем кому интересна эта тема,

«Сервер с самого начала»


Идем на https://robot.your-server.de/server, выбираем свой сервер и жмем на таб «Rescue», нашим выбором станет «Linux», «64 bit», сохраним пароль, который нам покажут. Потом перейдем к закладке «Reset» и выбираем «Send CTRL+ALT+DEL to the server». Через 2 минуты после этого можно приконнектиться по SSH к нашему серверу по выданному изначально IP-адресу. Заходим пользователем «root» и сохраненным ранее паролем.

После того, как мы успешно вошли в систему, мы увидим примерно такую информацию и все, что от нас требуется — запустить «installimage»:

[...] 
Hardware data: 

   CPU  Athlon 64 X2 Dual Core 4200+ 
   CPU  Athlon 64 X2 Dual Core 4200+ 
   RAM  1946 MB 
   Disk /dev/sda: 320.0 GB  (=> 305 GIB) 
   Disk /dev/sdb: 320.0 GB  (=> 305 GIB) 

root@rescue ~ # installimage

Из меню мы выберем «Debian» ⇒ «Debian-50-lenny-64-minimal» (большего нам и не нужно).

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

SWRAID 1 # эти строки проверить - должны быть равны 1!
SWRAIDLEVEL 1 # эти строки проверить - должны быть равны 1!
[...] 
HOSTNAME root.domain.com # может и не root, но мне так удобно 
[...] 
PART swap  swap 4G 
PART /     ext3 10G 
PART /data ext3 all

В нашем случае мы делаем 4Gb своп, 10Gb оставляем для Dom0 (Host в терминологии XEN), а все остальное место отдаем под директорию /data, которая впоследствии будет сконвертирована в LVM.

Ок, далее у нас по программе: [F10], [Yes], [Yes].

                Hetzner Online AG - installimage 

  Your server will be installed now, this will take some minutes 
             You can abort at any time with CTRL+C ... 

         :  Reading configuration                           done 
   1/13  :  Deleting partitions                             done 
   2/13  :  Creating partitions and /etc/fstab              done 
   3/13  :  Creating software RAID level 1                  done 
   4/13  :  Formatting partitions 
         :    formatting /dev/md0 with swap                 done 
         :    formatting /dev/md1 with ext3                 done 
         :    formatting /dev/md2 with ext3                 done 
   5/13  :  Mounting partitions                             done 
   6/13  :  Extracting image (local)                        done 
   7/13  :  Setting up network for eth0                     done 
   8/13  :  Executing commands inside chroot                done 
   9/13  :  Setting up miscellaneous files                  done 
  10/13  :  Setting root password                           done 
  11/13  :  Installing bootloader grub                      done 
  12/13  :  Running some debian specific functions          done 
  13/13  :  Clearing log files                              done 

                  INSTALLATION COMPLETE 
   You can now reboot and log in to your new system with 
  the same password as you logged in to the rescue system. 
root@rescue ~ #

Все. Можем перезагружаться в нашу свеже-установленную систему.

root@rescue ~ # shutdown -r now

«Осваиваемся на новом месте»


После входа в систему (для чего используем логин «root» и сохраненный ранее пароль), первым делом лучше всего сменить пароль рута:

root:~# passwd 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

Затем обновим систему:

root:~ # apt-get update 
root:~ # apt-get dist-upgrade

LVM


На очереди: создание раздела LVM. Для начала попробуем установит сам пакет (если вдруг по какой-то причине он не был уставновлен, в моем случае все было установлено сразу):

root:~# apt-get install lvm2

Отмонтируем созданный на этапе инсталляции раздел под LVM:

root:~# umount /data/

Также из файла "/etc/fstab" удалим строку, которая отвечала за монтирование этого раздела (строку, которая начинается с "/dev/md2").

Создадим на его месте раздел LVM:

root:~# pvcreate /dev/md2 
  Physical volume "/dev/md2" successfully created

Создадим группу:

root:~# vgcreate vgvm /dev/md2 
  Volume group "vgvm" successfully created

«Где же обещанные дополнительные 6 IP-адресов?»


Перед тем, как приступить к настройке XEN, нам нужно получить дополнительные адреса (которые так любезно=бесплатно выдаются Hetzner'ом). Для этого идем опять в панель управления (https://robot.your-server.de/server, выбираем свой сервер и закладку «IP»). В нижней части щелкаем по ссылке «Ordering of additional IP, failover IP or subnet» и заказываем дополнительную подсеть для нашего сервера. Через некоторое время (в будние дни от силы час-полтора) на контактный email свалится сообщение на двух языках о том, что подсеть выделена и ее параметры. Параметры могут быть примерно такими (их мы будем использовать в дальнейшей настройке):

IP: 78.46.242.?8
Mask: 255.255.255.248
Broadcast: 78.46.242.?5

(знак вопроса — так, лишняя защита от посторонних глаз)

Установка и конфигурирование XEN


Установим сам xen и его окружение:

root:~# aptitude install xen-hypervisor xen-linux-system-2.6.26-2-xen-amd64 xen-utils xenstore-utils xenwatch xen-shell xen-tools

В файле "/etc/modules" на необходимо поправить строку «loop»:

[...] 
loop max_loop=64

Исправим файл конфигурации "/etc/xen/xend-config.sxp": закомментируем строки "(network-script network-dummy)" и "(vif-script vif-bridge)", а затем добавим (чуть ниже закомментированной "(vif-script..."):

[...] 
(network-script 'network-route netdev=eth0') 
(vif-script     vif-route) 
[...]

В файле "/etc/xen-tools/xen-tools.conf" сделаем следующие изменения:

[...] 
## 
# 
# If you don't wish to use loopback images then you may specify an 
# LVM volume group here instead 
# 
## 
lvm = vgvm # Здесь мы указываем имя логической группы, которую создали ранее с помощью команды "vgcreate"

[...] 

## 
#  Disk and Sizing options. 
## 
# 
size   = 32Gb     # Размер диска для виртуальной машины по умолчанию
memory = 256Mb    # Оперативная память по умолчанию 
swap   = 1024Mb   # Размер свопа по умолчанию
# noswap = 1
fs     = ext3     # Файловая система для раздела
dist   = lenny    # Дистрибутив по умолчанию
image  = sparse

[...] 

## 
# Networking setup values. 
## 

# 
# Uncomment and adjust these network settings if you wish to give your 
# new instances static IP addresses. 
# 
gateway   = 78.46.242.?9 
netmask   = 255.255.255.248 
broadcast = 78.46.242.?5 

[...] 

# 
# Uncomment the following line if you wish to interactively setup 
# a new root password for images. 
# 
passwd = 1 

[...] 

# 
#  The architecture to use when using debootstrap, rinse, or rpmstrap. 
# 
#  This is most useful on 64 bit host machines, for other systems it 
# doesn't need to be used. 
# 
arch=amd64 

[...] 

# 
# The default mirror for debootstrap to install Debian-derived distributions 
# 
mirror = http://ftp2.de.debian.org/debian/ 

[...] 

# 
#  If you're using the lenny or later version of the Xen guest kernel you will 
# need to make sure that you use 'hvc0' for the guest serial device, 
# and 'xvdX' instead of 'sdX' for serial devices. 
# 
#  You may specify the things to use here: 
# 
serial_device = hvc0 #default 
# serial_device = tty1 
# 
disk_device = xvda #default 
# disk_device = sda 

[...]

Для того, чтобы настроить роутинг для виртуальных машин XEN, нам на хост-машине (Dom0) необходимо к сетевому интерфейсу eth0 добавить еще один адрес из выданной подсети (т.к. первоначальный адрес находится совершенно в другой подсети, например, у моего сервера был примерно таким 213.239.234.?7, а выданная подсеть в 78.46.242.?8).

Для настройки дополнительного адреса я использовал shell-скрипт, взяты отсюда http://wertarbyte.de/debian/ifupdown/addresses. В начале самого скрипта есть README, которая описывает куда его «положить» и что-куда написать потом.

Но если по-русски, то положить его надо в "/etc/network/if-up.d/", назвав так же — «addresses», сделать link («ln -s») в директорию "/etc/network/if-down.d/", чтобы при перезагрузке сервера адрес снимался, сделать этот скрипт исполняемым («chmod +x /etc/network/if-up.d/addresses»), а затем в "/etc/network/interfaces" написать примерно следующее:

[...]
# device: eth0 
auto  eth0 
iface eth0 inet static 
  address   213.239.234.?7 
  broadcast 213.239.234.?1 
  netmask   255.255.255.248 
  gateway   213.239.234.?5 
  addresses 78.46.242.?9/29 # мы добавили эту строчку
[...]


Теперь поправим наш sysctl.conf:

### Hetzner Online AG installimage 
# sysctl config 
net.ipv4.ip_forward=1 
net.ipv4.conf.all.rp_filter=1 
net.ipv4.icmp_echo_ignore_broadcasts=1 
net.ipv6.conf.all.forwarding=1 
net.ipv4.conf.default.proxy_arp=1

А теперь перезагрузим сервер уже с новым XEN-ядром и сделанными настройками:

root:~# shutdown -r now

«Ну и где же сами виртуальные машинки?» — «Уже здесь!»


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

Давайте уже создадим наш первый виртуальный сервер и присвоим ему свободный IP-адрес из выданной подсети:

root:~# xen-create-image --hostname=example --ip=78.46.242.?0 --memory=512 --role=udev

При создании image'а мы можем переназначить определенные параметры, как, например, в этом случае мы дали нашему виртуальному серверу 512Мб оперативной памяти (а в конфиге по умолчанию стоит 256Мб).

После этой команды пройдет минуты 3-4, у вас спросят пароль с подтверждением для root'а (не для root'а хост машины, а для root'а на новой виртуальной машине).

После этого можно запустить саму виртуальную машину, посмотреть то, что она появилась в списке запущенных (кроме этого на Dom0-машине сразу уменьшится объем доступной оперативной памяти):

root:~# xm create /etc/xen/example.cfg 
Using config file "/etc/xen/example.cfg". 
Started domain example 
root:~# xm list 
Name                                        ID   Mem VCPUs      State   Time(s) 
Domain-0                                     0  1485     2     r-----    123.3 
example                                      1   512     1     r-----      1.7

Теперь мы можем войти в консоль этой машины и начать настраивать ее так, как нам того захочется:

root:~# xm console example

Если представленная в этом руководстве информация окажется хоть кому-то полезна, то мне будет приятно. Считаю, что сделал хорошее дело, собрав в один туториал множество разных.

Английская версия будет находится здесь: wiki.summercode.com
Tags:
Hubs:
+53
Comments 36
Comments Comments 36

Articles