Предварительная подготовка и основные концепции
Дистрибутив построен на базе проекта TripleO (аббревиатура “OpenStack-On-OpenStack”), который позволяет автоматизировать процесс развертывания облачной платформы на базе OpenStack Bobcat.
TripleO использует два главных концепта – Undercloud и Overcloud. Undercloud (узел развёртывания) устанавливает и настраивает Overcloud (рабочее облако или Ceph).
Перед продумыванием архитектуры развёртываемой системы необходимо прочитать Требования к оборудованию и ПО.
Узел развёртывания
Сетевая топология. Узел развёртывания обязан иметь как минимум два интерфейса - один для доступа к узлу по ssh разработчиками и один для основной сети администрирования/Ctlplane.
Для сети администрирования необходимо знать следующее:
CIDR сети - любой, по умолчанию используется
192.168.24.0/24IP-адрес из этой сети для узла развёртывания - по умолчанию
192.168.24.1Два пула адресов из этой сети для двух различных DHCP серверов, которые будут подняты на узле развёртывания. Это означает следующее:
В этой сети не должно существовать других DHCP серверов.
Первый пулл адресов Ctlplane DHCP должен содержать столько IP-адресов, сколько будет возможный максимум всех физических узлов, используемых в развёртывании, и по два на каждое развёртывание. То есть если в системе предполагается одно развёртывание с 3 контроллерами, 50 узлов виртуализации и 50 узлов хранения данных - то в пулле должно быть не менее 105 IP-адресов.
Второй пулл адресов Introspection DHCP должен содержать столько IP-адресов, сколько будет возможный максимум одновременно интроспектируемых узлов - это может быть небольшое число и как правило 10 адресов достаточно.
Второй пулл адресов Introspection DHCP не должен пересекаться с первым пуллом для Ctlplane.
Все физические узлы должны иметь хотя бы один интерфейс с L2 доступом к сети администрирования для загрузки узла по PXE.
Сеть администрирования должна присутствовать только внутри организации и не должна быть доступна извне, так как по ней осуществляется доступ по SSH ко всем физическим узлам, кроме узла развёртывания.
Дополнительные условия для узла развёртывания:
С узла развёртывания должны быть доступны используемые в развёртывании DNS сервера, NTP сервера и BMC адреса для всех физических узлов. Также это значит, что заранее должны быть продуманы DNS и NTP сервера организации.
С узла развёртывания должна быть доступна Public API сеть развёртываемого облака для настройки стартовых admin домена, проекта и пользователя. Эта сеть называется External в разделе Сети.
Пользователь. Все действия на узле развёртывания необходимо выполнять от имени пользователя stack.
После установки узла развёртывания можно запустить dctui, чтобы убедиться, что узел установлен правильно. Если узел развёртывания не установлен правильно, то dctui не запустится.
Логи установки можно посмотреть в /home/stack/install-undercloud.log или /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}]
options:
-h, --help show this help message and exit
--debug Add debug output to the logs
--log-path LOG_PATH Set up logging directory (default is
/var/log/dctui.log)
--theme {bright,monochrome,tlj256,green,warning,default}
Set color theme (default is moncloud)
Параметры:
--debug- включает отладочный вывод в лог файл;--log-path LOG_PATH- задаёт путь к лог файлу;--theme {bright,monochrome,tlj256,green,warning,default}- задаёт цветовую тему интерфейса. По умолчанию используется тема moncloud, её можно поменять на доступные темы в asciimatics.
После выполнения команды появляется Главное окно dctui
┌───────────────────────────────────────── [Moncloud] DeckCrew ──────────────────────────────────────────┐
│Common Description │
│Baremetal nodes Manage baremetal nodes IPMI login/password/address p█
│Network interfaces order arameters, PXE-ports and roles ░
│Server root disk ░
│Baremetal ports ░
│Networks settings ░
│Network plans ░
│──────────────────────────────────────────────────── < 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.
Если интроспекция не планируется, то переведите узел в состояние 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 - сеть для доступа сервисов облака к используемым системам хранения.
Набор заранее заданных опциональных сетей, их можно удалить из системы за ненадобностью:
InternalCeph - внутренняя сеть для узлов хранения Ceph.
IronicProvisioning - сеть для захвата физических узлов сервисом Ironic развёртываемого облака. Если сервис не используется, то сеть не нужна.
Все сети и IP-адреса, назначаемые физическим узлам при развёртываниях, заводятся на узле развёртывания через Neutron.
Таким образом все сетевые настройки включают в себя несколько этапов:
Заведение информации о сетях в
dctui- далее они сохраняются в/etc/deckcrew/network_data.yaml;Определение порядка интерфейсов для физических узлов - далее они сохраняются в
/etc/deckcrew/net-config-data-lookup.yaml;Выбор/создание сетевых планов для ролей/узлов - далее они сохраняются в шаблонах развёртывания в
overcloud-baremetal-deploy.yaml;Применение сетевых настроек в разделе Deployment.
Все эти пункты взаимосвязаны следующим образом:
Из настроенных сетей при помощи 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 используется для настройки портов и сетей конечных точек всех возможных сервисов в облаке. А также для создания записей в Keystone о доступе к сервисам OpenStack.