Разворачиваем виртуальные сервера

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

В общем, поставил я и настроил OpenVZ под Ubuntu 8.04 LTS, о чем и хочу сегодня рассказать.

С самого начала нужно уяснить, что защита «Хост-сервера» – это основное, так как если злоумышленник получит доступ к нему, то все гостевые сервера будут скомпрометированы. Поэтому мы туда не ставим ничего лишнего. В идеале — OpenSSH и все.

1. Разметка файловой системы.

В принципе, разметка вся стандартная, то есть та, к которой Вы привыкли. За исключением одного раздела, где будут лежать все виртуальные машины «/vz». Он, естественно должен быть самым большим, так как там будут шаблоны виртуалок, сами гостевые сервера и т.п.

2. Установка ядра системы с виртуализацией.

Первое, что нам нужно — это установить ядро с поддержкой виртуализации и вычистить ненужное. Для этого запускаем

sudo apt-get install linux-openvz vzctl

Перезагружаемся с новым ядром и сносим лишнее серверное ядро.

sudo apt-get remove –purge –auto-remove linux-image-.*server

Теперь правим параметры ядра в /etc/sysctl.conf

# On Hardware Node we generally need
# packet forwarding enabled and proxy arp disabled

net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1

# Enables source route verification
net.ipv4.conf.all.rp_filter = 1

# Enables the magic-sysrq key
kernel.sysrq = 1

# TCP Explict Congestion Notification
#net.ipv4.tcp_ecn = 0

# we do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

Применяем параметры ядра

sudo sysctl -p

Переносим все из /var/lib/vz в /vz и создаем симлинк на раздел

sudo mv /var/lib/vz /vz
sudo rm -f /var/lib/vz
sudo ln -s /vz /var/lib/vz

3. Установка гостевой системы

Установка гостевой системы абсолютно проста и прозрачна. Скачиваем образ системы с сайта http://openvz.org/download/template/cache/ (например, ubuntu) в каталог /vz/template/cache и пишем скрипт для более быстрого развертывания сервера.

#!/bin/bash

OT=’ubuntu-8.04-i386-minimal’ # Название файла шаблона
VEID=’101′ # номер виртуальной машины
VEIP=’192.168.0.101′ # IP виртуальной машины
VEHN=’virtual101.localnet’ # имя машины
VENS=’192.168.0.1′ # DNS

sudo vzctl create $VEID –ostemplate $OT
sudo vzctl set $VEID –ipadd $VEIP –save
sudo vzctl set $VEID –hostname $VEHN –save
sudo vzctl set $VEID –nameserver $VENS –save
sudo vzctl set $VEID –onboot yes –save
sudo vzctl set $VEID –numothersock 100 –save
sudo vzctl set $VEID –numtcpsock 100 –save
sudo vzctl set $VEID –numproc 150 –save
sudo vzctl set $VEID –vmguarpages 65536 –save # гарантированный объем 256Мб, в блоках по 4Кб
sudo vzctl set $VEID –privvmpages 131072 –save # максимальный объем 512Мб, в блоках по 4Кб
sudo vzctl start $VEID
sudo vzctl enter $VEID

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

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

Поделиться этой заметкой с друзьями:

Добавь меня:

Вы можете оставить комментарий, или поставить трэкбек со своего сайта.

9 комментариев(я)

  • 25.11.2008 08:17, www2 сказал:

    Настоятельно рекомендую воспользоваться vzctl версии 3.0.23. Только с его помощью можно настроить автоматическое включение veth-интерфейсов в бридж: http://vladimir-stupin.blogspot.com/2008/11/openvz-debian.html

    Кроме того, всё запустить в контейнерах не удастся. Нельзя запустить pppd, pure-ftpd без напильника, смонтировать SMB-шару: http://vladimir-stupin.blogspot.com/2008/11/openvz.html
    А мне очень хотелось настроить в отдельном VE роутер, а в другом VE файловый сервер на samba и pure-ftpd. Samba-сервер работает, но воспользоваться им внутри других VE нельзя :(

    • 15.03.2009 02:41, sHaggY_caT сказал:

      2 Www2: бридж и вообще Veth нужны далеко не всегда.
      Samba для файлообмена между *nix машинами, вообще, имхо, зло.

      Есть NFS .кстати, внутри контейнера сервер работает только в user-mode реализации

      Решение проблемы вижу таким: с файлопомойки, если это отдельный физический тазик, все монтируется в какой-нить /mnt/ на HN, а от туда делается
      mount –bind

      Вообще, это контейнеры) потрясающая вещь, но не стоит воспринимать ее как виртуальную машину)
      Поэтому, решение с mount –bind вполне себе удобно и красиво (команда прописывается в /etc/vz/conf/.mount)
      Думаю,что самбу-шару тоже можно сделать mount –bind

      Я вообще бы хотела юзать связку Xen/KVM + OpenVZ в DomU + несколько DomU с тем ПО, которое не запуститься в OVZ контейнере )

      2 автор блога

      Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/client2/website35/web/wp-content/plugins/openid/Auth/OpenID/BigMath.php on line 255

      Поднимите лимиты в php.ini :)

      • 16.03.2009 15:59, www2 сказал:

        sHaggY_caT, привет.

        >Samba для файлообмена между *nix машинами, вообще, имхо, зло.

        Мне samba нравится больше NFS. NFS можно пользоваться без опаски лишь в локальной сети, где нет чужих машин. В ином случае UDP-сервер или клиент можно сравнительно легко подделать. У NFS есть режим с использованием TCP, да вот незадача, у машин могут не совпадать карты uid/gid и опять-таки кто-то может получить доступ куда не надо, правда уже в пределах моих машин. С samba я уверен в защите и могу смонтировать каталог с теми uid и gid, которые я укажу.

        >Решение проблемы вижу таким: с файлопомойки, если это отдельный физический тазик, все монтируется в какой-нить /mnt/ на HN, а от туда делается
        mount –bind

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

        >Я вообще бы хотела юзать связку Xen/KVM + OpenVZ в DomU + несколько DomU с тем ПО, которое не запуститься в OVZ контейнере )

        Я бы тоже. Только вот беда: сейчас в свежих ядрах возникли какие-то заморочки с Xen (точнее – dom0), KVM не позволяет использовать мой устаревший процессор (нету у него функций аппаратной поддержки виртуализации), а в OpenVZ не всё работает.

        Для Xen в режиме dom0 можно было бы воспользоваться NetBSD, а уж в domU запустить Linux с поддержкой OVZ. Но похоже, но недостатки этого решения, пожалуй, перевешивают все достоинства.

        В общем, нет в жизни счастья :’-(

        • 20.03.2009 13:26, sHaggY_caT сказал:

          в RHEL/CentOS в свежих ядрах, умеющих новое железо, с поддержкой Xen все очень хорошо, и будет хорошо до 2014года минимум)

          NetBSD, маргинальный ужас какой-то под дурацкой лицензией :)
          Понимаю, еще бы фря, такая же свободная от того, что бы быть свободной лицензия, но, хотя бы, эта ОС более-менее распространена, и хоть немного (мне и большинству нового поколения никсовых ИТ-ков) понятна…

          А зачем кастомерам давать какие-то смонтированные ресурсы?

          Я делаю mount –bind только для своих VE, кастомерам (которых пока нет) масимум что можно дать, это, имхо, ftp-аккаунт для backup’а)

          • 20.03.2009 13:46, www2 сказал:

            >в RHEL/CentOS в свежих ядрах, умеющих новое железо, с поддержкой Xen все очень хорошо, и будет хорошо до 2014года минимум)

            Угу. Только мне Red Hat не нравится. На работе ещё согласился бы попользовать, а дома в целях, связанных с хобби – увольте.

            >NetBSD, маргинальный ужас какой-то под дурацкой лицензией :)

            Маргиналы – это те, кто орёт про дурацкую лицензию и отсталость NetBSD.

            >Понимаю, еще бы фря, такая же свободная от того, что бы быть свободной лицензия, но, хотя бы, эта ОС более-менее распространена, и хоть немного (мне и большинству нового поколения никсовых ИТ-ков) понятна…

            Только вот незадача. Фря не умеет Xen dom0, а NetBSD – умеет. Про распространённость фри могу напомнить присказку: «Миллионы мух не могут ошибаться, в говне что-то есть.» Я не хочу обидеть фрю, она заслуживает уважения, но в качестве аргумента в её пользу приводить её распространённость это – гхмм…

            Про понятность поколению могу сказать: зачем ещё один клон линукса в виде фри? Вот NetBSD и DragonFly BSD не стремятся быть на кого-то похожими, ни за кем не гонятся и выглядят они значительно интереснее мэйнстрима.

            >А зачем кастомерам давать какие-то смонтированные ресурсы?

            Захотел я как кастомер, имеющий две VPS, с одной VPS экспортировать ресурсы на другую, а не могу – нужна помощь хостера. Хостер говорит – пшнах, не буду я через HN пробрасывать твои ресурсы, это не безопасно. Я сам себе хостер и кастомер, но для меня OVZ интересна прежде всего с точки зрения существенного увеличения безопасности.

            >Я делаю mount –bind только для своих VE, кастомерам (которых пока нет) масимум что можно дать, это, имхо, ftp-аккаунт для backup’а)

            Ну вот и всё выяснили. Вы давать не хотите, а кастомер сам себе – не может.

            • 20.03.2009 14:21, sHaggY_caT сказал:

              Почему столько людей не любит RedHat? Мне это никогда не было понятно :(

              NetBSD я не видела, может, она и белая и пушистая, и я не права, но так же, например, очень себе Ъ Plan9, но ее же в prodaction юзать нельзя, мне кажется, что и у NetBSD тоже не все хорошо с «ынтерпрайзнотустью»

              Для двух vps можно использовать ftp + fuse. Не пробовала, но, думаю, что получиться.
              Но у меня все на mount –bind + nfs.

              Что касается nfs, главное не монтировать то, что монтировать нельзя) или монтировать с ограниченными правами(ro, root_squash, например ))

              Мне тоже интересно, как построить безопасную сеть на *nix платформе, со всякими LDAP, но Samb’у для этого, мне кажется, использовать вообще нельзя.
              Не хотела бы показаться голословной, но M$ сам признает, что cifs отсталый и медленный протокол.
              Сейчас нет времени искать этот текст на сайте M$, но в их руководстве о Висте есть тезис о том, что старый cifs не мог использовать возможности гигабитных сетей, что новый вистовый это уже научился, но то, что виста медленно копирует файлы, говорят почти все знакомые пользователи этой ОС.

              • 20.03.2009 14:54, www2 сказал:

                >Почему столько людей не любит RedHat? Мне это никогда не было понятно :(

                Просто мне не нравится её пакетная система – только жёсткие зависимости, и зависимости от файлов, а не от пакетов определённых версий. Я давно на неё не смотрел, может уже даже что-то изменилось к лучшему.

                >NetBSD я не видела, может, она и белая и пушистая, и я не права, но так же, например, очень себе Ъ Plan9, но ее же в prodaction юзать нельзя, мне кажется, что и у NetBSD тоже не все хорошо с “ынтерпрайзнотустью”

                NetBSD как бы и не стремится к «ынтырпрайзу». Её иногда используют в железячных файл-серверах, ну и как встраиваемую систему для всяких мелких контроллеров и прочего. Система – сильно традиционный Unix, очень компактный и чистый, с хорошо продуманной архитектурой.

                Samba, NFS и FUSE конечно не единственные решения. Всё зависит от задач. В зависимости от задачи могут подойти и такие вещи, как drdb, iSCSI, ATAoE, gmirror + ggated и может быть что-то ещё…

                • 20.03.2009 15:46, sHaggY_caT сказал:

                  Про drbd есть how-to в wiki openvz)

                  Я бы все-таки хотела как-то или ftp подружить с ldap, или сделать что-то еще в таком же духе)
                  Пока осторожно использую nfs. Даже user-mode реализация (unfsd) работает, тьфу-тьфу, очень хорошо, выдавая 70-90Mb/s в 100мегабитной сети, почти не потребляя ресурсов.

                  А что касается мягких зависимостей, а так ли они нужны?
                  Ну, можно в Debian/Ubuntu средствами пакетного менеджера сменить sendmail на postfix, но в RH это делается не сильно сложнее) если yum что-то не ставит, конфликтующий пакет всегда можно удалить)

                  Или собрать из rpm.src что-то свое) благо, что отсуствие мягких зависимостей делает сборку своих пакетов очень-очень простой)
                  а Спек rpm уже давно документирован, даже на русском языке

                  • 20.03.2009 15:59, www2 сказал:

                    >А что касается мягких зависимостей, а так ли они нужны?

                    Нужны. По крайней мере мне. И я думаю не мне одному.

                    >Или собрать из rpm.src что-то свое) благо, что отсуствие мягких зависимостей делает сборку своих пакетов очень-очень простой)

                    Не для того придумали мягкие зависимости, чтобы от них отказываться в пользу компиляции. Меня необходимость по каждому чиху что-то перекомпилировать не особо прельщает. Так начинаются каждые 9 из 10 статей про FreeBSD: «Вкомпилируем поддержку нужных нам модулей в ядро и перезагрузимся» или «Обновим дерево портов и перейдём в каталог порта XXX». Модульный подход прогрессивнее монолитного, это я думаю ни один инженер оспаривать не станет.

                    >а Спек rpm уже давно документирован, даже на русском языке

                    Что-то мне подсказывает, что спеки на apt и deb созданы и переведены на русский раньше. Строго говоря deb многие годы уже не меняется: заложенных в него возможностей до сих пор хватает с лихвой. rpm и yum развивались под влиянием идей deb и apt.

                    (Обязательно)
                    (Обязательно, не публикуется)

                    Я пришел к тебе с дискетой - рассказать, что сеть упала