Comments 58
Давно я такого на хабре не видел. Образцово-показательный пример того, как правильно писать и оформлять статьи.
+13
Вы бы знали, друзья, как я натрахался с хабровским редактором. Чтобы хоть как-то смотрелось читаемо, пришлось натыкать 100500 <br>. Так еще и preview показывает не то, что будет в действительности.
+19
Хорошая статья. А по производительности не сравнивали контейнеры и виртуализацию?
+2
У LXC производительность должна быть такой же как у OpenVZ. Важным отличием является то, что lxc есть в ванильной ветке и не является набором хаков и кривых патчей на ядро.
0
UFO just landed and posted this here
+1
Насколько мне известно OpenVZ с удовольствием перенесли бы свои патчи в ядро и с успехом это делают (LXC во многом их работа). Только вот протолкнуть патч в ядро это весьма и весьма сложная задача, причём далеко не только техническая.
Насколько мне известно OpenVZ с удовольствием перенесли бы свои патчи в ядро и с успехом это делают (LXC во многом их работа). Только вот протолкнуть патч в ядро это весьма и весьма сложная задача, причём далеко не только техническая.
+1
Любые патчи в ядро могут привести к внезапной неработе чегонибудь. + Вы ограничены набором ядер, на которых это хоть как-то тестировалось.
-1
UFO just landed and posted this here
Я так подозреваю, в ванильной ветке будет дополнительный функционал в namespaces и cgroups.
После этого, lxc и openvz будут их одинаково использовать, возможно предоставляя различные интерфейсы в userspace.
Ведь на самом деле, в ядре нет ни lxc, ни kvm ни т.д. — там есть несколько другие вещи, которые могут использоваться множеством продуктов.
После этого, lxc и openvz будут их одинаково использовать, возможно предоставляя различные интерфейсы в userspace.
Ведь на самом деле, в ядре нет ни lxc, ни kvm ни т.д. — там есть несколько другие вещи, которые могут использоваться множеством продуктов.
0
Предложите общедоступный тест и сравним :)
0
UFO just landed and posted this here
Есть, но он без пароля. По этому вход им невозможен.
0
root есть везде. Это такая штука, которая в ядро вшита намертво.
+1
есть, но пока ему не выставить пароль руками, под него не зайти… и правильно… используем sudo
0
В контейнер разворачивается система не задавая вопросов, в том числе про пользователя.Поэтому у вас будет только root с паролем root. Это не проблема, пока вы об этом помните.
Как я писал, «шаблон» lxc-контейнера — это просто shell скрипт, так что если нужно, можно это скрипт доработать и добавить туда все что угодно, в том числе создание обычного пользователя.
Как я писал, «шаблон» lxc-контейнера — это просто shell скрипт, так что если нужно, можно это скрипт доработать и добавить туда все что угодно, в том числе создание обычного пользователя.
0
Хорошая статья. Как время появится, попробую с её помощью «поиграть» с контейнерами.
Автору — спасибо!
Автору — спасибо!
0
А можно ещё небольшое сравнение OpenVZ vs LXC?
Поверхностный поиск показал, что полноценных виртуалок на нём пока не сделать — нет возможности выставлять ограничения по RAM и ограничивать нагрузку на CPU.
Т.е. LXC фактически — значительно улучшенный вариант обычного chroot'а.
Всё действительно так и есть?
Поверхностный поиск показал, что полноценных виртуалок на нём пока не сделать — нет возможности выставлять ограничения по RAM и ограничивать нагрузку на CPU.
Т.е. LXC фактически — значительно улучшенный вариант обычного chroot'а.
Всё действительно так и есть?
+1
UFO just landed and posted this here
UFO just landed and posted this here
Да, коллеги. Обязательно прочитайие эту заметку, чтобы лучше понять, что такое OpenVZ и LXC.
0
LXC не предназначен для распродажи виртуалок хостерами. Это програмно-изолированный контейнер со своим пространством процессов (нельзя по pid стучаться между виртуалками), имеющий свой сетевой стек, etc. Что-то типа jail в BSD-системах. Какие либо решения с ограничением ресурсов lxc-контейнеров на текущий момент носят характер костылей.
0
Зачем же сразу продавать?
Если у меня есть DNS сервер и я чётко понимаю его потребности в RAM, то есть смысл (на всякий случай) ему подобные лимиты выставить жестко.
Аналогично с другим софтом.
Но в принципе понятно, спасибо.
Если у меня есть DNS сервер и я чётко понимаю его потребности в RAM, то есть смысл (на всякий случай) ему подобные лимиты выставить жестко.
Аналогично с другим софтом.
Но в принципе понятно, спасибо.
0
FirstVDS (и не только они) уже много лет продает виртуалки на FreeBSD jail и прекрасно себя чувствует.
0
UFO just landed and posted this here
Я вот буду краток.
lxc.tl/
Идем туда и радостно админим lxc в стиле «я привык к openvz и не люблю думать». Проект пишут 3 сисадмина из Яндекса.
lxc.tl/
Идем туда и радостно админим lxc в стиле «я привык к openvz и не люблю думать». Проект пишут 3 сисадмина из Яндекса.
+2
tnx, завтра буду опробую :)
0
Слово «кухня» прочёл правильно с третьего раза :-)
0
Все прекрасно, но поправьте пожалуйста «Promiscuous mode» («Неразборчивый режим»)
Все же это «смешанный» режим.
Все же это «смешанный» режим.
0
> Установить прокси apt-cacher-ng, чтобы не качать одни и те же пакеты по нескольку раз
А может вариант сделать общий /var/cache/apt/archives/?
Меньше сервисов )
А может вариант сделать общий /var/cache/apt/archives/?
Меньше сервисов )
0
Следовал по инструкции вроде и получил следующее:
root@sicness:/usr/lib/lxc/templates# lxc-start -n node02
lxc-start: cgroup is not mounted
lxc-start: failed to spawn 'node02'
lxc-start: cgroup is not mounted
хотя
root@sicness:/var/lib/lxc/node02# mount | grep cgr
none on /cgroup type cgroup (rw)
Не произошел chroot, наверное потому что в том fstab не указан корень:
root@sicness:/var/lib/lxc/node02# cat fstab
proc /var/lib/lxc/node02/rootfs/proc proc nodev,noexec,nosuid 0 0
sysfs /var/lib/lxc/node02/rootfs/sys sysfs defaults 0 0
Подскажите, пожалуйста, где ошибся.
root@sicness:/usr/lib/lxc/templates# lxc-start -n node02
lxc-start: cgroup is not mounted
lxc-start: failed to spawn 'node02'
lxc-start: cgroup is not mounted
хотя
root@sicness:/var/lib/lxc/node02# mount | grep cgr
none on /cgroup type cgroup (rw)
Не произошел chroot, наверное потому что в том fstab не указан корень:
root@sicness:/var/lib/lxc/node02# cat fstab
proc /var/lib/lxc/node02/rootfs/proc proc nodev,noexec,nosuid 0 0
sysfs /var/lib/lxc/node02/rootfs/sys sysfs defaults 0 0
Подскажите, пожалуйста, где ошибся.
0
С fstab все впорядке. Откуда будет «расти» корень контейнера — задается в конфиге в lxc.rootfs.
Неплохо бы запустить скрипт lxc-checkconfig (проверяет конфигурацию ядра).
Если не разобрался — пиши в личку или почту.
Неплохо бы запустить скрипт lxc-checkconfig (проверяет конфигурацию ядра).
Если не разобрался — пиши в личку или почту.
0
В Ubuntu 11.10 Server поставил LXC
Не смотря на то что в файле /etc/default/lxc параметр указывающий путь конфиг файлов контейнеров для автостарта CONF_DIR=/etc/lxc
Файлы .conf всё-же нужно располагать в /etc/lxc/auto/
Может кому пригодиться.
Не смотря на то что в файле /etc/default/lxc параметр указывающий путь конфиг файлов контейнеров для автостарта CONF_DIR=/etc/lxc
Файлы .conf всё-же нужно располагать в /etc/lxc/auto/
Может кому пригодиться.
0
Здравствуйте. Как быть, если дополнительные адреса для виртуалок настоящие «белые» и по ним контейнеры должны быть видны снаружи из мира?
То есть имеется железный сервак на Hetzner, а на нём требуется развернуть пару виртуалок для изолированных задач. Текущий конфиг сети хоста такой:
Есть два дополнительных адреса (Hetzner их даёт из другой подсети почему-то):
Создал через LXC гостевую машину
А надо в итоге сделать две виртуальных гостевых машины (
В связи с чем три вопроса:
1. Чего понаписать в конфиге хоста
2. Чего добавить в
3. Чего написать в конфиг
Буду очень признателен за конкретные указания.
То есть имеется железный сервак на Hetzner, а на нём требуется развернуть пару виртуалок для изолированных задач. Текущий конфиг сети хоста такой:
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 176.9.51.109 broadcast 176.9.51.127 netmask 255.255.255.224 gateway 176.9.51.97 up route add -net 176.9.51.96 netmask 255.255.255.224 gw 176.9.51.97 eth0
Есть два дополнительных адреса (Hetzner их даёт из другой подсети почему-то):
176.9.69.13 176.9.69.14
Создал через LXC гостевую машину
vm1
с помощью lxc-create
. Машина завелась, но сеть в ней по дефолту не работает (как и ожидалось, в общем-то).А надо в итоге сделать две виртуальных гостевых машины (
vm1
и vm2
) доступными из вне по 176.9.69.13
и 176.9.69.14
, соответственно. Текущий IP хоста 176.9.51.109
при этом никак с пользой дела использовать не требуется (пусть остаётся исключительно для хост-машины).В связи с чем три вопроса:
1. Чего понаписать в конфиге хоста
/etc/network/interfaces
(как его изменить, чтобы начались слушаться два дополнительных IP и их можно было прокинуть к виртуалькам)?2. Чего добавить в
/var/lib/lxc/vm1/config
(какие имена интерфейсов, какой IP)?3. Чего написать в конфиг
/etc/network/interfaces
на гостевой виртуальной машине?Буду очень признателен за конкретные указания.
0
1. На хост-машине нужно настроить бридж br0 и связать его с интерфейсом eth0:
auto br0
iface br0 inet static
address 176.9.51.109
netmask 255.255.255.224
gateway 176.9.51.97
bridge_ports eth0
bridge_fd 0
К слову, «up route add», по-моему, здесь не нужен.
2. В конфиге /var/lib/lxc/vm1/config нужно указать ваш IP-адрес (176.9.69.13) и маску (в формате /NN)
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.ipv4 = 176.9.69.13/NN
3. В контейнере в /etc/network/interfaces нужно тоже указать ваш IP-адрес (176.9.69.13), маску (в формате 255.255.255.MMM)
и шлюз, который сказал провайдер.
auto br0
iface br0 inet static
address 176.9.51.109
netmask 255.255.255.224
gateway 176.9.51.97
bridge_ports eth0
bridge_fd 0
К слову, «up route add», по-моему, здесь не нужен.
2. В конфиге /var/lib/lxc/vm1/config нужно указать ваш IP-адрес (176.9.69.13) и маску (в формате /NN)
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.ipv4 = 176.9.69.13/NN
3. В контейнере в /etc/network/interfaces нужно тоже указать ваш IP-адрес (176.9.69.13), маску (в формате 255.255.255.MMM)
и шлюз, который сказал провайдер.
0
Огромное спасибо! Буду пробовать и позже расскажу, что получилось (или не получилось).
> К слову, «up route add», по-моему, здесь не нужен.
Это дефолтная настройка от самого Hetzner, они её там комментируют вот так:
# default route to access subnet
> К слову, «up route add», по-моему, здесь не нужен.
Это дефолтная настройка от самого Hetzner, они её там комментируют вот так:
# default route to access subnet
0
Всё заработало! Спасибо вам.
/NN посчитал этим калькулятором (вышло /29), а шлюз и маску Hetzner высылает в письме с подтверждением о выделение дополнительного IP, ищите соответствующие письма по теме «Additional IP address for server...» (это примечание для тех, кто также как и я безуспешно попытается найти реквизиты сетей в веб-интерфейсе robot`а).
/NN посчитал этим калькулятором (вышло /29), а шлюз и маску Hetzner высылает в письме с подтверждением о выделение дополнительного IP, ищите соответствующие письма по теме «Additional IP address for server...» (это примечание для тех, кто также как и я безуспешно попытается найти реквизиты сетей в веб-интерфейсе robot`а).
0
Скажите, я правильно понимаю, что root в контейнере = root в хосте?
0
Отличная статья. Спасибо! Но проясните один момент: зачем интерфейсы eth* заменяются на br*. Я не силен в конфигурировании сетей, особенно под Linux, а быстрый поиск мне не помог. Кстати у меня на Ubuntu 12.04 после перезагрузки интерфейсы eth* сохранились (в выводе ifconfig) и мешали запустить контейнеры (сообщение близко к тексту):
Причем ifdown почему-то их не выключал. Пришлось в конфигурации контейнеров использовать eth2 и eth3. После этого заработало.
Coudn't rename <...> into eth0: File already exists
Причем ifdown почему-то их не выключал. Пришлось в конфигурации контейнеров использовать eth2 и eth3. После этого заработало.
0
К слову, OpenVZ тоже без проблем работает внутри VirtualBOX виртуалки.
0
Sign up to leave a comment.
Кластер, который всегда с собой