Привезли мне сегодня весьма мощный сервер и решил я поднять там несколько виртуальных серверов. Несколько 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 disablednet.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′ # DNSsudo 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 и мы сразу попадаем на него.
Собственно говоря — это все. Дальше мы работает с ним как с обычным сервером. Надеюсь эта информация будет Вам полезна и Вы найдете как ее применить в условиях избытка мощностей. :)

Рубрики
Теги: 
Настоятельно рекомендую воспользоваться vzctl версии 3.0.23. Только с его помощью можно настроить автоматическое включение veth-интерфейсов в бридж:
Кроме того, всё запустить в контейнерах не удастся. Нельзя запустить pppd, pure-ftpd без напильника, смонтировать SMB-шару:
А мне очень хотелось настроить в отдельном VE роутер, а в другом VE файловый сервер на samba и pure-ftpd. Samba-сервер работает, но воспользоваться им внутри других VE нельзя :(
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 :)
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. Но похоже, но недостатки этого решения, пожалуй, перевешивают все достоинства.
В общем, нет в жизни счастья :’-(
в RHEL/CentOS в свежих ядрах, умеющих новое железо, с поддержкой Xen все очень хорошо, и будет хорошо до 2014года минимум)
NetBSD, маргинальный ужас какой-то под дурацкой лицензией :)
Понимаю, еще бы фря, такая же свободная от того, что бы быть свободной лицензия, но, хотя бы, эта ОС более-менее распространена, и хоть немного (мне и большинству нового поколения никсовых ИТ-ков) понятна…
А зачем кастомерам давать какие-то смонтированные ресурсы?
Я делаю mount –bind только для своих VE, кастомерам (которых пока нет) масимум что можно дать, это, имхо, ftp-аккаунт для backup’а)
>в RHEL/CentOS в свежих ядрах, умеющих новое железо, с поддержкой Xen все очень хорошо, и будет хорошо до 2014года минимум)
Угу. Только мне Red Hat не нравится. На работе ещё согласился бы попользовать, а дома в целях, связанных с хобби – увольте.
>NetBSD, маргинальный ужас какой-то под дурацкой лицензией :)
Маргиналы – это те, кто орёт про дурацкую лицензию и отсталость NetBSD.
>Понимаю, еще бы фря, такая же свободная от того, что бы быть свободной лицензия, но, хотя бы, эта ОС более-менее распространена, и хоть немного (мне и большинству нового поколения никсовых ИТ-ков) понятна…
Только вот незадача. Фря не умеет Xen dom0, а NetBSD – умеет. Про распространённость фри могу напомнить присказку: «Миллионы мух не могут ошибаться, в говне что-то есть.» Я не хочу обидеть фрю, она заслуживает уважения, но в качестве аргумента в её пользу приводить её распространённость это – гхмм…
Про понятность поколению могу сказать: зачем ещё один клон линукса в виде фри? Вот NetBSD и DragonFly BSD не стремятся быть на кого-то похожими, ни за кем не гонятся и выглядят они значительно интереснее мэйнстрима.
>А зачем кастомерам давать какие-то смонтированные ресурсы?
Захотел я как кастомер, имеющий две VPS, с одной VPS экспортировать ресурсы на другую, а не могу – нужна помощь хостера. Хостер говорит – пшнах, не буду я через HN пробрасывать твои ресурсы, это не безопасно. Я сам себе хостер и кастомер, но для меня OVZ интересна прежде всего с точки зрения существенного увеличения безопасности.
>Я делаю mount –bind только для своих VE, кастомерам (которых пока нет) масимум что можно дать, это, имхо, ftp-аккаунт для backup’а)
Ну вот и всё выяснили. Вы давать не хотите, а кастомер сам себе – не может.
Почему столько людей не любит RedHat? Мне это никогда не было понятно :(
NetBSD я не видела, может, она и белая и пушистая, и я не права, но так же, например, очень себе Ъ Plan9, но ее же в prodaction юзать нельзя, мне кажется, что и у NetBSD тоже не все хорошо с «ынтерпрайзнотустью»
Для двух vps можно использовать ftp + fuse. Не пробовала, но, думаю, что получиться.
Но у меня все на mount –bind + nfs.
Что касается nfs, главное не монтировать то, что монтировать нельзя) или монтировать с ограниченными правами(ro, root_squash, например ))
Мне тоже интересно, как построить безопасную сеть на *nix платформе, со всякими LDAP, но Samb’у для этого, мне кажется, использовать вообще нельзя.
Не хотела бы показаться голословной, но M$ сам признает, что cifs отсталый и медленный протокол.
Сейчас нет времени искать этот текст на сайте M$, но в их руководстве о Висте есть тезис о том, что старый cifs не мог использовать возможности гигабитных сетей, что новый вистовый это уже научился, но то, что виста медленно копирует файлы, говорят почти все знакомые пользователи этой ОС.
>Почему столько людей не любит RedHat? Мне это никогда не было понятно :(
Просто мне не нравится её пакетная система – только жёсткие зависимости, и зависимости от файлов, а не от пакетов определённых версий. Я давно на неё не смотрел, может уже даже что-то изменилось к лучшему.
>NetBSD я не видела, может, она и белая и пушистая, и я не права, но так же, например, очень себе Ъ Plan9, но ее же в prodaction юзать нельзя, мне кажется, что и у NetBSD тоже не все хорошо с “ынтерпрайзнотустью”
NetBSD как бы и не стремится к «ынтырпрайзу». Её иногда используют в железячных файл-серверах, ну и как встраиваемую систему для всяких мелких контроллеров и прочего. Система – сильно традиционный Unix, очень компактный и чистый, с хорошо продуманной архитектурой.
Samba, NFS и FUSE конечно не единственные решения. Всё зависит от задач. В зависимости от задачи могут подойти и такие вещи, как drdb, iSCSI, ATAoE, gmirror + ggated и может быть что-то ещё…
Про drbd есть how-to в wiki openvz)
Я бы все-таки хотела как-то или ftp подружить с ldap, или сделать что-то еще в таком же духе)
Пока осторожно использую nfs. Даже user-mode реализация (unfsd) работает, тьфу-тьфу, очень хорошо, выдавая 70-90Mb/s в 100мегабитной сети, почти не потребляя ресурсов.
А что касается мягких зависимостей, а так ли они нужны?
Ну, можно в Debian/Ubuntu средствами пакетного менеджера сменить sendmail на postfix, но в RH это делается не сильно сложнее) если yum что-то не ставит, конфликтующий пакет всегда можно удалить)
Или собрать из rpm.src что-то свое) благо, что отсуствие мягких зависимостей делает сборку своих пакетов очень-очень простой)
а Спек rpm уже давно документирован, даже на русском языке
>А что касается мягких зависимостей, а так ли они нужны?
Нужны. По крайней мере мне. И я думаю не мне одному.
>Или собрать из rpm.src что-то свое) благо, что отсуствие мягких зависимостей делает сборку своих пакетов очень-очень простой)
Не для того придумали мягкие зависимости, чтобы от них отказываться в пользу компиляции. Меня необходимость по каждому чиху что-то перекомпилировать не особо прельщает. Так начинаются каждые 9 из 10 статей про FreeBSD: «Вкомпилируем поддержку нужных нам модулей в ядро и перезагрузимся» или «Обновим дерево портов и перейдём в каталог порта XXX». Модульный подход прогрессивнее монолитного, это я думаю ни один инженер оспаривать не станет.
>а Спек rpm уже давно документирован, даже на русском языке
Что-то мне подсказывает, что спеки на apt и deb созданы и переведены на русский раньше. Строго говоря deb многие годы уже не меняется: заложенных в него возможностей до сих пор хватает с лихвой. rpm и yum развивались под влиянием идей deb и apt.