Предварительная подготовка и основные концепции
Дистрибутив построен на базе проекта TripleO (аббревиатура “OpenStack-On-OpenStack”), который позволяет автоматизировать процесс развёртывания облачной платформы на базе OpenStack Bobcat.
TripleO использует два главных концепта – Undercloud и Overcloud. Undercloud (узел развёртывания) устанавливает и настраивает Overcloud (рабочее облако или Ceph).
Подготовка
Перед продумыванием архитектуры развёртываемой системы необходимо прочитать Требования к оборудованию и ПО.
Перед началом развёртывания необходимо получить учётные данные BMC для каждого сервера.
Перед развёртыванием убедитесь, что в BIOS каждого сервера: — первым стоит загрузка по PXE, — вторым — загрузка с диска.
Внимание
Важно заранее согласовать сетевую таблицу, которая будет использоваться как при настройке коммутаторов, так и при конфигурировании сетей облака. Пример такой таблицы приведён ниже.
Название сети |
Подсеть/Маска |
VLAN |
Интерфейс |
Шлюз (при наличии существующего) |
Назначение |
|---|---|---|---|---|---|
CtlPlane |
192.168.24.0/24 |
374 (untagged) |
eno1 |
— |
Управление и PXE-загрузка |
External |
10.198.73.0/24 |
373 |
eno1 |
10.198.73.1 |
Доступ к API и веб-интерфейсу. Часто с интернетом. |
InternalApi |
10.198.72.0/24 |
372 |
eno1 |
— |
Внутреннее взаимодействие сервисов |
Storage |
10.198.71.0/24 |
371 |
eno1 |
— |
Трафик между вычислителями и Ceph (рекомендуется MTU 9000 для улучшения производительности) |
IPMI (BMC) |
10.99.4.0/24 |
2399 |
— |
— |
Управление серверами |
StorageMgmt (опционально) |
— |
— |
— |
— |
Внутренняя сеть хранилища (опционально) |
Tenant (опционально) |
(Создается после развёртывания) |
— |
— |
— |
Сети для виртуальных машин (опционально) |
При наличии существующих NTP и DNS серверов, которые будут использоваться при развёртывании облака, их необходимо получить и в дальнейшем указать при развёртывании.
Параметр |
Значение |
|---|---|
DNS (Nameservers) |
— (При наличии заполняется через запятую, например: |
NTP Servers |
— (При наличии заполняется через запятую, например: |
Общая схема развёртывания
Настройте сети на коммутаторах Добавьте VLAN’ы из таблицы сетевой конфигурации на все порты серверов.
Установите узел развёртывания Установите ОС moncloud на физический сервер или ВМ.
Развёрните хранилище Запустите развёртывание с undercloud.
Разверните облако Укажите параметры хранилища и запустите установку.
Проверьте работу Убедитесь, что облако работает (создаются инстансы).
Эксплуатация Undercloud не участвует в работе облака. Используйте его только для обновлений и изменений конфигурации.
Узел развёртывания
Сетевая топология. Узел развёртывания обязан иметь как минимум два интерфейса - один для доступа к узлу по ssh разработчиками и один для основной сети администрирования/Ctlplane.
Для сети администрирования необходимо знать следующее:
CIDR сети - любой, по умолчанию используется
192.168.24.0/24IP-адрес из этой сети для узла развёртывания - по умолчанию
192.168.24.1Два пула адресов из этой сети для двух различных DHCP серверов, которые будут подняты на узле развёртывания. Это означает следующее:
В этой сети не должно существовать других DHCP серверов.
Первый пулл адресов Ctlplane DHCP должен содержать столько IP-адресов, сколько будет возможный максимум всех физических узлов, используемых в развёртывании, и по два на каждое развёртывание.
Второй пулл адресов Introspection DHCP должен содержать столько IP-адресов, сколько будет возможный максимум одновременно интроспектируемых узлов - это может быть небольшое число и как правило 10 адресов достаточно.
Второй пулл адресов Introspection DHCP не должен пересекаться с первым пуллом для Ctlplane.
Все физические узлы должны иметь хотя бы один интерфейс с L2 доступом к сети администрирования для загрузки узла по PXE.
Сеть администрирования должна присутствовать только внутри организации и не должна быть доступна извне, так как по ней осуществляется доступ по SSH ко всем физическим узлам, кроме узла развёртывания.
Дополнительные условия для узла развёртывания:
С узла развёртывания должны быть доступны используемые в развёртывании DNS сервера, NTP сервера и BMC адреса для всех физических узлов. Также это значит, что заранее должны быть продуманы DNS и NTP сервера организации.
С узла развёртывания должна быть доступна Public API сеть развёртываемого облака для настройки стартовых admin домена, проекта и пользователя. Эта сеть называется External в разделе Сети.
Пользователь. Все действия на узле развёртывания необходимо выполнять от имени пользователя stack.
+--------------------------------------------------------------------------------------------------------+
| |
| Администратор Развёртывания |
| | |
| | SSH доступ |
| v |
| +----------------------+ |
| | Узел развёртывания | |
| |----------------------| |
| | eth0 - SSH / Mgmt | |
| | eth1 - Ctlplane | |
| +----------+-----------+ |
| | |
| | Сеть администрирования (Ctlplane) |
|========================================================================================================|
| | |
| v |
| +-----------------------------------------------+ |
| | DHCP сервисы на узле развёртывания | |
| +-----------------------------------------------+ |
| | | |
| | 1) Ctlplane DHCP Pool | |
| | Должен покрывать ВСЕ узлы системы | |
| | +2 IP на каждое развёртывание | |
| | | |
| | пример: | |
| | 3 controller | |
| | 50 compute | |
| | 50 storage | |
| | = минимум 105 IP | |
| | | |
| |-----------------------------------------------| |
| | 2) Introspection DHCP Pool | |
| | Для PXE интроспекции узлов | |
| | Обычно ~10 IP | |
| | | |
| | ВАЖНО: | |
| | не пересекается с Ctlplane Pool | |
| +--------------------+--------------------------+ |
| | |
| | |
| v |
| +------------------+ +------------------+ +------------------+ |
| | Физический | | Физический | | Физический | |
| | узел | | узел | | узел | |
| |------------------| |------------------| |------------------| |
| | PXE interface | | PXE interface | | PXE interface | |
| | L2 доступ к | | L2 доступ к | | L2 доступ к | |
| | сети | | сети | | сети | |
| | администрирования| | администрирования| | администрирования| |
| +------------------+ +------------------+ +------------------+ |
| |
+--------------------------------------------------------------------------------------------------------+
После установки узла развёртывания можно запустить dctui, чтобы убедиться, что узел установлен правильно. Если узел развёртывания не установлен правильно, то dctui не запустится.
Логи установки можно посмотреть в /var/log/undercloud.log.
Принципы работы
На узле развёртывания поднимается три сервиса OpenStack, которые затем используются для настроек, управления и хранения данных о создаваемых ресурсах.
Neutron - используется для хранения данных о сетях и портах физических узлов.
Ironic - используется для хранения данных о физических узлах и их состоянии, а также используется для развёртывания операционной системы на узлах через PXE.
Ironic Inspector - используется для сбора и хранения данных о физических узлах. Участвует только при выполнении интроспекции и запускается только на целевом узле, который проходит процесс интроспекции.
Heat - поднимается как сервис только в момент развёртывания и сохраняет все свои данные в /usr/lib/deckcrew/overcloud-deploy. Для тестовых целей может быть поднят вручную командой:
openstack tripleo launch heat
и остановлен:
openstack tripleo launch heat --kill
При первоначальной установке в Neutron заводится сеть Ctlplane, которая далее используется для всех развёртываний. Поменять её уже будет нельзя, поэтому будьте внимательны при настройке сети администрирования.
DeckCrew TUI
Примечание
DeckCrew TUI не предполагает быстрого старта, поэтому необходимо внимательно изучить Руководство по установке и пройти каждый пункт инструкции!
Основные данные заведённые в DeckCrew TUI сохраняются на узле развёртывания в /etc/deckcrew и /usr/lib/deckcrew.
Большинство действий настроек не применяются сразу, а сохраняются в файлы конфигурации. Настройки применяются только в разделе Deployment.
Для запуска DeckCrew TUI введите команду в консоли узла развёртывания:
dctui
Использование команды:
usage: dctui [-h] [--debug] [--log-path LOG_PATH]
[--theme {bright,monochrome,tlj256,green,warning,default}]
[--locale {en,ru,auto}]
options:
-h, --help show this help message and exit
--debug Add debug output to the logs
--log-path LOG_PATHSet up logging directory (default is/var/log/dctui.log)
--theme{bright,monochrome,tlj256,green,warning,default}Set color theme (default is moncloud)
--locale{en,ru,auto}Set language locale (default is auto)
Параметры:
--debug- включает отладочный вывод в лог файл;--log-path LOG_PATH- задаёт путь к лог файлу;--theme {bright,monochrome,tlj256,green,warning,default}- задаёт цветовую тему интерфейса. По умолчанию используется тема moncloud, её можно поменять на доступные темы в asciimatics.--locale {en,ru,auto}- задаёт язык интерфейса. По умолчанию выбирается автоматически из настроек системы.
После выполнения команды появляется Главное окно dctui:
+------------------------------------------ [AOSBCP] DeckCrew -------------------------------------------+
|Common Description |
|Baremetal nodes Manage baremetal nodes IPMI login/password/address pO
|Network interfaces order arameters, PXE-ports and roles |
|Server root disk |
|GPU Settings |
|Networks settings |
|Network plans |
|Storages |
|---------------------------------------------------- < Refresh/Ctrl+R > |
|Deployments Manage selected deployment: configure services, netw|
| ork plans and start deployment |
| |
| < Add/Ctrl+A > < Delete/Ctrl+D > < Quit/Ctrl+X > |
+--------------------------------------------------------------------------------------------------------+
Физические узлы
Для добавления физического узла в систему необходимо загрузить узел в BIOS и настроить следующим образом
Включить режим UEFI.
Включить режим загрузки по сети (PXE) по одному сетевому интерфейсу в сети Ctlplane (сохранить MAC-адрес этого интерфейса).
Выставить приоритет загрузки по PXE перед загрузкой с диска.
При заведении записей о физических узлах в dctui никакие действия с узлами в этот момент не выполняются, производятся только вызовы API к Ironic для сохранения данных об этих узлах.
Система также поддерживает использование уже развёрнутых узлов, для этого:
Разверните на узле операционную систему
overcloud.x86_64.isoиз дистрибутива.Загрузите узел в операционную систему.
Настройте доступ к узлу с узла развёртывания по ssh c sudo правами.
При заведении записей об уже развёрнутых узлах в dctui создаётся и настраивается пользователь tripleo-admin и запускается интроспекция узла, которая собирает информацию об оборудовании узла.
При развёртывании узлов через BMC/PXE на узлах запускается сервис cloud-init, который настраивает пользователя tripleo-admin.
После этого можно зайти на узел без пароля по ssh, например:
[stack@undercloud ~]$ ssh tripleo-admin@192.168.24.100
Интроспекция
При проведении интроспекции узла с доступом через BMC узел перезагружается и ожидает загрузки по сети (PXE). После интроспекции узел переводится в состояние available:
+--------------------------------------------------------------------------------------------------------+
| |
| +------------------+ +------------------+ +-----------------------+ +------------------+ |
| | Клиент | | Ironic | | Introspection Ramdisk | | Ironic-inspector | |
| +------------------+ +------------------+ +-----------------------+ +------------------+ |
| | | | | |
| |------------------------->| | | |
| | начать интроспекцию | | | |
| | | | | |
| | |------------------------->| | |
| | | загрузить ramdisk | | |
| | | | | |
| | | |-------------------------->| |
| | | | отправка данных о железе | |
| | | | | |
| | |<-----------------------------------------------------| |
| | | результаты интроспекции | |
| | | | | |
| |<-------------------------| | | |
| | интроспекция завершена | | | |
| | | | | |
+--------------------------------------------------------------------------------------------------------+
Если интроспекция не планируется, то переведите узел в состояние available вручную выбрав действие provide.
Для узлов с доступом по SSH интроспекция запускается автоматически при создании узла.
Шаблоны
Развёртывание облака происходит с использованием сервиса Heat. Для этого используются шаблоны развёртывания, которые хранятся в /etc/deckcrew/templates.
При создании Deployment в главном меню DeckCrew TUI, шаблоны развёртывания копируются из пакета openstack-tripleo-heat-templates в /etc/deckcrew/templates/.
Далее все настройки в меню развёртывания применяются к шаблонам.
Сети и сетевые планы
В Moncloud используется принцип разделения сетей на роли. Набор заранее заданных сетей, который обязан присутствовать в системе:
Ctlplane - сеть администрирования физических узлов в развёртываемом облаке. Это единственная сеть, по которой разрешён SSH доступ к физическим узлам облака.
External - сеть для доступа к публичному API развёртываемого облака. Сеть должна быть доступна для всех пользователей облака.
InternalApi - сеть для доступа к приватному API развёртываемого облака. Используется сервисами облака для общения друг с другом. Не должна быть доступна даже с узла развёртывания.
Storage - сеть для доступа сервисов облака к используемым системам хранения.
Пользователи
|
v
[External]
|
v
+--------------+
| Controllers |
+------+-------+
|
+---------------+---------------+
| | |
v v v
[Ctlplane] [InternalApi] [Storage]
| | |
v v v
Физические Сервисы Системы
узлы API хранения
(SSH доступ) (внутренний (данные)
трафик)
Набор заранее заданных опциональных сетей, их можно удалить из системы за ненадобностью:
InternalCeph - внутренняя сеть для узлов хранения Ceph.
IronicProvisioning - сеть для захвата физических узлов сервисом Ironic развёртываемого облака. Если сервис не используется, то сеть не нужна.
Все сети и IP-адреса, назначаемые физическим узлам при развёртываниях, заводятся на узле развёртывания через Neutron.
Таким образом все сетевые настройки включают в себя несколько этапов:
Заведение информации о сетях в
dctui- далее они сохраняются в/etc/deckcrew/network_data.yaml;Определение порядка интерфейсов для физических узлов - далее они сохраняются в
/etc/deckcrew/net-config-data-lookup.yaml;
+--------------------------------------------------------------------------------------------------------+
| соответствие логических интерфейсов реальным интерфейсам |
| |
| +-------------------+ +-------------------+ +-------------------+ |
| | Логический NIC | | Узел A | | Узел B | |
| |-------------------| |-------------------| |-------------------| |
| | nic1 | -----> | ens1f0 | | eno1 | |
| | nic2 | -----> | ens1f1 | | eno2 | |
| | nic3 | -----> | ens2f0 | | ens3f0 | |
| +-------------------+ +-------------------+ +-------------------+ |
| |
+--------------------------------------------------------------------------------------------------------+
Выбор/создание сетевых планов для ролей/узлов - далее они сохраняются в шаблонах развёртывания в
overcloud-baremetal-deploy.yaml;
+--------------------------------------------------------------------------------------------------------+
| +--------------------------------------------+ |
| | Сетевой план | |
| |--------------------------------------------| |
| | nic1 -> Ctlplane | |
| | nic2 -> InternalApi VLAN 20 | |
| | nic3 -> Storage VLAN 30 | |
| | bond0 -> External | |
| +--------------------------------------------+ |
| |
| сетевые планы используются ролями узлов |
| |
| +------------------+ +---------------------+ +------------------+ |
| | Узел Управления | | Вычислительный узел | | Узел хранения | |
| +------------------+ +---------------------+ +------------------+ |
| | | | |
| +------- использует -----+------ использует -----+ |
| |
+--------------------------------------------------------------------------------------------------------+
Применение сетевых настроек в разделе Deployment.
+--------------------------------------------------------------------------------------------------------+
| соответствие логических интерфейсов реальным интерфейсам |
| |
| +-------------------+ +-------------------+ +-------------------+ |
| | Сеть | | Узел A | | Узел B | |
| |-------------------| |-------------------| |-------------------| |
| | Ctlplane | -----> | ens1f0 | | eno1 | |
| | InternalApi | -----> | ens1f1 | | eno2 | |
| | Storage | -----> | ens2f0 | | ens3f0 | |
| | External | -----> | bond0 | | bond0 | |
| +-------------------+ +-------------------+ +-------------------+ |
| |
+--------------------------------------------------------------------------------------------------------+
Все эти пункты взаимосвязаны следующим образом:
Из настроенных сетей при помощи Neutron автоматически создаются порты для тех узлов, которые настроены на использование этой сети.
Сетевые планы используют созданные порты и настраивают интерфейсы на физических узлах с указанием IP-адреса созданного порта и других настроек сетей (VLAN, CIDR и прочее).
IP-адреса создаваемых портов можно указывать вручную при настройке ролей и узлов в поле Fixed IPs.
Сетевые планы написаны таким образом, что интерфейсы в них указаны по порядку как nic1, nic2. То есть если один сетевой план используется для двух разных узлов, где есть интерфейсы ens1f0,ens1f1 и eno1,eno2 - то при настройке сети будет выполнено соответствие
nic1=ens1f0/eno1иnic2=ens1f1/eno2.Порядок интерфейсов можно менять через определение порядка интерфейсов.
Непосредственно применение всех настроек происходит при применении развёртывания.
Prepare Networks - создаются сети в Neutron с применением настроек из
/etc/deckcrew/network_data.yaml.Provision Nodes - выделяются порты в Neutron для узлов и на узлах применяется Ansible роль
tripleo_network_config, которая использует все сетевые настройки пользователя.
Виртуальные адреса и Endpoint Data
Виртуальные адреса используются для высокой доступности сервисов OpenStack. Они заводятся как порты через Neutron на узле развёртывания и создаются как ресурсы в Pacemaker на узлах облака. Далее Pacemaker управляет расположением виртуальных адресов, навешивая их на подходящий интерфейс.
Endpoint Data используется для настройки конечных точек всех возможных сервисов в облаке с использованием виртуальных адресов в Haproxy. А также для создания записей в Keystone о доступе к сервисам OpenStack.
+----------------------------------------+ +------------------------------------------------------+
| Узел Развёртывания | | Узлы Контроллеров |
|----------------------------------------| |------------------------------------------------------|
| | | |
| +---------------------------------+ | | +------------------------+ +-------------------+ |
| | NEUTRON | | | | КОНТРОЛЛЕР 1 | | КОНТРОЛЛЕР 2 | |
| |---------------------------------| | | |------------------------| |-------------------| |
| | создаёт VIP порты | | | | | | | |
| +-----------------+---------------+ | | | +------------------+ | | +---------------+ | |
| | | | | | PACEMAKER |<----->| PACEMAKER | | |
| v | | | |------------------| | | +---------------+ | |
| +---------------------------------+ | | | | VIP ресурсы | | | | |
| | VIP Порты | | | | | | | | | |
| |---------------------------------| | | | | +--------------+ | | | | |
| | +---------------+ | | | | | | Адреса | | | | | |
| | | Public VIP | |------------------>| | VIP-портов | | | | | |
| | | адрес | | | | | | +------+-------+ | | | | |
| | +---------------+ | | | | +--------|---------+ | | | |
| | +---------------+ | | | | | | | | |
| | | Internal VIP | | | | | v | | | |
| | | адрес | | | | | +------------------+ | | +---------------+ | |
| | +---------------+ | | | | | HAPROXY | | | | HAPROXY | | |
| +---------------------------------+ | | | |------------------| | | +---------------+ | |
| | | | | Доступ к сервису | | | | |
| +---------------------------------+ | | +--->| через VIP-адрес | | | | |
| | ENDPOINT DATA | | | | | +------------------+ | | | |
| |---------------------------------|--------------+ | | | | |
| | описание конечных точек сервисов| | | | +------------------+ | | +---------------+ | |
| | | | | | | KEYSTONE | | | | KEYSTONE | | |
| | public -> Public VIP |------------------>|------------------| | | +---------------+ | |
| | internal -> Internal VIP | | | | | записи конечных | | | | |
| | | | | | | точек доступа | | | | |
| +---------------------------------+ | | | +------------------+ | | | |
| | | +------------------------+ +-------------------+ |
+----------------------------------------+ +------------------------------------------------------+