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

от автора

В продолжении цикла статей об облачном оркестраторе 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.

ссылка на оригинал статьи https://habr.com/ru/post/499234/


Комментарии

Добавить комментарий

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