Настройка изолированных сетей в OpenNebula используя VxLAN в Open vSwitch
Рассмотрим решение по созданию виртуальных приватных сетей для виртуальных ресурсов, используя технологию сетевой виртуализации VxLAN (Virtual eXtensible Local Area Network) в открытом программном коммутаторе Open vSwitch.
VxLAN является технологией сетевой виртуализации, созданной для решения проблем масштабируемости в больших системах облачных вычислений. Она использует схожую с VLAN технику для MAC инкапсуляции Layer 2 Ethernet кадров в UDP-пакеты, порт 4789.
Технология VxLAN - это способ создания новых логических L2-сетей в рамках уже существующих L3-сетей. В одной VxLAN-сети виртуальная машина уникально идентифицируется двумя следующими параметрами:
- VXLAN Network Identifier (VNI) - 24-битный идентификатор виртуальной сети, а значит их всего может быть более 16 миллионов штук.
- MAC-адрес сервера.
Задача состоит в том, чтобы создать несколько изолированных друг от друга локальных сетей для виртуальных ресурсов между гипервизорами.
Гипервизоры:
- vmm01.devserver.network -
172.16.1.1
- vmm02.devserver.network -
172.16.1.2
- vmm03.devserver.network -
172.16.1.3
- vmm04.devserver.network -
172.16.1.4
- vmm05.devserver.network -
172.16.1.5
Шаг 1. Установка Open vSwitch
Установка Open vSwitch так же детально описана в одной из моих статей.
1 | yum install https://rdoproject.org/repos/rdo-release.rpm -y |
1 | yum install openvswitch -y |
Добавим сервис в автозагрузку отключив работу NetworkManager.
1 | systemctl start openvswitch.service |
Шаг 2. Создаем бридж интерфейc и выполнеям его настройку
Создаем бридж с именем isolate
. Выполняем настройку физического интерфейса на работу через бридж, а так же создаем и настраиваем сам бридж интерфейс.
1 | ovs-vsctl add-br isolate |
/etc/sysconfig/network-scripts/ifcfg-eth1
1 | DEVICE="eth1" |
/etc/sysconfig/network-scripts/ifcfg-isolate
1 | DEVICE="isolate" |
Добавляем физический порт в бридж и перезагружаем сеть для применения изменений.
1 | ovs-vsctl add-port isolate eth1 && systemctl restart network |
Шаг 3. Поднимаем туннели между гипервизорами
Создаем связующий бридж на каждом хосте с гипервизором и поднимаем туннели с другими гипервизорами через него.
vmm01.devservers.network
1 | ovs-vsctl add-br integrate |
Создаем туннель со вторым, третьим, четвертым и пятым хостом.
1 | ovs-vsctl add-port integrate vxlan0 -- set Interface vxlan0 type=vxlan options:remote_ip=172.16.1.2 |
vmm02.devservers.network
1 | ovs-vsctl add-br integrate |
Создаем туннель с первым, третьим, четвертым и пятым хостом.
1 | ovs-vsctl add-port integrate vxlan0 -- set Interface vxlan0 type=vxlan options:remote_ip=172.16.1.1 |
vmm03.devservers.network
1 | ovs-vsctl add-br integrate |
Создаем туннель с первым, вторым, четвертым и пятым хостом.
1 | ovs-vsctl add-port integrate vxlan0 -- set Interface vxlan0 type=vxlan options:remote_ip=172.16.1.1 |
vmm04.devservers.network
1 | ovs-vsctl add-br integrate |
Создаем туннель с первым, вторым, третьим и пятым хостом.
1 | ovs-vsctl add-port integrate vxlan0 -- set Interface vxlan0 type=vxlan options:remote_ip=172.16.1.1 |
vmm05.devservers.network
1 | ovs-vsctl add-br integrate |
Создаем туннель с первым, вторым, третьим и четвертым хостом.
1 | ovs-vsctl add-port integrate vxlan0 -- set Interface vxlan0 type=vxlan options:remote_ip=172.16.1.1 |
Проверяем конфигурацию:
1 | Bridge integrate |
Шаг 4. Добавляем новую приватную сеть в OpenNebula
Создаем новую виртуальную сеть, к примеру RedNetwork, выбираем тип Open vSwitch - VXLAN и указываем isolate
в качестве интерфейса для обмена трафиком.
После создания сети будет автоматически добавлен новый бридж для данной сети, а так же присвоен VNI (VxLAN Network Identifier) для тэгирования трафика. Нумерацию VNI в OpenNebula можно указать в конфигурационном файле /etc/one/oned.conf
, параметр VXLAN_IDS
.
В примере я добавил вторую виртуальную сеть с такой же адресацией и назвал её BlueNetwork, чтобы показать, что сети не пересекаются между собой и остаются в рамках своего VNI.
Шаг 5. Создаем виртуальные сервера и проверяем
Создаем, два виртуальных сервера с адресами 10.50.50.1
и 10.50.50.2
в сети RedNetwork и два сервера с такой же адресацией в сети BlueNetwork. Проверяем доступность. (Наглядный пример работы представлен в видео-уроке к данной статье)