CloudStack 4. Собираем облако

Статья была написана 27 декабря 2012 г. Перенесена из старого блога.

Предварительно необходимо иметь нормально функционирующий DNS сервер способный резолвить имена NFS, iSCSI-серверров и всех хостов которые планируется подключить в CloudStack облако. Даже в тестовой среде, настоятельно рекомендую завести DNS-сервер — это позволяет избежать кучи проблем и путаницы в IP-адрессах.

После установки и прежде чем будет запущена первая ВМ нужно сконфигурировать минимально необходимые для работы CloudStack структурные элементы (Zone, Pods, Clusters), подключить системы хранения и хотя бы один хост (обычно KVM, Xen или VMware).

Все необходимые структурные элементы(Zone, Pod, Cluster, Host а также Primary и Secondary стораджи) будет предложено настроить с помощью простенького мастера запускающегося сразу после первого входа в веб-консоль CloudStack. На мой взгляд, мастер первичной настройки слишком упрощенный. Например нет возможности в качестве Primary стораджа использовать iSCSI хранилище. По этому, создание первой зоны(Zone) и всех ее составляющих я выполнял с помощью более детализованных мастеров настройки, доступных в веб-консоле CloudStack отказавшись воспользоваться мастером первичной настройки.

Инфраструктура CloudStack

Инфраструктура CloudStack иерархическая. Наивысшим уровнем иерархии является Зона(Zone) — структура уровня дата-центра.

Зона(Zone) — является крупнейшим подразделением в CloudStack. Зона обычно соответствует одному центру обработки данных, хотя допустимо иметь несколько зон в рамках одного центра обработки данных. Организация инфраструктуры в зонах необходима для обеспечения физической изоляции и избыточности. Например, каждая зона может иметь свой собственный источник питания и сетевое соединение, а также зоны могут быть широко разделены географически (хотя это не обязательно). В рамках одной зоны, спокойно могут работать хосты под управлением разных гепирвизоров.

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

Клаcтер(Cluster) — является третьим по величине подразделением в CloudStack. Кластеры содержатся в стойках а стойки в свою очередь в зонах. По сути Кластер — это группа физических серверов с однотипной конфигурацией размещенных в одной стойке. Все хосты кластера должны иметь на борту однотипный гипервизор, находится в одной подсети и иметь доступ к одному общему хранилищу. Живая миграция ВМ с одного хоста на другой, без прерывания обслуживания, может быть выполнена только в рамках одного кластера.

Хост(Xost) — Сервер с гипервизором на борту(обычно KVM, Xen или VMware). Хосты обеспечивают вычислительные ресурсы, на которых работают ВМ. Хосты являются самым маленьким подразделением в CloudStack. Хосты содержатся в кластерах, кластеры, в стойках, а стойки, содержатся в зонах. Все просто)

Хранилища(Storages) — могут быть первичными(Primary) и вторичными(Secondary). Вторичные могут быть расположенны только на NFS хранилищах, тогда как первичные также могут быть подключены по iSCSI. Как то еще можно использовать локальные диски сервера CloudStack, но в это тему я не вникал.
Первичное хранилище, подключается к кластеру и является общим для всех хостов кластера. На первичном хранилище хранятся диски ВМ.
Вторичное хранилище, не подключается не к одному кластеру и хосту соответственно, оно существует на уровне зоны и служит для хранения шаблонов ВМ и ISO’шников.
Рис. 1. Визуальное представление, зоны CloudStack со всей ее структурой(стойки, кластеры, хосты и хранилища)

Технические детали

CloudStack 4. Установлен на Ubuntu 12.04 LTS x86-64
В качестве хоста с гипервизором — XenServer 6.0.2
В качестве iSCSI-таргета — StarWind iSCSI SAN 6.0.5 на Windows Server 2008 R2 Enterprise x86-64
В качестве NFS-хранилища — Windows Server 2008 R2 Enterprise x86-64

Создание новой Зоны

Рис 2. Голая инфраструктура. Путь к запуску мастера создания новой зоны.

На первом этапе (Рис.3), мастер создания зоны предлагает два пути — базовый(Basic) и продвинутый(Advanced). Продвинутый — для более сложных сетевых топологий. Здесь предлагается более детально настроить подсети, VLAN’ы и правила фаервола. Мы же пойдем по простому(Basic) пути т. к. конфигурация сетевой подситемы даже в интуитивно понятных мастерах заслуживает отдельной статьи.
Рис 3. Выбор пути. Посложнее и детальнее или по проще:)

На втором шаге будет предложено указать имя новой зоны, внешние и внутренние DNS-сервера, тип гипервизора, шаблон настройки сети(оставляем по умолчанию) а так же здесь возможно активировать локальное хранилище(локальные диски сервера CloudStack).
Рис 4. Настройка физических интерфейсов.

Третий шаг, состоит из трех под-пунктов на первом из которых предоставляется возможность настроить физические сети(интерфейсы) сервера CloudStack (Рис. 4). При добавлении первой зоны, необходимо создать одну или несколько физических сетей. Каждая физическая сеть соответствует сетевому интерфейсу на гипервизоре. Каждая физическая сеть может обрабатывать один или несколько типов трафика. Типы трафика обозначены красивыми пиктограммами которые можно перетаскивать между физическими интерфейсами тем самым распределяя трафик между интерфейсами.

Следующим шагом последует создание первой стойки(Pod) в нашей зоне. Необходимо указать имя для новой стойки, шлюз и подсеть резервируемую для всех кластеров, что будут добавлены в дальнейшем в эту стойку. Диапазон резервируемых адрессов должен быть уникальным для каждой зоны!

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

Далее, четвертый шаг состоящий из 4-х подпунктов, позволяет добавить непосредственно ресурсы зоны — хосты и стораджы. На первом из четырех шагов создаем кластер. Тип гипервизора определен на этапе описания зоны по этому остается указать только отображаемое в интерфейсе имя для нового кластера. Далее добавляем первый хост (Рис. 5.). Здесь необходимо указать полное DNS-имя XenServer’a(в моем случае) или IP-адресс а так же учетные данные root’a для успешного подключения и последующего управления этим хостом с помощью CloudStack.
Рис. 5. Подключение XenServer

Следом за хостом, подключаем первичное(Primary) хранилище (Рис. 6.). Выбираем из доступных NFS или iSCSI, указываем соответствующие имена серверов а так же IQN iscsi-таргета или имя NFS шары. За первичным хранилищем добавляем вторичное(Secondary) которое может быть только NFS (Рис. 7.).
Рис. 6. Подключаем iSCSI-хранилище
Рис. 7. Подключаем NFS-хранилище

Наконец, в конце долгого пути нас ждет заветная финальная страничка на которой мы запускаем процедуру создания зоны. В результате работы мастера мы должны получить примерно следующую картину (Рис. 8.).
Рис. 8. Зона создана

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

Теперь, у нас есть минимальная инфраструктура для запуска ВМ (Рис. 9.).
Рис. 9. Обзор инфраструктуры