Предварительная подготовка и основные концепции¶
Дистрибутив построен на базе проекта TripleO (аббревиатура «OpenStack-On-OpenStack»), который позволяет автоматизировать процесс развертывания облачной платформы на базе OpenStack Bobcat.
TripleO использует два главных концепта – Undercloud и Overcloud. Undercloud (узел развёртывания) устанавливает и настраивает Overcloud (рабочее облако или Ceph).
Перед продумыванием архитектуры развёртываемой системы необходимо прочитать Требования к оборудованию и ПО.
Узел развёртывания¶
Сетевая топология. Узел развёртывания обязан иметь два интерфейса - один для доступа к узлу по ssh разработчиками и один для основной сети администрирования/Ctlplane.
Для сети администрирования необходимо знать следующее:
- CIDR сети - по умолчанию 192.168.24.0/24
- 3 IP-адреса из этой сети для узла развёртывания - по умолчанию 192.168.24.1-.3
- Два пула адресов из этой сети для двух различных DHCP серверов, которые будут подняты на узле развёртывания. Это означает следующее
- В этой сети не должно существовать DHCP серверов
- Первый пулл адресов Ctlplane DHCP должен содержать столько IP-адресов, сколько будет возможный максимум всех физических узлов, используемых в развёртывании, и ещё два. То есть если в системе предполагает 3 контроллера, 50 узлов виртуализации и 50 узлов хранения данных - то в пулле должно быть не менее 105 IP-адресов.
- Второй пулл адресов Introspection DHCP должен содержать столько IP-адресов, сколько будет возможный максимум одновременно интроспектируемых узлов - это может быть небольшое число и как правило 10 адресов достаточно.
- Второй пулл адресов Introspection DHCP не должен пересекаться с первым пуллом
- Все физические узлы должны иметь хотя бы один интерфейс с 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 - поднимается как сервис только в момент развёртывания и сохраняет все свои данные в /home/stack/overcloud-deploy. Для тестовых целей может быть поднят вручную командой
openstack tripleo launch heat
и остановлен
openstack tripleo launch heat --kill
При первоначальной установке в Neutron заводится сеть Ctlplane, которая далее используется для всех развёртываний. Поменять её уже будет нельзя, поэтому будьте внимательны при настройке сети администрирования.
DeckCrew TUI¶
Внимательно: DeckCrew TUI не предполагает быстрого старта, поэтому необходимо внимательно изучить Руководство по установке и пройти каждый пункт инструкции!
Основные данные заведённые в DeckCrew TUI сохраняются на узле развёртывания в /etc/deckcrew.
Большинство действий настроек не применяются сразу, а сохраняются в файлы конфигурации. Настройки применяются только в разделе Deployment. Далее подробно расписываются все действия в DeckCrew TUI.
Физические узлы¶
Все физические узлы должны быть переведены в режим загрузки с сети (PXE) по одному сетевому интерфейсу в сети Ctlplane.
MAC-адрес этого интерфейса должен быть использован при создании записи о физическом узле в dctui.
Убедитесь что физические узлы переведены в режим загрузки с сети (PXE) в режиме UEFI.
Если использовать заранее подготовленные узлы, то пропустите этапы настройки физических машин и разверните узел самостоятельно.
Для заранее подготовленных узлов необходимо знать следующее:
- Требуется пользователь tripleo-admin с sudo правами без пароля на подготовленном узле.
- Требуется настроенное подключение к сети администрирования Ctlplane.
- Требуется ssh ключ пользователя stack с узла развёртывания в файле ~/.ssh/authorized_keys на подготовленном узле для пользователя tripleo-admin.
При заведении записей о физических узлах в dctui никакие действия с узлами в этот момент не выполняются, производятся только вызовы API к Ironic для сохранения данных об этих узлах.
При развёртывании узлов при помощи Ironic на узлах запускается сервис cloud-init, который настраивает пользователя tripleo-admin.
После этого можно зайти на узел без пароля по ssh, например:
[stack@undercloud ~]$ ssh tripleo-admin@192.168.24.100
Интроспекция¶
При проведении интроспекции узел перезагружается и ожидает загрузки по сети (PXE). После интроспекции узел переводится в состояние available.
Если интроспекция не планируется, то переведите узел в состояние available вручную выбрав действие provide.
Шаблоны¶
Развёртывание облака происходит при помощи сервиса Heat. Для этого используются шаблоны развёртывания, которые хранятся в /etc/deckcrew/templates.
При создании Deployment в главном меню DeckCrew TUI, шаблоны развёртывания копируются из /var/lib/acloud-heat-templates в /etc/deckcrew/templates/
Далее все настройки в меню развёртывания применяются к шаблонам.
Сети и сетевые планы¶
В системе Acloud используется принцип разделения сетей на роли. Набор заранее заданных сетей, который обязан присутствовать в системе:
- Ctlplane - сеть администрирования физических узлов в развёртываемом облаке. Это единственная сеть, по которой разрешён SSH доступ к физическим узлам облака.
- External - сеть для доступа к публичному API развёртываемого облака. Сеть должна быть доступна для всех пользователей облака.
- InternalApi - сеть для доступа к приватному API развёртываемого облака. Используется сервисами облака для общения друг с другом. Не должна быть доступна даже с узла развёртывания.
- Storage - сеть для доступа сервисов облака к хранилищу: Ceph или Nfs.
Набор заранее заданных опциональных сетей, их можно удалить из системы за ненадобностью:
- InternalCeph - внутренняя сеть для узлов хранения Ceph.
- IronicProvisioning - сеть для захвата физических узлов сервисом Ironic развёртываемого облака. Если сервис не используется, то сеть не нужна.
Все сети и IP-адреса, назначаемые физическим узлам при развёртываниях, заводятся на узле развёртывания через Neutron.
Таким образом все сетевые настройки включают в себя несколько этапов:
- Заведение информации о сетях в интерфейсе - далее они сохраняются в /etc/deckcrew/network_data.yaml
- Определение порядка интерфейсов для физических узлов - далее они сохраняются в /etc/deckcrew/net-config-data-lookup.yaml
- Выбор/создание сетевых планов для ролей/узлов - далее они сохраняются в шаблонах развёртывания в overcloud-baremetal-deploy.yaml
- Применение сетевых настроек в разделе Deployment.
Все эти пункты взаимосвязаны следующим образом:
- Из настроенных сетей при помощи Neutron автоматически создаются порты для тех узлов, которые настроены на использование этой сети.
- Сетевые планы используют созданные порты и настраивают интерфейсы на физических узлах с указанием IP-адреса созданного порта и других настроек сетей (Vlan, Cidr и прочее).
- IP-адреса создаваемых портов можно указывать вручную в Roles/Nodes and Networks в поле Fixed IPs.
- Сетевые планы написаны таким образом, что интерфейсы в них указаны по порядку как nic1, nic2. То есть если один сетевой план используется для двух разных узлов, где есть интерфейсы ens1f0,ens1f1 и eno1,eno2 - то при настройке сети будет выполнено соответствие nic1=ens1f0/eno1 и nic2=ens1f1/eno2.
- Порядок интерфейсов можно менять через определение порядка интерфейсов Order NICs в главном меню.
Непосредственно применение всех настроек происходит в разделе Deployment в меню развёртывания.
- Prepare Networks - создаются сети в Neutron с применением настроек в /etc/deckcrew/network_data.yaml.
- Provision Nodes - выделяются порты в Neutron для узлов и на узлах применяется Ansible роль tripleo_network_config, которая использует все сетевые настройки для настройки сети на узле.
Виртуальные адреса и Endpoint Data¶
Виртуальные адреса используются для доступа к сервисам OpenStack. Они также заводятся как порты через Neutron на андерклауде и при развёртывании облака создаются как ресурсы в Pacemaker. Далее Pacemaker управляет расположением виртуальных адресов, навешивая их на подходящий интерфейс.
Endpoint Data используется для настройки доступа к сервисам OpenStack. Но не используется в шаблонах при развёртывании. Для применения настроек необходимо выполнить генерацию Endpoint Map, который далее используется всеми сервисами OpenStack.
Также EndpointMap используется для создания записей в Keystone о доступе к сервисам OpenStack.