Глава 1. Пример архитектур

Чтобы понять предлагаемые OpenStack возможности, лучше начать с базовых архитектур, которые продемонстрировали себя на практике и были протестированы промышленных окружениях. Мы предлагаем два таких примера с базовыми операционными системами (Ubuntu и Red Hat Enterprise Linux) и сетевыми архитектурами. Существуют и другие отличия между этими двумя примерами, но вы должны найти соображения, сделанные для выбора в каждом из них, а также обоснование того, почему он хорошо работает в данном окружении.

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

[Совет] Совет

Как всегда, обратитесь к Словарю если вы не уверены в какой- нибудь терминологии, упоминающейся в этой архитектуре.

  Пример архитектуры—Традиционные сети (nova)

Этот частный пример архитектуры был обновлен с Grizzly на Havana и протестирован на промышленном окружении в котором множество IP адресов доступно для назначения множеству экземпляров. После данного раздела вы сможете найти другой пример архитектуры, который использует OpenStack Networking (neutron). Каждый пример предлагает высокую доступность, означающую, что если некоторый узел выходит из строя, другой узел с аналогичной конфигурацией может взять на себя выполнение задач, следовательно служба будет все еще доступной.

 Обзор

Простейшая архитектура, которую вы можете построить для Compute имеет один контроллер облака и множество вычислительных узлов. Простейшая архитектура для системы хранения объектов имеет пять узлов: один для идентификации пользователей и представления запросов для API, и кроме того четыре для системы хранения самой по себе для обеспечения достаточного числа репликаций для окончательной связности. Этот пример архитектуры не диктует определенного числа узлов, однако показывает понимание и соображения , которые вошли в выбор данной архитектуры включая предложенные функции.

 Компоненты

Компонент Детали

Редакция OpenStack

Havana

Опреационная система хоста

Ubuntu 12.04 LTS или Red Hat Enterprise Linux 6.5, включая производные ОС, такие как CentOS и Scientific Linux

Репозиторий пакетов OpenStack

Архив облака Ubuntu или RDO*

Гипервизор

KVM

База данных

MySQL*

Очередь сообщений

RabbitMQ для Ubuntu; Qpid для Red Hat Enterprise Linux и производные ОС

Сетевая служба

nova-network

Менеджер сети

FlatDHCP

Одна nova-network или много хостов?

multi-host*

Сервер служб образов (glance)

file

Драйвер службы идентификации (keystone)

SQL

Сервер службы блочного хранения (cinder)

LVM/iSCSI

Сервер миграции в реальном времени

Совместно используемая система хранения с использованием NFS*

Система хранения объектов

Система хранения объектов OpenStack (swift)

Звездочка (*) обозначает, что пример архитектуры отклоняется от значений по умолчанию в установке. Мы дадим объяснения для этих отклонений позже.

[Замечания]Замечания

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

  • Инструментальная панель: Возможно вы захотите предложить инструментальную панель, однако ваши пользователи могут быть более заинтересованы исключительно в API доступе.

  • Блочное хранилище: Вы не должны предлагать пользователям систему блочного хранения, например, если они используют их в своих приложениях только для эфемерных хранилищ на вычислительных узлах.

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

  • Миграция в реальном времени: Если вы должны перемещать запущенный экземпляр виртуальной машины с одного хоста на другой, вам нужно разрешить миграцию вреальном масштабе времени, однако оно является не обязательным.

  • Объектная система хранения: Вы можете выбрать для хранения образов машин файловую систему вместо объектного хранилища, если у вас нет дополнительного оборудования для необходимого реплицирования и избыточности, предлагаемых объектным хранилищем OpenStack.

 Обоснование

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

Вначале вы должны выбрать операционную систему, которая будет работать на всех физических узлах. Хотя OpenStack поддерживается множеством дистрибутивов Linux, мы использовали Ubuntu 12.04 LTS (Long Term Support), которая используется большинством в сообществе разработчиков, имеет полный набор возможностей по сравнению с другими дистрибутивами, а также имеет четкие планы дальнейшей поддержки.

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

KVM в качестве дополнения гипервизора является выбором Ubuntu - будучи хорошо подогнанной парой в терминах поддержки, а также из-за значительной степени внимания, получаемого им от сообщества разработчиков OpenStack (в том числе от авторов, которые в основном используют KVM). Он также полностью укомплектован, свободен от лицензионных сборов и ограничений.

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

Выбор RabbitMQ по сравнению с другими AMQP совместимыми вариантами, которые набирают возрастающую поддержку в OpenStack, такими как ZeroMQ и Qpid, связан с простотой его использования и значительного объема тестирования на практике. Он также является единственным вариантом, поддерживает такие свойства, как Compute cell. Мы рекомендуем кластеризацию с использованием RabbitMQ, поскольку он является неотъемлемой составляющей системы, и довольно прост в реализации в связи с его встроенной природой.

Как уже говорилось в предыдущих главах, есть несколько вариантов создания сетей в OpenStack Compute. Мы рекомендуем FlatDHCP при использовании режима работы в сети Multi-Host для обеспечения высокой доступности, запускающего по одному демону nova-network на хост OpenStack Compute. Это обеспечивает надежный механизм гарантии изоляции прерываний работы сети в отдельных вычислительных хостах, а также позволяет прямое использование аппаратных сетевых шлюзов.

Миграция в реальном времени обеспечивается посредством совместного использования системы хранения с NFS в качестве распределенной файловой системы.

Признавая, что для многих мало масштабных реализациях работа службы хранения объектов только для хранения образов виртуальных машин выглядит слишком дорогой, для службы образов OpenStack (Glance) мы выбрали файловые сервера. Если проектируемое вами облако также предполагает запускать службу хранения объектов, вы легко сможете использовать ее в качестве серверов.

Мы отдали предпочтение серверу SQL в качестве службы идентификации (keystone) над другими, например LDAP. Эти сервера просты в установке и надежны. Авторы признают, что для многих установок желательна связь с существующими службами каталогов, и предупреждают о необходимости точного понимания массива доступных опций.

Служба блочного хранения (cinder) изначально устанавливается на внешних узлах- хранилищах и использует плагин LVM/iSCSI. Большинство плагинов службы блочного хранения привязаны к продуктам и реализациям определенного производителя, что ограничивает их использование для потребителей рассматриваемых аппаратных платформ, однако LVM/iSCSI является надежной и стабильной службой при работе на серийно выпускаемой вычислительной технике.

В то время как облако может работать без инструментальной панели (Dashboard) OpenStack, мы расцениваем ее как незаменимую, причем не только для взаимодействия пользователя с облаком, но и в качестве инструмента для операторов. Кроме того, использование инструментальной панели из Django превращает ее в гибкую структуру для расширения.

 Почему бы не воспользоваться сетевой службой OpenStack (neutron)?

Данный пример архитектуры не использует сетевую службу OpenStack (neutron), поскольку она пока не осуществляет поддержку сети с многими хостами, а наши организации (университет, правительство) имеют доступ к большому диапазону IPv4 адресов с общественным доступом.

 Зачем использовать сеть с множеством хостов?

При развертывании OpenStack по умолчанию, именно единcтвенная служба nova-network, которая работает в облаке (обычно на контроллере облака), предоставляет такие услуги, как трансляция сетевых адресов (NAT), DHCP, DNS для гостевых экземпляров. Если отказывает один узел, который управляет службой nova-network, вы не сможете получить доступ к экземплярам, а экземпляры не смогут получить доступ в интернет. В случае возникновения чрезмерного сетевого трафика, единственный узел, управляющий службой nova-network, может стать узким местом, и выйти из состава облака.

[Совет] Совет

Режим с множеством хостов является вариантом с высоким уровнем доступности для конфигурации сети, в которой служба nova-network выполняется на каждом вычислительном узле в противоположность работе только на единственном узле.

 Подробное описание

Эталонная архитектура состоит из нескольких вычислительных узлов, контроллера облака, внешнего сервера хранения NFS для хранения экземпляров и сервера блочного хранилища OpenStack для хранения томов (volume). Служба сетевого времени (Network Time Protocol, NTP) синхронизирует время для всех узлов. FlatDHCPManager в режиме мульти-хоста используется для построения сети. Логическая диаграмма для данного примера архитектуры демонстрирует какие службы работают на каждом узле:

Контроллер облака выполняет: инструментальную панель, службы API, базу данных (MySQL), сервер очереди сообщений (RabbitMQ), планировщик для выбора вычислительных ресурсов (nova-scheduler), службы идентификации (keystone, nova-consoleauth), службы образов (glance-api, glance-registry), службы для консолей доступа гостей, а также службы блочного хранения, включающие планировщик для ресурсов хранения (cinder-api и cinder-scheduler).

Вычислительные узлы находятся там, где проводятся вычисления, и в нашем примере применения они выполняют гипервизор (KVM), libvirt (драйвер для гипервизора, который позволяет динамическую миграцию с узла на узел), nova-compute, nova-api-metadata (как правило, используется только при работе в режиме мульти-хоста, он извлекает метаданные определенных экземпляров), nova-vncproxy и nova-network.

Сеть состоит из двух коммутаторов, один для управления или частного трафика, и второй, покрывающий общий доступ в том числе плавающие IP-адреса. Для поддержки этого, контроллер облака и вычислительные узлы имеют по две сетевых карты. Серверы хранения блочных данных OpenStack и NFS необходимы исключительно для доступа в частной сети и, следовательно, им нужна только одна сетевая карта, однако, если это возможно , рекомендуется связанная конфигурация с несколькими работающими в одном сервере платами. Плавающий IP доступ идет напрямую в интернет, в то время как доступ связного IP проходит через NAT. Чтобы представить сетевой трафик, используйте эту диаграмму:

 Необязательные расширения

Вы можете расширить рассмотренную архитектуру: следующим образом:

 Пример архитектуры — Сети OpenStack

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

 Обзор

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

  Компоненты

Компонента Детали

Редакция OpenStack

Havana

Операционная система хоста

Red Hat Enterprise Linux 6.5

Репозиторий пакетов OpenStack

Red Hat Distributed OpenStack (RDO)

Гипервизор

KVM

База данных

MySQL

Очередь сообщений

Qpid

Сетевая служба

OpenStack Networking

Разделение владельцев в сети

VLAN

Сервер службы образов (glance)

GlusterFS

Драйвер службы идентичности (keystone)

SQL

Сервер службы блочного хранения (cinder)

GlusterFS

  Обоснование

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

Компоненты данной архитектуры были отобраны по следующим причинам:

Red Hat Enterprise Linux

Вы должны выбрать операционную систему, которая может работать на всех физических узлах. Данный пример архитектуры основывается на Red Hat Enterprise Linux, которая предлагает надежность, долгосрочную поддержку, сертифицированные испытания и закаленность. Перемещающиеся сейчас в направлении использования OpenStack корпоративные клиенты обычно нуждаются в таких преимуществах.

RDO

Пакет Red Hat Distributed OpenStack предлагает простой способ загрузки наиболее новой редакции OpenStack, которая построена под платформу Red Hat Enterprise Linux.

KVM

KVM является поддерживаемым гипервизором, выбранным для Red Hat Enterprise Linux (и включенным в дистрибутив). Он полностью укомплектован и свободен от лицензионных сборов и ограничений.

MySQL

MySQL используется для серверов баз данных для всех баз данных в окружении OpenStack. MySQL является поддерживаемой базой данных в выборе для Red Hat Enterprise Linux (и содержится в дистрибутиве); эта СУБД является масштабируемой системой с открытым кодом, к тому же хорошо управляющая памятью.

Qpid

Apache Qpid предлагает 100 процентную совместимость со стандартом протоколом очередей расширенных сообщений (Advanced Message Queuing Protocol Standard), и его брокер доступен и для C++, и для Java.

OpenStack Networking

Сетевое обеспечение OpenStack предлагает современную сетевую функциональность, содержащую разделение сетей Layer 2 (L2) и поставщиков сетевых служб.

VLAN

Использование виртуальных локальных сетей предлагает широковещательное управление, безопасность и прозрачность физического уровня. Если необходимо, для расширения вашего адресного пространства используйте VXLAN.

GlusterFS

GlusterFS предлагает масштабируемую систему хранения. По мере роста вашей среды вы можете добавлять дополнительные узлы хранения (вместо того, чтобы, например, быть ограниченным дорогим массивом хранения).

  Подробное описание

 Типы узлов

Данный раздел предлагает вам подразделение различных типов узлов, составляющих среду OpenStack. Узел является физической машиной, которая снабжена операционной системой и выполняет определенный стек программного обеспечения поверх ее. Таблица 1.1, “Типы узлов” представляет описание и спецификацию узлов.

Таблица 1.1. Типы узлов
Тип описание Пример аппаратной реализации
Контроллер

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

  • Обеспечивают интерфейс переднего плана для доступа клиентов, а также службы API, которые являются средством общения для всех других компонентов в среде.

  • Выполняют ряд служб в режиме высокой доступности с использованием Pacemaker и HAProxy для поддержки виртуальных IP и функций балансировки нагрузки, что обеспечивает использование всех узлов.

  • Поддержание служб "инфраструктуры" высокой доступности таких как MySQL и Qpid, которые лежат в основе всех остальных служб.

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

См. Рисунок 1.3, “Узел контроллера”.

Модель: Dell R620

ЦПУ: 2x Intel® Xeon® CPU E5-2620 0 @ 2.00 GHz

Оперативная память: 32 ГБ

Диск: два 300 ГБ 10000 RPM SAS диска

Сеть: два сетевых порта 10G

Вычислительный узел

Вычислительные узлы выполняют экземпляры виртуальных машин OpenStack. Они:

  • Выполняют скудный минимум служб, необходимых для обеспечения этих экземпляров.

  • Использование локальной системы хранения приводит к тому, что при сбое узла не возможна никакая миграция виртуальных машин или восстановление экземпляров.

See Рисунок 1.4, Вычислительный узел”.

Model: Dell R620

ЦПУ: 2x Intel® Xeon® CPU E5-2650 0 @ 2.00 GHz

Оперативная память: 128 GB

Диск: два 600 GB 10000 RPM SAS диска

Сеть: четыре сетевых порта 10G (Для дальнейшего расширения настройки)

Узел хранения

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

См. Рисунок 1.6, “Узел хранения”.

Модель: Dell R720xd

ЦПУ: 2x Intel® Xeon® CPU E5-2620 0 @ 2.00 GHz

Оперативная память: 64 ГБ

Диск: два диска 500 ГБ 7200 RPM SAS и двадцать четыре диска 600 ГБ 10000 RPM SAS Disks

Raid контроллер: PERC H710P интегрированный RAID контроллер, 1 ГБ NV кеш

Сеть: два сетевых порта 10G

Сетевой узел

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

  • Формируют только входную и выходную точку для исполняемых поверх OpenStack экземпляров.

  • Запускают все службы сетевой среды за исключением службы сетевого API (которая работает на узле контроллера)

См. Рисунок 1.5, “Сетевой узел”.

Модель: Dell R620

ЦПУ: 1x Intel® Xeon® CPU E5-2620 0 @ 2.00 GHz

Оперативная память: 32 ГБ

Диск: два диска 300 ГБ 10000 RPM SAS

Сеть: пять сетевых портов 10G

Сервисные узлы

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

Эти узлы выполняют такие службы как выделение ресурсов, управление конфигурацией, мониторинг или управление программным обеспечением GlusterFS. Они не требуют масштабирования, хотя обычно эти машины резервируются.

Модель: Dell R620

ЦПУ: 2x Intel® Xeon® CPU E5-2620 0 @ 2.00 GHz

Оперативная память: 32 ГБ

Диск: два диска 500 GB 7200 RPM SAS

Сеть: два сетевых порта 10G

 Компоновка сети

Сетевое оборудование содержит все устройства управления для всего оборудования в среде (например, включает в себя устройства Dell iDrac7 (интегрированного контроллера удаленного доступа Dell) для аппаратуры узлов, а также управляющую инфраструктуру для сетевых коммутаторов). Сетевое оборудование доступно исключительно внутреннему персоналу и только при выполнении задач диагностики и восстановления.

 Внутренняя сеть OpenStack

Эта сеть используется для функций управления OpenStack и обмена, включающего в себя необходимые для предоставления аппаратуры узлов службы (pxe, tftp, kickstart), а также обмен между различными типами узлов OpenStack с помощью OpenStack API и сообщений (например, nova-compute взаимодействует с keystone или cinder-volume обращается к nova-api), а также весь обмен для хранимых данных на уровне хранения передаваемый по протоколу Gluster. Все физические узлы имеют по крайней мере один сетевой интерфейс (обычно eth0) в сети. Эта сеть доступна исключительно через другие VLAN на порт 22 (для ssh доступа управления машиной).

 Общедоступная сеть

Данная сеть представляет собой сочетание:

  • IP адресов для интерфейсов на общественной стороне в узлах контроллера (через которые конечные пользователи получат доступ к службам OpenStack)

  • Диапазона подлежащих маршрутизации в общедоступных сетях сетевых адресов IPv4, которые будут использоваться сетевыми средствами OpenStack для плавающих IP. Возможно, вы будете ограничены в своем доступе к адресам IPv4; однако, большой диапазон адресов IPv4 не является необходимым.

  • Маршрутизаторы для частных сетей создаются самой OpenStack.

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

 Сеть обмена виртуальнымми машинами

Это закрытая сеть, которая не использует общедоступную маршрутизацию и просто используется как частная, внутренняя сеть для обмена между виртуальными машинами в OpenStack, а также между виртуальными машинами и сетевыми узлами, которые обеспечивают маршрутизацию уровня L3 в сеть общего пользования (а также плавающие IP-адреса для обратной связи с виртуальными машинами). Поскольку эта сеть закрытая, мы используем другое адресное пространство по сравнению с остальными для четкого определения такого разделения. К этой сети должны подключаться только вычислительные узлы и сетевые узлы OpenStack.

 Связность узлов

Следующий раздел даст подробное описание того, каким образом узлы объединяются в различные сети (см. раздел с названием “Компоновка сети”), а также какой дополнительный анализ необходимо выполнить (например, создание перемычек) при объединении узлов в сети.

 Начальное развертывание

В начале настройки соединения должны вращаться вокруг поддержки простого и непосредственного соединения для минимизации сложности и времени развертывания. Ввод в действие показан на Рисунке 1.1, “Развертывание базового узла”, преследующим цель наличия связи по 1 × 10G со всеми вычислительными узлами, в то же время используя соединения в соответствующих узлах для достижения максимальной производительности.

 

Рисунок 1.1. Развертывание базового узла


 Связность с максимальной производительностью

Если сетевой подсистемы базовой комплектации оказывается недостаточно, мы можете перейти к Рисунку 1.2, “Развертывание производительного узла”, который предоставляет 2 × 10G сетевые соединения всем экземплярам в среде, а также обеспечивает бОльшую пропускную способность к уровню хранения.

 

Рисунок 1.2. Развертывание производительного узла


 Схемы узла

Следующие схемы (с Рисунка 1.3, “Узел контроллера” до Рисунка 1.6, “Узел хранения”) содержат логическую информацию о различных типах узлов с отображением того, какие службы будут работать на них и как они будут взаимодействовать друг с другом. Схемы также иллюстрируют то, каким образом достигается доступность и масштабируемость служб.

 

Рисунок 1.3. Узел контроллера


 

Рисунок 1.4. Вычислительный узел


 

Рисунок 1.5. Сетевой узел


 

Рисунок 1.6. Узел хранения


 Пример настройки компонентов

Таблица 1.2, “Настройка компонентов третьих производителей” и Таблица 1.3, “Настройка компонентов OpenStack” содержат пример и его анализ как для компонентов третьих производителей и OpenStack components:

Таблица 1.2, Настройка компонентов третьих производителей
Компонент Настройка Доступность Масштабирование
MySQL binlog-format = row Репликации мастер/мастер. Однако оба узла не используются одновременно. Репликация поддерживает все узлы очень близко к актуальным данным настолько, насколько это возможно (хотя асинхронная природа репликаций означает, что полная согласованность невозможна). Подключение к базе данных осуществляется только через виртуальные IP Pacemaker, обеспечивая что большинство проблем репликации мастер-мастер можно избежать. Не очень проработано. Как только загрузка сервера MySQL возрастает в достаточной степени для рассмотрения масштабируемости, может использоваться установка с несколькими мастерами или конфигурация ведущий/ведомый.
Qpid max-connections=1000 worker-threads=20 connection-backlog=10, включает безопасность sasl с аутентификацией SASL-BASIC Qpid добавляется в качестве ресурса для программного обеспечения Pacemaker которое выполняется на узлах контроллера, на которых расположен Qpid. Это гарантирует, что только один экземпляр Qpid работает в определенное время, и узел с виртуальным IP Pacemaker всегда будет узлом с запущенным Qpid. Не очень проработано. Однако, Qpid может быть заменен для работы на всех узлах контроллера для задач масштабируемости и доступности и удален с Pacemaker.
HAProxy maxconn 3000 HAProxy является балансировщиком нагрузки программного уровня -7, используемым в качестве точки входа для всех компонентов кластерного API OpenStack и выполняющего терминацию SSL. HAProxy может быть добавлен как ресурс для программного обеспечения Pacemaker, которое работает на узлах контроллера где расположен HAProxy. Это гарантирует, что только один экземпляр работать в определенный момент времени, а узел с виртуальным IP Pacemaker всегда будет узлом с работающим HAProxy. Не рассматривается. HAProxy имеет достаточно небольшие накладные расходы производительности, которые один экземпляр должен масштабировать в достаточной степени для заданного уровня рабочей нагрузки. Если требуется дополнительное масштабирование, можно добавить перед множеством копий HAProxy keepalived или другой балансировщик нагрузки 4 уровня.
Memcached MAXCONN="8192" CACHESIZE="30457" Memcached является быстрым кэширующим в оперативной памяти пары ключ-значение программным обеспечением, которое используется компонентами OpenStack для кэширования данных и увеличения производительности. Memcached работает на всех узлах контроллера, гарантируя, что в случае выхода из строя одного из экземпляров, другой экземпляр будет доступен. Не рассматривается. Один экземпляр Memcached должен иметь возможность масштабирования до требуемых нагрузок. Если требуется масштабируемость, перед Memcached (в режиме необработанного tcp) может быть помещен HAProxy для использования множества экземпляров Memcached для масштабируемости. Однако это может создать проблемы согласованности кэша.
Pacemaker Настроен на использование corosync и cman как средство управления стеком/кворумом кластерного взамиодействия, а также как кластер из двух узлов.

Pacemaker является кластерным программным обеспечением, используемым для гарантирования доступности служб, запущенных на узлах контроллера и сетевых узлах:

  • Поскольку Pacemaker является кластерным программным обеспечением, само программное обеспечение обрабатывает свою собственную доступность, используя на нижнем уровне corosync и cman.

  • Если вы используете родной клиент GlusterFS, никакие виртуальные IP не требуются. Если вы используете адаптер NFS или SMB, вам потребуются виртуальный IP на котором вы смонтируете тома GlusterFS.

Если требуется сделать больше узлов доступных кластеру, Pacemaker может масштабироваться до 64 узлов.
GlusterFS Во всех томах включается профиль производительности "virrt" glusterfs. Тома устанавливаются в двух узловую репликацию. Glusterfs является кластерной файловой системой, которая работает на узлах хранения для обеспечения постоянных масштабируемых систем хранения данных. Поскольку все подключения к gluster используют родные gluster точки монтирования, экземпляры gluster сами по себе обеспечивают функциональность доступности и отказоустойчивости. Масштабируемость систем хранения GlusterFS может быть получена добавлением большего числа томов хранения.

Таблица 1.3. Настройка компонентов OpenStack
Компонент Тип узла Настройка Доступность Масштабирование
Инструментальная панель (horizon) Контроллер Настроена на использование Memcached для хранения сессий, поддержка neutron включена, can_set_mount_point = False Инструментальная панель работает на всех узлах контроллера, обеспечивая доступность по крайней мере одного экземпляра в случае отказа узла. Она также расположена за HAProxy, который определяет отказы программного обеспечения и маршрутизации запросов во всех неисправных экземплярах. Инструментальная панель выполняется на всех узлах контроллера, следовательно масштабируемость может быть достигнута за счет дополнительных узлов контроллера. HAProxy делает возможным масштабирование инструментальной панели по мере добавления большего числа узлов.
Идентификация (keystone) Контроллер Настроен на использование Memcached для кэширования и PKI для маркеров. Идентификация работает на всех узлах контроллера, обеспечивая доступность по крайней мере одного экземпляра в случае отказа узла. Идентификация также расположена за HAProxy, который определяет отказы программного обеспечения и маршрутизации запросов во всех неисправных экземплярах. Идентификация выполняется на всех узлах контроллера, следовательно масштабируемость может быть достигнута за счет дополнительных узлов контроллера. HAProxy делает возможным масштабирование инструментальной панели по мере добавления большего числа узлов.
Служба образов (glance) Контроллер /var/lib/glance/images является монтируемым самой GlusterFS томом для выведения его за пределы уровня системы хранения. Служба образов работает на всех узлах контроллера, обеспечивая доступность по крайней мере одного экземпляра в случае отказа узла. Она также расположена за HAProxy, который определяет отказы программного обеспечения и маршрутизации запросов во всех неисправных экземплярах. Служба образов выполняется на всех узлах контроллера, следовательно масштабируемость может быть достигнута за счет дополнительных узлов контроллера. HAProxy делает возможным масштабирование инструментальной панели по мере добавления большего числа узлов.
Вычислительный узел (nova) Контроллер, Вычислительные узлы

Настроен на использование Qpid, qpid_heartbeat = 10, сконфигурирован для использования Memcached для кэширования, настроен для использования libvirt, настроен для использования neutron.

Настраивает nova-consoleauth использовать Memcached для управления сессиями (таким образом, чтобы он мог иметь множество копий и выполнять балансировку нагрузки).

Службы nova API, планировщика заданий, хранилища объектов, cert, consoleauth, conductor и vncproxy работают на всех узлах контроллера, обеспечивая доступность по крайней мере одного экземпляра в случае отказа узла. Compute также расположена за HAProxy, который определяет отказы программного обеспечения и маршрутизации запросов во всех неисправных экземплярах.

Вычислительные узлы служб compute и проводника(conductor), которые выполняются на вычислительных узлах, требуются только для выполнения служб на этих узлах, следовательно доступность этих служб тесно сочетается с доступными узлами. Пока вычислительный узел работает, он будет иметь запущенные на нем необходимые службы.

Службы nova API, планировщика заданий, хранилища объектов, cert, consoleauth, conductor и vncproxy services выполняются на всех узлах контроллера, следовательно масштабируемость может быть достигнута за счет дополнительных узлов контроллера. HAProxy делает возможным масштабирование инструментальной панели по мере добавления большего числа узлов. Масштабируемость служб, запущенных на вычислительных узлах (compute, conductor) достигается в линейную зависимость путем добавления бОльшего числа вычислительных узлов.
Система блочного хранения (cinder) Контроллер Настроена на использование Qpid, qpid_heartbeat = 10, настроена на использование томов Gluster с уровня системы хранения в качестве сервера для блочного хранилища ()Block Storage), с применением родного клиента Gluster. Службы API блочного хранилища, планировщика заданий и томов выполняются на всех узлах контроллера, обеспечивая доступность по крайней мере одного экземпляра в случае отказа узла. Блочное хранилище также расположено за HAProxy, который определяет отказы программного обеспечения и маршрутизации запросов во всех неисправных экземплярах. Службы API блочного хранилища, планировщика заданий и томов выполняются на всех узлах контроллера, следовательно масштабируемость может быть достигнута за счет дополнительных узлов контроллера. HAProxy делает возможным масштабирование инструментальной панели по мере добавления большего числа узлов для хранения блоков.
Сетевые средства OpenStack (neutron) Контроллер, Вычислительные узлы, Сетевые узлы Настроен применять QPID, qpid_heartbeat = 10, включена поддержка службы имен ядра, tenant_network_type = vlan, allow_overlapping_ips = true, tenant_network_type = vlan, bridge_uplinks = br-ex:em2, bridge_mappings = physnet1:br-ex

Служба сети OpenStack работает на всех вычислительных узлах, обеспечивая доступность по крайней мере одного экземпляра в случае отказа узла. Она также расположена за HAProxy, который определяет отказы программного обеспечения и маршрутизации запросов во всех неисправных экземплярах.

Службы сетевая среды OpenStack ovs-agent, l3-agent, dhcp-agent и metadata-agent выполняются на сетевых узлах, как ресурсы lsb внутри Pacemaker. Это означает, что в случае отказа сетевого узла, службы остаются запущенными на другом узле. Наконец служба ovs-agent также выполняется на всех вычислительных узлах, и в случае отказа вычислительного узла любой другой оставшийся узел продолжит работу с применением копии, запущенной на нем.

Служба сети OpenStack работает на всех вычислительных узлах, следовательно масштабируемость может быть достигнута за счет дополнительных узлов контроллера. HAProxy делает возможным масштабирование сетевой службы по мере добавления большего числа узлов. Масштабируемость служб, запущенных на сетевых узлах в настоящее время не поддерживается сетевыми ресурсами OpenStack, следовательно, они не рассматриваются. Одной копии служб должно быть достаточно для обработки данной рабочей нагрузки. Масштабируемость ovs-agent работающих на вычислительных узлах, достигается добавлением по мере необходимости бОльшего числа вычислительных узлов.

 Заключительные соображения по архитектуре

При всем обилии доступных возможностей и опций мы надеемся обеспечить ваше изучение OpenStack несколькими четко обозначенными и проверенными способами. Если вам необходимы допонительные идеи, проверьте Дополнение A. Случаи использования, Руководство по установке OpenStack или Страницу пользовательских историй OpenStack.