Многие аспекты работы с сетевой инфраструктурой СloudStack при чтении официальной документации затруднительны для понимания. Существует несколько основных, не слишком сложных, но и не особенно очевидных концепций. В данной статье мы попытаемся рассмотреть их подробнее, чтобы понять как устроена работа с сетями в СloudStack. После прочтения, вы будете иметь представление о следующих аспектах сетевого взаимодействия:
- типы логических сетей в СloudStack;
- модели сетевого взаимодействия;
- требования к конфигурациям сетей;
- требования к физическим соединениям.
Для того, чтобы статья была понятна новичкам, местами мы будем прибегать к упрощениям, которые в 95% случаев являются истинными. Также, говоря о сетевой изоляции, мы будем подразумевать VLAN, но более опытные пользователи могут также использовать технологии SDN.
Эта статья является переводом и адаптацией англоязычного материала. Оригинал статьи написан Paul Angus из ShapeBlue. С исходной статьей можно ознакомиться на сайте ShapeBlue.
Типы сетей Cloudstack по назначению
СloudStack поддерживает несколько сетевых моделей, каждая из которых обладает различными свойствами. Эти модели позволяют использовать различные наборы функций, некоторые из которых являются взаимоисключающими. Мы начнем с того, что рассмотрим различные типы логических сетей, которые вы будете использовать в CloudStack.
Сеть управления
Сеть управления представляет собой диапазон IP-адресов, которые зарезервированы для назначения их системным виртуальным машинам и серверам инфраструктуры. Эти IP-адреса используются для связи сервера управления с системными виртуальными машинами. В реальности, сеть управления представляет собой не единую сеть, а несколько сетей, потому что каждому стенду (Pod) CloudStack необходим собственный уникальный диапазон адресов. Она выполняет функции связи между хостами облака, виртуальными машинами, которые используются в CloudStack для его внутренних задач, и для взаимодействия с серверами управления.
Гостевые Сети
В части гостевых сетей сетевые модели CloudStack различаются больше всего, но для общего понимания достаточно сказать, что гостевые сети передают сетевой трафик между VM пользователей, и между VM пользователей и соответствующими шлюзами.
Публичные Сети
Для изолированных сетей и сетей VPC (виртуальное частное облако) Сloudstack создает виртуальный маршрутизатор (VR), который располагается между гостевой и публичной сетью и обеспечивает внешний доступ к созданным виртуальным машинам. На внешний интерфейс маршрутизатора назначается IP-адрес из публичного диапазона, таким образом предоставляя внешний IP, который будет доступен пользователям и другим устройствам из Интернета.
Хотя сети и называются публичными, они не обязаны быть общедоступными сетями. Когда мы говорим о публичных сетях, мы обычно ссылаемся на сети, которые находятся с внешней стороны шлюзов (Virtual Router, VR), которые контролирует CloudStack. В сетях, которые не имеют управляемого CloudStack’ом шлюза, мы говорим, что публичной сети нет.
Публичные сети являются общезоновыми, поэтому все системные виртуальные машины будут получать IP из общих диапазонов IP-адресов, заданных для облака.
Сеть хранения данных
Наконец, СloudStack может маршрутизировать данные для долговременного хранения (данные secondary storage) посредством отдельного типа сети. Эта сеть соединяет VM вторичного хранилища (SSVM) с вторичным хранилищем, а также напрямую соединяет с хранилищем определенные типы физических хостов. VM вторичного хранилища использует эту сеть для передачи данных в/из хранилища, в котором хранятся снимки, шаблоны виртуальных машин или тома.
Если сеть хранения данных не определена, то СloudStack будет передавать данный тип трафика через сеть управления.
Данные из первичных хранилищ (где хранятся горячие данные VM, т.е. тома VM) могут передаваться через специально выделенные сети, но они не находятся под управлением СloudStack, а просто должны быть доступны для соответствующих потребителей трафика данных сетей.
Модели сетевого взаимодействия
Базовая модель сетевого взаимодействия (Basic Networking Model)
Базовая модель сети СloudStack очень похожа на оригинальную модель Amazon Web Services c группами безопасности, в соответствии с которой изоляция обеспечивается на уровне виртуальной машины (а не на уровне выделенной приватной сети). Для управления портами и IP-адресами, с которых трафик может идти к или от каждой пользовательской VM, используются группы безопасности.
Расширенная организация сетевого взаимодействия (Advanced Networking Model)
Расширенная модель сети является наиболее используемой в СloudStack. В этой модели каждый клиент (пользователь) может создавать сети, изолированные друг от друга (обычно с помощью VLAN). Поэтому пользователи в одном аккаунте не имеют доступа к сетям (и, следовательно, к VM) другого аккаунта. В простейших расширенных сетях СloudStack создается виртуальный маршрутизатор, который передает с помощью NAT трафик от изолированной гостевой сети публичным сетям.
В сети VPC вышеуказанная модель развита еще сильнее, позволяя подключить виртуальный маршрутизатор к нескольким изолированным гостевым сетям для построения более сложных топологий.
В расширенной модели сети также можно создать “разделяемые” сети. Виртуальный маршрутизатор в таких сетях не используется для передачи данных, а предоставляет только услуги DNS, DHCP и сервиса данных/метаданных. Этот тип сетей практически полностью соответствует базовой модели (Basic Networking Model). Разделяемые сети создаются администраторами, а не пользователями.
В CloudStack 5.0 планируется полностью запретить создание базовых сетевых моделей, поскольку они дублируются разделяемыми сетями в расширенной сетевой модели.
Требования к конфигурациям сетей
Требования к конфигурациям сети управления (Basic and Advanced Zones)
Требования к сети управления одинаковы для базовых и расширенных моделей. Для каждого стенда CloudStack необходимо предоставить диапазон IP-адресов и шлюз, которые CloudStack может использовать для создаваемых системных VM. Обычно, если в стенде нет хостов vSphere или Hyper-V, достаточно всего нескольких IP-адресов для одного стенда. Также, потребуются дополнительные IP-адреса, так как каждый виртуальный маршрутизатор будет использовать адрес из сети управления.
С помощью параметра
check.pod.cidrs
в основной конфигурации можно сделать так, что несколько стендов будут относиться к одной подсети, несмотря на то, что за ними закреплены разные диапазоны IP-адресов. Другими словами, они будут иметь одинаковые маски посдети и шлюз.
Требования к конфигурациям гостевых сетей
Базовая модель сетевого взаимодействия (Basic Zone)
В базовой модели сетевого взаимодействии для изоляции гостевых VM не используются сети VLAN, изоляция реализуется путем выделения виртуальным машинам глобально уникальных IP-адресов. Каждому стенду назначаются диапазоны IP-адресов, которые CloudStack может присвоить виртуальным машинам в рамках этого стенда. Также указываются IP-адреса шлюзов, для заданных диапазонов IP-адресов стенда. В тех зонах, где создано несколько стендов с разными шлюзам, шлюзы должны осуществлять маршрутизацию трафика между собой, тем самым позволяя гостевым виртуальным машинам созданным в различных стендах общаться друг с другом. Через шлюз гостевой сети стенда реализуется связь гостевых виртуальных машин с внешним миром.
Проще говоря, в базовой модели имеется набор плоских сетей со шлюзами, а виртуальные машины в рамках плоской сети взаимодействуют друг с другом с ограничениями, накладываемыми только правилами групп безопасности.
Расширенная модель сетевого взаимодействия (Advanced Zone)
В расширенной модели сетевого взаимодействия все сети изолированы и, следовательно, в каждой отдельной сети может быть использованы совпадающие IP адреса. Однако, для обеспечения изоляции, CloudStack должен знать, какие VLAN можно использовать (т. е. какие VLAN зарезервированы в облачной инфраструктуре для использования только CloudStack’ом). CloudStack предполагает, что каждая зона изолирована от остальных, и, следовательно, позволяет повторно использовать VLAN в различных зонах.
Гостевые сети в Базовой модели и Расширенной модели с разделяемой сетью
Ни разделяемые сети в расширенной модели сетевого взаимодействия, ни гостевые сети в базовой модели сетевого взаимодействия, не имеют имеют связи с публичной сетью (в терминах CloudStack), так как они напрямую подключены к внешним сетям через неуправляемые шлюзы. То есть, не используется управляемый CloudStack VR для связи гостевой сети и публичной сети.
Требования к конфигурациям публичных сетей (Расширенная модель сетевого взаимодействия)
Для изолированных сетей и сетей VPC необходимо предоставить один или более внешних (публичных) сетевых диапазонов, которые будут назначаться внешним интерфейсам виртуальных маршрутизаторов. Также, для каждого диапазона публичных адресов необходимо указать корректный шлюз.
В публичных облаках, публичные сети, обычно являются публично маршрутизируемыми IP-диапазонами. Однако, в частных сетях организаций это могут быть как публично маршрутизируемые, так и внутренние IP-диапазоны (RFC1918).
Публичные сети определяются для всей зоны, поэтому трафик публичных сетей, должен корректно маршрутизироваться до всех хостов гипервизоров, на которых могут выполняться виртуальные маршрутизаторы зоны.
Физические соединения
Теперь, имея представление о логических сетях, можно перейти к их реализации на уровне коммутаторов. В этом разделе мы рассмотрим аппаратные требования для реализации каждого типа логических сетей, перечисленных выше.
Сети управления
При определении сети управления для стенда можно задать VLAN, по которому будет передаваться данный трафик. Для простоты многие проектировщики используют общий VLAN и CIDR для всех хостов и системных VM. Для повышения уровня безопасности трафик между физическими хостами может передаваться по отдельному VLAN.
Нормальной практикой является использование одного или пары связанных сетевых интерфейсов, которые передают трафик управления на физические хосты. Физический хост должен иметь IP-адрес в диапазоне сети управления.
Гостевые сети (Basic Zone)
В базовой модели для трафика гостевой сети каждому стенду приписывается уникальный CIDR, и как с расширенной моделью, данный трафик должен передаваться через одиночный или пару связанных физических интерфейсов от хоста к коммутатору. CloudStack должен знать адрес шлюза по-умолчанию для выделенной сети CIDR, чтобы сообщить его гостевым VM в стенде, но самим шлюзом CloudStack не управляет.
Гостевые сети (Advanced Zone)
В расширенных сетях гостевой трафик движется по физическим сетям в тегированных VLAN (см. подробнее о тегированных VLAN в стандарте IEEE 802.1Q). Одиночные или связанные сетевые интерфейсы хостов и коммутаторов настраиваются для пропуска тегированного трафика. Порты коммутатора настраиваются для пропуска диапазонов VLAN, зарезервированных для использования CloudStack.
В среде, где используется несколько коммутаторов, межсетевые взаимодействия также должны быть транковыми портами, на которых разрешены VLANы, необходимые для передачи гостевого трафика между ними.
Публичные сети (Advanced Zone)
На этом уровне публичные сети очень похожи на гостевые. Т.к. публичные сети так же используют тегированные VLAN, то настройка полностью аналогична настройке для гостевых сетей в расширенной модели. Нередко трафик гостевых и публичных сетей разделяет одни и те же интерфейсы, на которых разрешена передача обоих диапазонов VLAN.
Сеть хранения данных
Достаточно объемному трафику сети хранения данных часто выделяется отдельный интерфейс или интерфейсы для отделения его от других типов данных. Это могут быть порты trunk или порты access.
Схема настройки портов и VLAN для расширенной модели
На изображении ниже приведен пример объединенной схемы физических и логических сетей в расширенной модели с двумя сетевыми интерфейсами.
Заключение
CloudStack является исключительно гибкой системой. Однако, применить эту гибкость при создании облака можно только после предварительного изучения организации сетевой инфраструктуры. Целью данной статьи было рассмотреть требования CloudStack к физической сетевой инфраструктуре, на которой они развернуты, а также способы организации логической организации различных типов сетевых топологий.
Если вам понравился этот пост, поделитесь им с друзьями.