Авторские статьи

LXD 2.0: LXD и OpenStack [11/12].


OpenStack - это платформа, которая может вам помочь с созданием своего приватного облака. В своей работе OpenStack не привязывается к какому-то конкретному гипервизору и, на сегодняшний день, умеет создавать/запускать/останавливать KVM, VMware, Xen, Hyper-V и LXC. В этой одиннадцатой статье мы с помощью Стефана Грабера научимся использовать контейнеры LXD вместо виртуальных машин и самое потрясающее, что всё это будет внутри контейнера LXD, благодаря вложенности (nesting).

Требования

Подразумевается, что вы уже освоились с LXD, контейнеры можете вывести в сеть и ваш тестовый полигон достаточно мощный. Для развёртывания полного стека OpenStack вам не помешает мощный процессор, примерно 50 Гб дискового пространства и 16 Гб ОЗУ.

Настройка контейнера

OpenStack состоит из различных компонентов, каждый занимающийся своим делом. Некоторым компонентам требуются дополнительные привилегии и, чтобы сделать нам жизнь проще, мы будем использовать привилегированные контейнеры.

Нужно сконфигурировать контейнер с поддержкой вложенности, обеспечить загрузку нужных модулей ядра и разрешить доступ к /dev/mem.

Напомню, что большинство фичей безопасности LXD будет для привилегированного контейнера отключено, но внутри его OpenStack будет создавать уже непривилегированные контейнеры и функционал безопасности будет на высоте.

lxc launch ubuntu:16.04 openstack -c security.privileged=true -c security.nesting=true -c "linux.kernel_modules=iptable_nat, ip6table_nat, ebtables, openvswitch"
lxc config device add openstack mem unix-char path=/dev/mem

Есть досадный баг в LXD, который исправлен в версии 2.5. LXD пытается подгрузить модули ядра, которые уже подгружены на хосте. Используйте обходной путь - lxc exec openstack -- ln -s /bin/true /usr/local/bin/modprobe

Нужно добавить парочку PPA и поставить conjure-up, инструмент развёртывания OpenStack.

lxc exec openstack -- apt-add-repository ppa:conjure-up/next -y
lxc exec openstack -- apt-add-repository ppa:juju/stable -y
lxc exec openstack -- apt update
lxc exec openstack -- apt dist-upgrade -y
lxc exec openstack -- apt install conjure-up -y

Последний штрих. Внутри контейнера нужно настроить сеть. На все вопросы отвечайте значениями по умолчанию, кроме:

  • Используйте тип хранилища dir, так как тип zfs не поддерживает вложенность контейнеров
  • НЕ настраивайте IPv6, так как conjure-up/juju не очень хорошо умеют в него играть

lxc exec openstack -- lxd init

Теперь контейнер готов и можно приступить собственно к развёртыванию OpenStack.

Развёртывание OpenStack с помощью conjure-up

Conjure-up - это очень приятный, удобный инструмент, который может взаимодействовать с JuJu для развёртывания сложных комплексов.

Начните с lxc exec openstack -- sudo -u ubuntu -i conjure-up

  • Выберите OpenStack with NovaLXD
  • Как целевую систему для развёртывания укажите localhost (LXD)
  • Укажите "Deploy all remaining applications"

Теперь просто ждите, так как процесс может занять часы в зависимости от мощности вашего тестового полигона. В конце процесса вы увидите все сервисы, размещённые в своих контейнерах и связанные с друг другом.

установка OpenStack

После окончания развёртывания нужно сделать парочку полирующих шагов: импорт некоторых образов, настройка SSH аутентификации, настройка сети и получение IP dashboard.

Настройка dashboard

Dashboard работает внутри контейнера и вам нельзя просто взять и подсоединиться к ней с помощью браузера. Самый простой способ настроить правило NAT так:
lxc exec openstack -- iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to _IP_

_IP_ - это IP адрес dashboard, который вы могли видеть в конце установки conjure-up. Теперь если вы возьмёте IP адрес контейнера (lxc info openstack), то сможете указать его в браузере в виде http://IP_container/horizon

В первый раз появление веб интерфейса может занять некоторое время, будьте терпеливы. Дождавшись появления входа в систему, введите дефолтный логин admin и пароль openstack.

веб интерфейс OpenStack

Слева в Project -> Instance вы можете с помощью Launch instance выбрать желаемый образ операционной системы, настроить ей сеть и запустить её.

Итоги

OpenStack очень сложный программный комплекс, который не предназначен для домашнего использования или запуска на единственном сервере. Но для обучения (развёртывания и использования) очень удобно использовать контейнер LXD. Conjure-Up отличный инструмент, который с помощью JuJu под капотом, так легко развёртывает такой сложный комплекс, создавая нужные LXD контейнеры вместо виртуальных машин или физических серверов. Данный пример развёртывания OpenStack как-никак лучше показывает замечательную возможность - вложенность контейнеров в друг друга.

Полезные материалы

Предыдущая статья LXD 2.0: LXD и Juju [10/12].
Серия статей про LXD.
Следующая статья LXD 2.0: Отладка и вклад в LXD [12/12].

Серия статей про LXC.

Сотрудник Canonical в статусе Ubuntu Product Manager Дастин Киркленд (Dustin Kirkland) и разработчик LXD Тихо Андерсен (Tycho Andersen) показывают как создать очень быстрый OpenStack на контейнерах LXD вместо виртуальных машин.

Дата последней правки: 2023-12-27 12:04:47

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта