В продолжении цикла статей об облачном оркестраторе Flexiant хотели бы рассказать о том, как строится организация сети для виртуальных машин и контейнеров под управлением данного оркестратора.
Flexiant выделяет четыре типа сети, которые могут быть доступны клиенту в его виртуальной машине.
PVIP – сеть, в которой клиенту выделяется один /32 адрес. Маршрутизация на данный IP-адрес выполняется на хост машине, на которой расположена виртуальная машина
Public IP – сеть, в которой клиент получает отдельный VLAN и подсеть /29. Это основная сеть, которая у нас используется. Маршрутизация для нее выполняется на специальных router-нодах, которыми управляет Flexiant Cloud Orchestrator.
Private IP – сеть, по организации аналогична предыдущей, за исключением того, что она не выводится вовне на router-ноды. Клиент может использовать ее для создания внутренних сетей между своими виртуальными машинами. IP адреса можно назначать как из интерфейса, так и на самой машине.
Interworking VLAN – опять же, очень похожа на Private IP, за исключением того, что она недоступна клиенту напрямую без участия провайдера. Данную сеть мы даем клиенту, когда ему нужно подключить существующую инфраструктуру по L2 к инфраструктуре Flexiant Cloud Orchestrator.
Все сети, кроме первой работают в отдельном изолированном VLAN, соотвественно клиенту доступны все протоколы L2: arp, dhcp, lldp и т.д. Сеть PVIP работает по L3, и используется нами для клиентов, которые хотят получить защиту от DDoS. Если они хотят защитить IP адреса, то им необходимо использовать именно ее.
Каждая сеть назначается адаптеру виртуальной машины. Таким образом в одной виртуальной машине могут быть несколько типов сетей одновременно.
IP адреса для Private IP и Interworking VLAN могут выбираться клиентами произвольно. IP адреса для Public IP и PVIP выбираются из списка в контрольной панели.
Как только адаптер получает сеть, и опционально IP-адрес, информация об этом попадает в базу данных оркестратора, и соответствующие настройки вносятся на ноды маршрутизации (для Public IP сети), ноды computing (для PVIP), а также в DHCP-сервер, расположенным на ноде управления, в случае, если IP-адрес был задан. Таблица соответствия между виртуальным mac-адресом карты и выбранным IP-адресом заносится в базу данных PgSQL, откуда она в дальнейшем берется DHCP-сервером.
На каждой ноде, будь-то router-нода или compute-нода установлен агент Flexiant, который принимает команды от оркестратора. Внутри самих нод поднят виртуальный маршрутизатор в отдельном сетевом пространстве имен. Таким образом, сетевой стек Linux на нодах и сетевой стек виртуального маршрутизатора независимы друг от друга.
Роутер-Ноды, обеспечивающие функционирования Public IP дублируют друг друга по протоколу VRRP в реализации carp. В случае отказа одной из нод, трафик пойдет через другую
Вот пример маршрутизации на route-ноде для одной:
Пара интерфейсов evrr/evrl это обычные veth в Linux, которые стыкуют между собой два сетевых пространства имен. Таким образом видно, как входящий трафик попадая в виртуальный роутер, маршрутизируется там на конкретный интерфейс.
Управление файрволом также происходит в виртуальном маршрутизаторе. Создаются отдельные таблицы и цепочки пропускающие или не пропускающие трафик на тот или иной сетевой интерфейс.
В качестве протокола маршрутизации мы используем OSPF, конфигурация с compute и router-нод попадает на ядро сети, а оттуда на опорные маршрутизаторы. В качестве софта на нодах используется bird, которым управляет Flexiant. Также в шаблоны конфигурации нами вносятся правки, благо Flexiant позволяет это делать. Flexiant также позволяет использовать статику и bgp в качестве протоколов маршрутизации.
С точки зрения оплаты все сети – бесплатны. Оплата идет лишь за IP адреса для сетей PVIP и Public IP. Однако IP-адреса для PVIP дороже, поскольку они защищены от атак DDoS.
Flexiant выделяет четыре типа сети, которые могут быть доступны клиенту в его виртуальной машине.
PVIP – сеть, в которой клиенту выделяется один /32 адрес. Маршрутизация на данный IP-адрес выполняется на хост машине, на которой расположена виртуальная машина
Public IP – сеть, в которой клиент получает отдельный VLAN и подсеть /29. Это основная сеть, которая у нас используется. Маршрутизация для нее выполняется на специальных router-нодах, которыми управляет Flexiant Cloud Orchestrator.
Private IP – сеть, по организации аналогична предыдущей, за исключением того, что она не выводится вовне на router-ноды. Клиент может использовать ее для создания внутренних сетей между своими виртуальными машинами. IP адреса можно назначать как из интерфейса, так и на самой машине.
Interworking VLAN – опять же, очень похожа на Private IP, за исключением того, что она недоступна клиенту напрямую без участия провайдера. Данную сеть мы даем клиенту, когда ему нужно подключить существующую инфраструктуру по L2 к инфраструктуре Flexiant Cloud Orchestrator.
Все сети, кроме первой работают в отдельном изолированном VLAN, соотвественно клиенту доступны все протоколы L2: arp, dhcp, lldp и т.д. Сеть PVIP работает по L3, и используется нами для клиентов, которые хотят получить защиту от DDoS. Если они хотят защитить IP адреса, то им необходимо использовать именно ее.
Каждая сеть назначается адаптеру виртуальной машины. Таким образом в одной виртуальной машине могут быть несколько типов сетей одновременно.
IP адреса для Private IP и Interworking VLAN могут выбираться клиентами произвольно. IP адреса для Public IP и PVIP выбираются из списка в контрольной панели.
Как только адаптер получает сеть, и опционально IP-адрес, информация об этом попадает в базу данных оркестратора, и соответствующие настройки вносятся на ноды маршрутизации (для Public IP сети), ноды computing (для PVIP), а также в DHCP-сервер, расположенным на ноде управления, в случае, если IP-адрес был задан. Таблица соответствия между виртуальным mac-адресом карты и выбранным IP-адресом заносится в базу данных PgSQL, откуда она в дальнейшем берется DHCP-сервером.
На каждой ноде, будь-то router-нода или compute-нода установлен агент Flexiant, который принимает команды от оркестратора. Внутри самих нод поднят виртуальный маршрутизатор в отдельном сетевом пространстве имен. Таким образом, сетевой стек Linux на нодах и сетевой стек виртуального маршрутизатора независимы друг от друга.
Роутер-Ноды, обеспечивающие функционирования Public IP дублируют друг друга по протоколу VRRP в реализации carp. В случае отказа одной из нод, трафик пойдет через другую
Вот пример маршрутизации на route-ноде для одной:
Router0# ip a l
…
766: VLAN367: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 00:1e:67:d3:67:5c brd ff:ff:ff:ff:ff:ff
inet6 fe80::e0fe:25ff:fef9:7304/64 scope link
valid_lft forever preferred_lft forever
…
Router0# brctl show VLAN367
bridge name bridge id STP enabled interfaces
VLAN367 8000.001e67d3675c no bond0.367
evrl-000190
# Впрыгиваем в виртуальный маршрутизатор с помощью простой специальной команды, которая цепляется к запущенному shell в screen, работающему в нужном нам сетевом пространстве имен
Router0# evrs
Router0# ip a l evrr-000190
768: evrr-000190: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether e6:52:0f:21:83:b0 brd ff:ff:ff:ff:ff:ff
inet 217.23.xxx.xxx/29 scope global evrr-000190
valid_lft forever preferred_lft forever
inet6 fe80::e452:fff:fe21:83b0/64 scope link
valid_lft forever preferred_lft forever
Router0# ip r l 217.23.xxx.xxx
217.23.xxx.xxx/29 dev evrr-000190 proto kernel scope link src 217.23.xxx.xxx
Router#0 ip r l ip r l 0.0.0.0/0
default via 10.158.192.3 dev evrr-000000 proto bird
Пара интерфейсов evrr/evrl это обычные veth в Linux, которые стыкуют между собой два сетевых пространства имен. Таким образом видно, как входящий трафик попадая в виртуальный роутер, маршрутизируется там на конкретный интерфейс.
Управление файрволом также происходит в виртуальном маршрутизаторе. Создаются отдельные таблицы и цепочки пропускающие или не пропускающие трафик на тот или иной сетевой интерфейс.
Router0# iptables -nvL evrr-000190-4i
Chain evrr-000190-4i (1 references)
pkts bytes target prot opt in out source destination
435M 124G RETURN all -- * * 217.23.xxx.xxx 0.0.0.0/0
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Router0# iptables -nvL evrr-000190-4o
Chain evrr-000190-4o (1 references)
pkts bytes target prot opt in out source destination
587M 782G ACCEPT all -- * * 0.0.0.0/0 217.23.xxx.xxx
6038K 350M DROP all -- * * 0.0.0.0/0 0.0.0.0/0
В качестве протокола маршрутизации мы используем OSPF, конфигурация с compute и router-нод попадает на ядро сети, а оттуда на опорные маршрутизаторы. В качестве софта на нодах используется bird, которым управляет Flexiant. Также в шаблоны конфигурации нами вносятся правки, благо Flexiant позволяет это делать. Flexiant также позволяет использовать статику и bgp в качестве протоколов маршрутизации.
С точки зрения оплаты все сети – бесплатны. Оплата идет лишь за IP адреса для сетей PVIP и Public IP. Однако IP-адреса для PVIP дороже, поскольку они защищены от атак DDoS.