Pull to refresh

Организация сети в облачном оркестраторе Flexiant

Reading time4 min
Views698
В продолжении цикла статей об облачном оркестраторе 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 выбираются из списка в контрольной панели.

image

Как только адаптер получает сеть, и опционально 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.
Tags:
Hubs:
+3
Comments0

Articles