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

    Вступление


    Недавно мне потребовалось перенести несколько сайтов различных клиентов на нормальный выделенный сервер (не виртуальный). Я давно выбирал, где лучше арендовать сервер и выбором стала немецкая компания 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
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 36

      +1
      Отличная статья.
      Замечаю, что в последнее время все выбирают сервера в германии. Видимо не один я думаю что там хорошо :)
        0
        Жаль не всегда и не во всем.
        У самих 18 часов сервера пролежали вчера благодаря тому что в ДЦ никого не было даже в положенное рабочее время.
        Объяснений о причинах падения так и не получили.
        Отписка:
        Hello,

        the server is online.

        Пришла через 23 часа после отправки запроса, что видно по таймстампу.
          +1
          Там дешевле, да и как говорится везде хорошо где нас нету.
          +1
          спасибо. попробую :)
            +2
            Привет соседям :) У меня тоже Hetzner, тоже XEN, правда opensuse и машинка на i7.
              –6
              Тема не раскрыта. Какие отбрывки информации. Предвижу, что сейчас пойдут возгласы типа: «тогда напиши сам» и т.п. На них ничего не отвечу и отвечать не буду. Новичек не разберется, — а профи — это руководство не нужно.
                –1
                Почему же тема не раскрыта? Как раз, по-моему, сабж пота целиком и полностью раскрыт. Или мне стоило на каждом моменте остановится и написать почему здесь нужно так, а не вот так? Я как раз собрал обрывочную информацию по предмету и сделал пошаговое руководство как сделать то-то и то-то. Если интересуют подробности, как оно все устроено внутри — добро пожаловать в мир открытой информации и Google.

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

                Сейчас эта информация актуальна, через полгода придется что-то менять. Но это жизнь — в ней все время что-то меняется.
                  –1
                  Вы написали с прeтензией на полноту. Вот я и говорю, что пост не отвечает заявленным вами себе требованиям.

                  ЗЫ прибежали хомячки и начали минусовать =))))))
                  –1
                  А мне как раз показалось это копипейст инструкция которых по всему инету мильён и маленькая тележка.
                  0
                  Пользуюсь услугами этого провайдера.
                  + крайне дёшево 100евро если не считать первый платёж, у меня вышел около 300евро (12G RAM, 4Ядра i7, 1,5TB диска в софтовом RAID1, выделенный ipkvm)
                  + толстый канал, 10 мегабит при привышении трафика — если привышений нет 100

                  — долгий пинг из Москвы, раз в 10 больше чем у московский провайдеров
                  12 packets transmitted, 12 received, 0% packet loss, time 11015ms
                  rtt min/avg/max/mdev = 58.475/59.098/59.688/0.428 ms

                    0
                    По всей германии около 60ms из Москвы, но разве для клиентов это сильно заметно?
                    Конечно в Москве с пингом 3ms за такую же цену было прекрасно, но у нас слишком мало ДЦ в России и в Москве, плюс их жадность, по ценам в 3-4 раза выше.
                      0
                      Полагаю здесь не в жадности провайдеров дело.
                      Видимо прочие расходы существенно выше. Зимой обогрев )), летом охлаждение ДЦ.
                      Расстояние между потребителями интернета в России существенно больше чем в европе.
                      Железо приходящее в Россию устаревшее на ~год.
                      Цены на устаревшее на ~год железо выше %30 чем на современно в штатах.
                      Полагаю всякого рода корупция и бюрократия не добавляют оптимизма в ценообразовании.
                    0
                    кстати, Xen собираются убрать из Debian. Как и VServer…
                      +2
                      Собираются убирать kernel-xen, так как стандартное ядро поддерживает pv_ops, и не нужно специальное пачтинное.
                      +1
                      Как раз сегодня делал практическое задание по установке Xen на Дебиан и двух виртуальных машин)) Спасибо за статью, задание то я сделал, но для шлифовки и дальней работы в нем еще понадобится время и информация, в том числе и это руководство.
                        +1
                        привет вам из близкого DC6 =)

                        Стоить отметить что для выдачи бесплатных IP адресов необходимо основание для RIPE. И основание «У меня куча сайтов, я хочу разделить их между различными IP» — не подходит. Изначально выдаётся один.

                        Что помогло получить нам IP? На одном — apache, на втором — nginx, на третьем, якобы, jabber сервер. 4й пока не выпросили, да и не торопимся.
                          0
                          И не из близкого, а того же самого! :)

                          А у меня проще было. Я написал, что «Буду использовать для раздельных виртуальных серверов». Все. Ничего больше. И мне через полтора часа пришло извещение о том, что подсеть выделена.
                            0
                            ну да, с виртуальными серверами проще. Это стопроцентное основание для RIPE.

                            Мне интересно — смогут ли они как то проверить и будут ли если взять IP под виртуальные серверы, но использовать их для сайтов…
                          +1
                          1) сколько рекомендуется отводить памяти на каждую виртуальную машину (ВМ)

                          2) где лучше располагать базу данных — на dom0 или на внутренней ВМ (ей ведь не нужен внешний IP?)

                          3) сколько всего ВМ можно создать таким образом, предполагая, что у нас сервер с > 196гб озу

                          4) сколько сайтов выдержит одна ВМ

                          5) какова политика группировки сайтов в одну ВМ

                          6) как быть, если вышла новая версия nginx… ставить ручками на каждой виртуальной машине?
                            0
                            1) Столько, сколько посчитаете нужным. Ну, правда! Единственный момент с XEN такой, что выделяемое процессорное время в условиях полной загрузки процессора пропорционально количеству выделенной памяти. Т.е. если выделили для ВМ 256Мб из 2Гб оперативки, то в условиях тотальной загрузки физического процессора, максимум можно рассчитывать на четверть от его мощности.

                            2) Опять же, там где вам кажется более разумным это сделать. Но, например, Dom0 у меня получается, что имеет аж целых два внешних IP-адреса (один изначальный, а второй из выданной подсети, чтобы работал роутинг для виртуальных машин).

                            3) Говорят, что некоторые добивались одновременного запуска 118 доменов на одной физической машине (пруф), но лучше дополнительно погуглить на эту тему.

                            4) Зависит от мощности физической ноды и мощности виртуальной машины. Скорость вычислений на виртуальной машине максимально приближена к физическим вычислениям (благо современные процессоры поддерживают виртуализацию на своем уровне).

                            5) Не понял вопроса? Можно группировать сайты по заказчику, можно по первой букве домена, по количеству посетителей. Да как угодно, хоть как того захочет левая пятка старшего менеджера.

                            6) Debian имеет nginx в репозиториях, не обязательно его ставить из исходников. Кроме этого, ребята из FirstVDS сделали свой репозиторий, где присутствует более свежая версия nginx'а.
                              0
                              1) какую-нибудь примерную формулу, типа на 10000 хитов в сутки на сайт на php нужно создавать ВМ с 512мб озу, и тогда можно посчитать предельное количество ВМ на сервер исходя из объема памяти

                              5) есть сайты разных клиентов — как их сгруппировать, какие существуют подходы? мне кажется нужно сделать ВМ-php, ВМ-rails

                              6) я имею ввиду на каждой ВМ придется делать aptitude install nginx

                                +2
                                1) «10000 хитов в сутки на сайт на php» — это все равно, что «сферический конь в вакууме». Все, все сайты на PHP, Rails, Java'е все разные. На PHP это может и handmade быть сайт, и Joomla, и Wordpress, и Drupal, и собственная CMS, может мегапортал, а может и странички-хомячки. Это нужно смотреть на то, как нагружают эти сайты систему. Так примерно кто же Вам скажет?

                                По остальным вопросам я уже ответил выше. Группировка — сугубо индивидуально. А обновление — если Вам лень в каждый сервер зайти и обновить его, то посмотрите в торону Chef, Capistrano (правда это больше для деплоя, но можно и для управления серверами использовать с успехом), другие системы управления большим парком машин.
                            0
                            почему xen, а не kvm?
                              0
                              XEN — быстрее KVM. А на выбранной машинке ресурсов и так — кот наплакал. :)
                                +2
                                это чем же он быстрей?
                                www.64bit.ru/?p=383
                                да и kvm это более перспективная технология.
                              –5
                              фигня
                                0
                                Спасибо за статью.

                                Но мне кажется, логичнее было бы устанавливать KVM на Ubuntu 9.10 Server.

                                Если вдруг у кого-то будет желание это описать — принимайте заранее мои благодарности.

                                P.S. Тоже на Hetzner
                                  +1
                                  KVM ставится гораздо проще — pve.proxmox.com/wiki/Proxmox_VE_Cluster. Вообще поставить систему поддержки виртуализации — пол дела, надо ещё наладить какую-то систему управления, вот proxmos это и делает. Из руководства:

                                  Proxmox VE Cluster enables central management of multiple physical servers. A Proxmox VE Cluster consists of one master and several nodes (minimum is a master and one node).
                                  Main features

                                  * Centralized web management
                                  * One login and password for accessing all nodes and guests
                                  * Console view to all Virtual Machines
                                  * Migration of Virtual Machines between physical hosts
                                  * Synchronized Virtual Appliance template store
                                    0
                                    Присмотрюсь на следующем сервере и к KVM'у.

                                    Но на самом деле, как говорил один мой друг: «На вкус и цвет все фломастеры разные!»

                                    На Hetzner'е можно и FreeBSD поставить на физический сервер, а можно и разные линуксовые дистрибутивы, можно KVM, можно XEN, можно OpenVZ, а кому-то нравится и будет достаточно VirtualBox'а.

                                    В этом и прелесть нашего мира — разнообразие. Если была одна технология — не было бы конкурентности.
                                      0
                                      Xen Dom0 убрали из Ubuntu 9.10 Server. Ubuntu'шники рекомендуют KVM как основную систему виртуализации.
                                      Из серверных линуксов больше всех Ubuntu нравится, поэтому прислушался к их рекомендациям…

                                      Собственно, минус KVM в невозможности установки на старые серверы (при отсутствии аппаратной поддержки виртуализации на процессоре). Пожалуй, и всё, кто-то знаете ещё минусы KVM?.. Но с Hetzner таких проблем нет — там все серваки новые…

                                      Недавно настраивал на более старом сервере — там выбор пал на CentOS&OpenVZ — это надо было как попроще… C Хen тогда что-то не получилось, эх, видел бы я эту статью раньше…

                                      Все новые сам планирую на KVM…

                                      P.S. Как вы считаете, с чем связан выбор Ubuntu в пользу KVM и отказ от дальнейшей виртутализации на базе XEN (только DomU)?
                                  0
                                  А чо ксен для последних ядер есть?
                                    0
                                    С самым последним dist-upgrade'ом у меня на этой машине такое ядрышко:
                                    uname -a
                                    Linux ???.com 2.6.26-2-xen-amd64 #1 SMP Wed Jan 13 00:12:41 UTC 2010 x86_64 GNU/Linux
                                    
                                  • UFO just landed and posted this here
                                      +1
                                      Почему копипастер, это писал один и тотже человек.
                                        0
                                        Прежде, чем писать такого рода комментарий, стоит лучше начать с имени автора. А вдруг один и тот же человек, нет?
                                      • UFO just landed and posted this here

                                        Only users with full accounts can post comments. Log in, please.