Вход:  Пароль:  
FreeSource: AltLinux/Dokumentacija/OpenVZ ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Dokumentacija/OpenVZ за 2007-09-12 21:45:47..

Настройка OpenVZ на текущем Сизифе

Open VZ — технология «лёгкой» виртуализации, позволяющая на одной аппаратной системе держать несколько различных корней Linux с одним ядром (поддерживающим ovz и содержащимся, как правило, на небольшом корне с ограниченным доступом по ssh и без других сервисов). В отличие от «тяжёлых» вариантов вроде Xen, Qemu или VMware, накладные расходы обычно составляют единицы процентов.


NB: текущий сизиф весной 2007 плавно превращается в выпуск 4.0 со штатной поддержкой ovz.


Оглавление документа

Сначала конечно необходимо прочитать документацию, для понимания что это такое и для чего можно использовать и как. PDF содержит более сотни страниц, но десяток из них обязательно следует прочитать для экономии времени — в начале про терминологию, около с.88 про Action Scripts и bind mounts, и в конце — секцию Troubleshooting. Также доступен перевод.


В настоящий момент в репозитарии есть практически все компоненты для полноценной работы. Но на данный момент openvz не поддерживает систему управления пакетами apt, поэтому мы не можем воспользоваться утилитой vzpkg.

Установка


При этом установятся ядро с поддержкой openvz и необходимые утилиты, поэтому необходимо перегрузить компьютер и при загрузке выбрать ядро -ovz.

Планирование ресурсов

Если предполагается более-менее равномерное разделение HN между несколькими VE (или примерно можно означить ограничения как «1/10», «1/4»), то рекомендуется использовать vzsplit для создания заготовок конфигурации (не самих серверов! — получается меташаблон такой).


Заготовки окажутся в /etc/vz/conf/ve-ИМЯ.conf-sample и пригодны для использования в vzctl create $VEID --config ИМЯ. Имейте в виду, что штатный vps.basic весьма ограничен, а light — скорее непригоден к использованию.

Создание шаблона

(Адаптировано для spt-0.6.0-alt7)
Необходимо создать шаблон, который будет использоваться для создания виртуального сервера. На сайте находится много шаблонов. Для ALT шаблоны см. в contrib, altlinux-2.4.tar.gz и altlinux-3.0.tar.gz. Шаблон представляет собой запакованый в архив корневой раздел. Поэтому для создания шаблона можно использовать spt или hasher. Я воспользовался spt?, так как он содержит уже готовый профиль для ovz.
Устанавливаем spt:

На этом этапе необходимо получить работоспособный hasher. И лучший способ — это воспользоваться инструкцией: /usr/share/doc/hasher-1.*/QUICKSTART
Для правильной работы vzctl необходимо, чтобы в /dev находились следующие устройства: /dev/ptmx, /dev/tty и был смонтирован /dev/pts/. Для их создания требуется наличие параметра allow_ttydev=YES в /etc/hasher-priv/* (см. hasher-priv.conf(8), http://lists.altlinux.org/pipermail/devel/2006-July/034431.html)
Затем необходимо создать профиль, по которому spt будет строить шаблон. Возможно использовать готовый профиль. Готовые профили находятся в пакетах spt-profile-* или c самим spt в директории /usr/share/spt/profile-*. Одну из этих директорий можно указать при создании шаблона с опцией -p при запуске spt.
Далее создаем рабочий каталог:

Если не подходя готовые профили, то тогда нужно создать свой. Для этого копируем готовый профиль в ~/ovz/profile.
Можно поменять имя создаваемого образа в ~/ovz/profile/config. Заменим значение в OUT на altlinux-4.0.tar.gz .
Так же можно дополнить список пакетов — ~/ovz/profile/ovz/packages — например, добавить openssh-server и vim-console. В ovz-контейнер нет необходимости ставить пакет interactivesystem.
Минимальный список пакетов:

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

Теперь необходимо создать сам образ:


Внимание: создание образов на i586-машине для архитектуры x86_64 не работает.


Если все прошло хорошо, то в ~/ovz/ будет находится файл altlinux-4.0.tar.gz. Его необходимо скопировать в /var/lib/vz/template/cache. Не забудьте поменять владельца и группу.

Создание виртуального сервера

Внимание: ещё один момент, где лучше заранее почитать документацию, чем потом сожалеть: в PDF рекомендуется выдавать VEID'ы сообразно IP (например, для xxx.xxx.7.123 — 7123 или для 10.0.1.254 — #1254##). Это более удобно с точки зрения администрирования как мнемонически, так и при необходимости переноса контейнеров между физическими хостами — если везде есть VEID 101, перенос будет сильно затруднён (на forum.openvz.org в соответствующей теме встретился вариант решения — свернуть одноразовый template cache из переносимого VE и создать на новом месте из этого темплейта; штатный способ изменения VEID мне на сейчас неизвестен).


Теперь мы можем создать сервер из шаблона.

Имя, которое Вы дали вашему шаблону (то что следует за --ostemplate), имеет важное значение. При создании VE это имя заносится в конфигурационный файл в переменную OSTEMPLATE. По этой переменной vzctl определяет какие скрипты использовать (разным OS нужны разные скрипты). Если вы используете ALT, то оно обязательно должно начинаться с altlinux (определяет нюансы настройки). Дальше разбор имени идет по такому алгоритму:

Именование виртуального сервера

Начиная с версии 3.0.11, vzctl поддерживает именование виртуальных серверов. Это удобно, когда у вас их много, ибо помнить, что proxy это 103 — не очень удобно.

Теперь в командах vzctl вместо 101 можно использовать vps101.

Конфигурация виртуального сервера

Конфигурация включает такие пункты:

1. Установка параметров запуска

2. Установка параметров сети

Общие настройки

Установка имени сервера:

Установка nameserver:

Установка searchdomain:

Сетевые соединения

В Open VZ в VE возможно настраивать 3 типа соединений:
1. venet
2. veth
3. Просто «пробросить» внутрь физический ethernet интерфейс. См. параметры netdev_add name/netdev_del name для vzctl.
Различия между venet и veth описаны тут. Кратко можно сказать, что чаще всего вам потребуется venet. Но в некоторых случаях, для запуска таких приложений внутри VE, которые требуют для своей работы: MAC address, Broadcasts inside VE, Traffic sniffing, (например dhcpd, samba) или вам нужен IPv6 – необходимо создавать veth. Также veth можно использовать в некоторых сложных случаях. Во всех остальных случаях (например, сложный роутинг или несколько ethx устройств с разными маршрутами/коммутацией, или когда нужно именно физическое ethernet устройство внутри VE), необходимо использовать netdev.

venet

Настройка venet внутри VE полностью осуществляется средствами vzctl. При старте VE конфигурация venet устройств переписывается на основании конфига для VE.

При этом внутри в VE создастся 2 интерфейса:

Маршрут при этом выглядеть должен так:

Такой адрес выбран сознательно

veth для IPv4

UPDATE: в свежем vzctl уже автоматизировано:


Настройка veth не осуществляется средствами vzctl, т.к. подразумевается, что администратор VE должен настроить сеть средствами той ОС, которая внутри VE.
1. Необходимо обеспечить загрузку модуля vzethdev:

Разработчики рекомендуют дописать этот модуль в переменную NET_MODULES в скрипте /etc/init.d/vz. Но думаю, что лучше его просто прописать в /etc/modules (при обновлении vzctl скрипт обновляется — явно напрашивается на /etc/sysconfig/vz-что-то, совсем непонятно, зачем сейчас это симлинк на ../vz/vz.conf).
2. Добавим сам veth к VE:

Добавлять IP командой vzctl set 101 --ipadd 10.10.186.1 --save не надо, т.к. тогда будет настраиваться venet.
Внимание! MAC-адреса должны быть разными и не пересекаться с реальными интерфейсами — можно чуть изменить взятый со старой карты в ящике.
3. Настроим создание eth0 в VE:
Для этого можно использовать средства настройки сети той OS что установлена в VE. Для ALT это etcnet. Для этого просто настроим стандартный интерфейс типа eth. Или можно настраивать из HN используя «типичный скрипт» 101.start (в /etc/sysconfig/vz-scripts/). Добавим туда:

Скрипт должен иметь права на выполнение.
4. Запустим VE:

После запуска в VE должны быть такие интерфейсы:

и маршруты (почему-то добавляется ):

Теоретически администратор VE может сам менять IP, но я не проверял :-)
5. Теперь, после запуска VE нужно настроить veth на стороне HN:
Для этого в Open VZ после старта VE автоматически вызывается утилита vznetcfg, которая инициализирует veth на стороне HN путем вызова команды ip link set veth101.0 up. Т.о. вы имеете поднятый интерфейс, но без IP и без настроенного маршрута. Поэтому дальнейшую настройку приходится делать руками или прописать в rc.local. (В следующей версии vzctl вроде уже добавили поддержку)
Настроим proxy_arp и forwarding для eth0 и veth на HN:
Для eth0 можно использовать штатные средства etcnet, установив переменную net.ipv4.ip_forward = 1 в файле /etc/net/sysctl.conf и proxy_arp=1 в /etc/net/ifaces/eth0/sysctl.conf.
Для veth нужно выполнить:

Добавляем IP

Примечание :
На самом деле, правильно:

А не 10.10.186.1 иначе с ноды 101 пакеты в мир уйдут, а те что будут направлены ноде 101-й будут приняты HN и дальше не пройдут.


И добавить маршрут:


Нюансы:

3. Установка пользовательских параметров

Установим пароль для рута:

В этом примере мы установили пароль для root в VPS 101 в “test”, и вы можете залогиниться

4. Установка квот

См. документацию.
Внимание: на сейчас поддержка реализована только для ext2/3 :-(

Запуск виртуального сервера

Выполнение команд на сервере

Административный вход на сервер


Если огребаем такое:

— то дело в /dev/tty, /dev/ptmx и (не)смонтированном /dev/pts/. Надо добавить в /etc/fstab этого VE нечто вроде

Уничтожение сервера

Альтлинукс как vserver в других дистрибутивах

(Я пробовал не примере CentOS4)
Если у вас есть шаблон altlinux.tar.gz, сделанный как описано выше, в главе «Создание Шаблона», то его можно скопировать в директорию /vz/template/cache/.
Чтобы работала сеть, надо также взять из Альтлинуксного пакета vzctl файлы /etc/vz/dists/altlinux.conf, /etc/vz/dists/scripts/etcnet-add_ip.sh и /etc/vz/dists/scripts/etcnet-del_ip.sh
Далее всё согласно этому документу, – создание, именование, настройка...

NFS/FUSE и LTSP

NFS здеся; FUSE здеся.

mount --bind из HN в VE при старте последнего

здеся (вообще про action scripts есть в документации, тут же — примеры удобные)

openntpd

В принципе, openntpd заводится с пол-пинка, но есть два замечания:

nut

Заводится с пол-пинка, единственный момент – дать доступ к устройству:

Миграция с VServer

Date: Wed, 9 Aug 2006 02:07:06 +0400
From: "Dmitry V. Levin" <ldv@>
To: ALT Linux sysadmin discuss <sysadmins@>
Subject: Re: [Sysadmins] vserver -> openvz migrate?

> Скажите пожалуйста, если имеются работающие парочка VServers, один -
> текущий Сизиф 32-битный чтобы пользоваться в 64-битном Сизифе смотреть
> флэш и ещё что не нашёл 64-битное. Второй – Федора5. Мигрировать на
> OpenVZ – что для этого надо будет делать? Или проще заново их
> сгенерировать?

Мигрировать контейнеры с linux-vserver на openvz достаточно легко.
Я недавно делал такую миграцию для контейнеров, сделанных на основе M24.
Могу отметить 4 момента:
1. vserver'ная конфигурация контейнеров беднее, чем openvz'шная; имеет
смысл сперва установить достаточно большие лимиты, потом на основе опыта
эксплуатации уменьшить их до рабочего уровня.
2. Имя файла template cache должно соответствовать имени системы, на основе
которой сделан контейнер.  Например, если контейнер сделан на основе
чего-то ALT'ового с net-scripts, то имя должно начинаться с "altlinux-2.4-",
если на основе ALT'ового с etcnet, то с "altlinux-", для FC – с "fedora-core-".
3. С удивлением обнаружил, что внутри vserver'ных контейнеров выключена
служба network.  Не забудьте выполнить "chkconfig network on".
4. В пакете vzctl-3.0.10-alt5 я добавил дополнительные правила
корректировки в /etc/vz/dists/scripts/postcreate.sh, которые выключают
запуск mingetty в inittab'е и лог в /dev/tty12 в syslog.conf.
Если вы захотите обойтись без vzctl create, то надо будет каким-то образом
выполнить этот /etc/vz/dists/scripts/postcreate.sh внутри контейнеров.

Date: Wed, 9 Aug 2006 13:10:39 +0400 (MSD)                                     
From: "Konstantin A. Lepikhov" <lakostis@>  
To: sysadmins@
Subject: Re: [Sysadmins] [wiki] Re:  vserver -> openvz migrate?

>> Мигрировать контейнеры с linux-vserver на openvz достаточно легко.
агасчас. Это все легко, если используется старый vserver/vserver-utils,
не 2.0.x. В новых vserver введен внешний package management, поэтому
сначала придется в vserver поставить apt/rpm, потом скопировать базы
rpm/apt из /vservers/.pkg/ внутрь vserver (кажется, там были грабли, т.к.
vrpm использует db3 вместо db4). И лишь только когда это все сделано,
можно создавать cache для ovz.

Template caches

Замечания по использованию

А вот и собранный template для M24 с исправлением: http://cryo.net.ru/~thresh/altlinux-2.4.tar.gz размер: 24660183, md5sum: e575da3dc4841367ba0d74e7063703bf

А вот и собранный template для M30 с исправлением: http://paq.osdn.org.ua/~mike/tmp/openvz/altlinux-3.0.tar.gz размер: 20741540, md5sum: cd74ef7dc8f117626b1701061cb1973f

Маленькие хитрости

Для того чтобы выполнить команду на всех серверах можно воспользоваться такой конструкцией:


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

(уже obsoleted с spt >= 0.3.1-alt4 )


Чтобы следить за «нарушителями границ» (предназначено для VE, не HN):


NB: в /proc/sys/net/ipv4/conf/venet0/proxy_arp после ребута или service network restart оказался ноль => nmap -P0 говорил, что порты закрыты, в то время как telnet :22, :111, :2049 — соединялся. Занеся 1, получаем нормальную картинку по nmap, но точно так же не монтируется (server is down).


Правка дефолтного i18n (если не сделали себе в template cache сразу как требуется):

TODO

Ссылки


Страницы, ссылающиеся на данную: ALTLinux/Dokumentacija/1C
AltLinux/Dokumentacija/OpenVZ
AltLinux/Dokumentacija/OpenVZ/Sharedhosting
AltLinux/Features
Altlinux/VServer
CyrilMargorin
ТимурБатыршин/СкриптыSPT


 
Файлов нет. [Показать файлы/форму]
Много комментариев (2). [Показать комментарии/форму]