Установка OpenQRM 4.7 с LXC-контейнерами в Debian Squeeze/Lenny: пошагово
Введение
Это подробное руководство показывает, как установить OpenQRM 4.7 с поддержкой LXC в Debian Squeeze (также применимо к Debian Lenny при использовании бэкпорт-ядра). OpenQRM 4.7 выпущен с поддержкой LXC и позволяет управлять инфраструктурой и контейнерами центра обработки данных. Руководство ориентировано на системных администраторов и DevOps-инженеров, у которых есть базовые навыки установки Debian и работы с сетью.
Важно: для базовой установки потребуется как минимум ~100 ГБ свободного дискового пространства.
Предварительные требования
- Сервер с Debian Squeeze (или Lenny + бэкпорт-ядро).
- Доступ в интернет для скачивания пакетов и исходников.
- Минимум 100 ГБ свободного места на диске для комфортной работы (логич. тома, контейнеры, образы).
- Привилегии root или sudo.
- Базовые навыки работы с LVM и сетью Linux.
Факты: OpenQRM 4.7 релиз 30 сентября 2010; LXC требует поддержки cgroup в ядре (контроллер памяти может отсутствовать в vanilla squeeze-ядре).
Содержание (основные шаги)
- Установка Debian Squeeze
- Создание сетевого моста br0
- Установка и проверка LXC
- Создание тестового контейнера с debootstrap
- Установка OpenQRM 4.7
- Создание базы MySQL и предоставление привилегий
A. Установка Debian Squeeze (также подходит Lenny с бэкпорт-ядром)
A1) Скачайте netboot CD с http://debian.org
A2) При установке задайте пароль root и создайте обычного пользователя. Укажите доменное имя машины (можно использовать ваш TLD).
A3) Разметка диска: создайте 3 раздела: /boot — 512 МБ (ext4), swap — 2 ГБ, оставшаяся часть — LVM для корня (/). (Если вы не знакомы с LVM, следуйте мастеру установщика или документации LVM2.)
A4) На этапе выбора пакетов снимите выбор со всех пунктов, включая “Standard Administration Utilities” и “Graphical Desktop Environment” — установка минимальна.
A5) После завершения установки перезагрузите систему.
Важно: минимальная инсталяция уменьшает поверхность атаки и количество конфликтующих пакетов при установке OpenQRM.
B. Создание сетевого моста для хоста LXC
B1) Установите утилиты для работы с мостами:
aptitude install bridge-utilsB2) Откорректируйте /etc/network/interfaces для настройки статического IP через мост br0. Пример замены (фрагменты указаны ниже):
Исходное (DHCP):
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcpЗамените на (пример статической конфигурации через мост):
# The loopback network interface
auto lo
iface lo inet loopback
#Bridge setup
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
address 192.168.10.251
netmask 255.255.255.0
gateway 192.168.10.254
dns-nameservers 192.168.10.254Замените address, netmask, gateway и dns-nameservers на параметры вашей сети (маршруты можно узнать командой route).
B3) Перезапустите сеть:
/etc/init.d/networking restartПримечание: если вы работаете на удалённой машине через SSH, перезагрузка сетевого интерфейса может привести к потере соединения. Выполняйте изменения с консоли или с альтернативного доступа.
C. Установка LXC
C1) Установите пакет LXC:
aptitude install lxcC2) Создайте точку монтирования для cgroup:
mkdir /cgroupC3) Добавьте строку в /etc/fstab:
cgroup /cgroup cgroup defaults 0 0C4) Смонтируйте все файловые системы из fstab:
mount -aC5) Проверьте конфигурацию ядра для LXC:
lxc-checkconfigОжидаемый вывод содержит список поддерживаемых namespaces и контроллеров cgroup. В vanilla squeeze-ядре часто отсутствует “Cgroup memory controller: missing” — это мешает контролю лимита памяти внутри контейнеров. Решения: собрать своё ядро с поддержкой memory controller или использовать бэкпорт-ядро, в котором этот контроллер включён. Сборка ядра — отдельная большая тема.
D. Создание тестового контейнера (debootstrap)
D1) Установите debootstrap:
aptitude install debootstrapD2) Подготовьте каталог для контейнера vm0:
mkdir -p /var/lib/lxc/vm0D3) Создайте Debian-образ в каталог:
/usr/lib/lxc/templates/lxc-debian -p /var/lib/lxc/vm0/Скрипт создаст базовую файловую систему с root-паролем по умолчанию ‘root’ (обязательно смените его позже).
D4) Откройте /var/lib/lxc/vm0/config и добавьте в конец:
lxc.utsname = vm0
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.ipv4 = 192.168.7.110/24При необходимости добавьте MAC-адрес:
lxc.network.hwaddr = 00:11:22:33:44:55D5) Запустите контейнер в фоновом режиме:
lxc-start -n vm0 -dD6) Проверьте статус:
lxc-info -n vm0Ожидаемый ответ: ‘vm0’ is RUNNING
D7) Подключитесь к консоли контейнера:
lxc-console -n vm0D8) В контейнере смените пароль root:
passwd(команда passwd; пример в исходнике был ошибочно указан как ‘passwd su’ — используйте просто passwd)
D9) Выключите контейнер:
poweroffПосле poweroff вы окажетесь в консоли хоста.
Важно: если вы используете сетевые адреса, убедитесь, что они не конфликтуют с другими машинами в сети.
E. Установка OpenQRM 4.7
E1) Скачайте исходники OpenQRM 4.7 (пример):
wget http://sourceforge.net/projects/open...7.tgz/downloadE2) Распакуйте архив:
tar -zxvf openqrm-4.7.tgzE3) Перейдите в директорию исходников:
cd openqrm-4.7E4) Сборка/установка зависимостей и подготовка:
makeПримечание: запуск make от root подтянет и установит все зависимости автоматически; иначе придётся устанавливать их вручную.
E5) Установите OpenQRM:
make installE6) Запустите сервисы OpenQRM:
make startВ процессе установки вас попросят настроить ряд параметров:
- Пароль root для MySQL — задайте сложный пароль.
- Пароль для администратора Nagios — отдельный от MySQL.
- Рабочая группа Samba — можно оставить по умолчанию WORKGROUP.
- Домен для Postfix — укажите ваш TLD или используйте localhost.localdomain.
- Путь для TFTP — обычно /srv/tftp.
После успешной установки появится сообщение с URL доступа:
Initialization complete. Please configure your openQRM Server at: http://[server-ip-address]/openqrm/
-> User: openqrm -> Password: openqrmВажно: немедленно измените дефолтные учётные данные через веб-интерфейс.
F. Создание базы MySQL для OpenQRM
F1) Подключитесь к MySQL как root:
mysql -u root -pF2) Создайте базу:
mysql> create database openqrm;F3) Выдайте привилегии (пример корректирован):
mysql> grant all on openqrm.* to 'openqrmuser'@'localhost' identified by 'secure_password';Замените openqrmuser и secure_password на безопасные значения.
F4) Сбросьте привилегии и выйдите:
mysql> flush privileges;
mysql> exitКритерии приёмки
- Хост запускается и имеет рабочий сетевой мост br0.
- LXC успешно запускает контейнер vm0 и контейнер доступен по сети.
- OpenQRM установлен и доступен по HTTP на указанном адресе.
- База openqrm создана, пользователь имеет права доступа.
Чек-лист администратора (быстрая проверка)
- Debian установлен минимально.
- bridge-utils установлены, br0 настроен и работает.
- LXC и debootstrap установлены.
- vm0 создаётся и запускается.
- OpenQRM собран и запущен.
- MySQL база создана и привилегии назначены.
- Дефолтные пароли изменены.
Отладка и часто встречающиеся проблемы
- lxc-checkconfig показывает “Cgroup memory controller: missing”: решение — собрать ядро с поддержкой memory cgroup или поставить бэкпортное ядро.
- При изменении /etc/network/interfaces потеря соединения по SSH: выполняйте изменения из консоли или через KVM/IPMI.
- Контейнер не получает IP: проверьте настройки lxc.network.link и bridge_ports; убедитесь, что br0 поднят.
- OpenQRM веб-интерфейс недоступен: проверьте процессы, логи в /var/log/openqrm (или в директории инсталляции), и firewall/iptables.
Когда это не сработает
- Старое ядро без нужных namespaces и cgroups ограничит функциональность LXC (особенно лимиты памяти).
- Если хостная сеть использует сложную конфигурацию (VLAN, bonding), мост может требовать дополнительной настройки.
- На хостах с ограниченными ресурсами (<2 ГБ RAM) контейнеры и OpenQRM могут работать нестабильно.
Альтернативные подходы
- Использовать современные контейнерные платформы (LXD, Docker) на более новых версиях Debian/Ubuntu.
- Применять виртуальные машины KVM/QEMU для полной изоляции, если требуется отдельное ядро и подсистема памяти.
- Воспользоваться готовыми образами OpenQRM (если доступны) для быстрой установки.
Мини-методология развёртывания (рекомендуемый процесс)
- Подготовьте изолированную тестовую среду на отдельном хосте.
- Настройте сеть и LVM для прогнозируемого роста.
- Установите и проверьте LXC, создайте тестовый контейнер.
- Установите OpenQRM в тестовом окружении.
- Выполните контрольные тесты (запуск контейнера, создание шаблона, deploy приложения).
- Документируйте конфигурацию и переносите в production по шагам.
Рекомендации по безопасности
- Сразу смените все дефолтные пароли (MySQL root, openqrm/openqrm и т.д.).
- Ограничьте доступ к веб-интерфейсу OpenQRM через firewall или VPN.
- Регулярно обновляйте систему и пакеты безопасности (по возможности используйте backports для критичных обновлений ядра).
- Настройте мониторинг и бэкапы базы данных OpenQRM.
Короткий план отката / восстановления
- Если OpenQRM не запускается после обновления — остановите сервисы: make stop или systemctl stop openqrm.
- Восстановите конфигурацию и базу из резервной копии.
- Если ядро вызывает проблемы с LXC, загрузитесь в прежнее стабильное ядро.
Глоссарий (1‑строчные определения)
- LXC — контейнеризация на уровне ОС, обеспечивает лёгкую изоляцию процессов.
- debootstrap — утилита для создания минимальной файловой системы Debian.
- br0 — сетевой мост, объединяющий физический интерфейс и виртуальные veth-интерфейсы контейнеров.
- OpenQRM — фреймворк для управления дата-центром и виртуальными машинами/контейнерами.
Советы по миграции и совместимости
- Для современных развёртываний рассмотрите Debian 9+ или Ubuntu LTS с LXD для лучшей поддержки cgroups и безопасности.
- При переносе конфигураций OpenQRM убедитесь в совместимости базы данных и версии PHP/Perl, используемых OpenQRM.
Краткое резюме
- Настройка OpenQRM с LXC на Debian Squeeze возможна, но требует внимания к ядру и cgroups.
- Используйте мост br0 для подключения контейнеров в существующую сеть.
- Всегда меняйте дефолтные пароли и настраивайте бэкапы базы данных.
Важно: это практическое руководство основано на опыте развёртывания и не является официальной документацией OpenQRM.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента