Настройка сети
Платформа поддерживает варианты сетей:
VLAN.VxLANвнутри тенанта.VxLANс анонсом черезBGP.
В этом разделе приведена краткая инструкция по созданию внешней VLAN-сети с использованием команд OpenStack CLI.
Для реализации данной задачи на уровне Neutron создаётся связка Network-Subnet, которая будет выходить в корпоративную сеть в виде инкапсулированного VLAN-трафика.
Чтобы создать внешнюю сеть:
-
Измените настройки в конфигурационных файлах, расположенных в директории
<vkcloud>/group_vars/на деплой-ноде:-
В файле
<vkcloud>/vars.ymlзадайте параметры конфигурации для внешней Neutron-сети:external_networks_extend:"172.25.120.0/24": # адрес внешней подсетиvlan: 2013 # Номер VLAN во внешней подсетиproject_id: "e01b26b84caa463f9c1691720fba5d53" # ID проекта "admin"; можно узнать через команду `openstack project show admin`network_name: "ext-net" # Название сети (будет отображаться в веб-интерфейсе под этим именем)shared: "True" # Всегда True -
В следующих файлах задайте настройки мостов для выхода ВМ во внешнюю сеть: br-vlan интерфейс для выхода с VLAN, br-ex интерфейс для выхода без VLAN (создаётся как дополнение, без какого-либо присвоенного IP):
-
<vkcloud>_compute/vars.yml— файл с настройками вычислительных узлов, на которых будут запускаться ВМ.compute_network_ifcfg_vlan: |DEVICE=br-vlanDEVICETYPE=ovsTYPE=OVSBridgeBOOTPROTO=noneONBOOT=yesNOZEROCONF=yesOVS_EXTRA="add-port br-vlan bond0"compute_network_ifcfg_external: |DEVICE=br-exDEVICETYPE=ovsTYPE=OVSBridgeBOOTPROTO=staticONBOOT=yesNOZEROCONF=yes{% for gw_ip in networks.external | ipaddr('-2') %}IPADDR{{ loop.index }}={{ gw_ip | ipaddr('address') }}NETMASK{{ loop.index }}=255.255.255.255{% endfor %} -
<vkcloud>_dhcp/vars.yml— файл с настройками DHCP:neutron_dhcp_ifcfg_external: |DEVICE=br-exDEVICETYPE=ovsTYPE=OVSBridgeBOOTPROTO=staticONBOOT=yesNOZEROCONF=yes{% for gw_ip in networks.external | ipaddr('-2') %}IPADDR{{ loop.index }}={{ gw_ip | ipaddr('address') }}NETMASK{{ loop.index }}=255.255.255.255{% endfor %}neutron_dhcp_ifcfg_vlan: |DEVICE=br-vlanDEVICETYPE=ovsTYPE=OVSBridgeBOOTPROTO=noneONBOOT=yesNOZEROCONF=yesOVS_EXTRA="add-port br-vlan bond0" -
<vkcloud>_octavia/vars.yml— файл с настройками балансировщика Octavia:octavia_network_ifcfg_external: |DEVICE=br-exDEVICETYPE=ovsTYPE=OVSBridgeBOOTPROTO=staticONBOOT=yesNOZEROCONF=yes{% for gw_ip in networks.external | ipaddr('-2') %}IPADDR{{ loop.index }}={{ gw_ip | ipaddr('address') }}NETMASK{{ loop.index }}=255.255.255.255{% endfor %}octavia_network_ifcfg_vlan: |DEVICE=br-vlanDEVICETYPE=ovsTYPE=OVSBridgeBOOTPROTO=noneONBOOT=yesNOZEROCONF=yesOVS_EXTRA="add-port br-vlan bond0" -
<vkcloud>_network/vars.yml— файл с настройками Neutron-сети:neutron_network_ifcfg_external: |DEVICE=br-exDEVICETYPE=ovsTYPE=OVSBridgeBOOTPROTO=staticONBOOT=yesNOZEROCONF=yes{% for gw_ip in networks.external | ipaddr('-2') %}IPADDR{{ loop.index }}={{ gw_ip | ipaddr('address') }}NETMASK{{ loop.index }}=255.255.255.255{% endfor %}neutron_network_ifcfg_vlan: |DEVICE=br-vlanDEVICETYPE=ovsTYPE=OVSBridgeBOOTPROTO=noneONBOOT=yesNOZEROCONF=yesOVS_EXTRA="add-port br-vlan bond0"
-
-
-
Задайте название окружения и запустите плейбуки:
$ cd ~/inventory/vkcloud/$ ansible-playbook --diff -i vkcloud.yml -e env=vkcloud -e bootstrap=yes ../ansible-openstack/playbooks/neutron-controller-deploy.yml | $ tee ~/neutron-controller-deploy$ ansible-playbook --diff -i vkcloud.yml -e env=vkcloud -e bootstrap=yes ../ansible-openstack/playbooks/neutron-network-deploy.yml | tee ~/neutron-network-deploy$ ansible-playbook --diff -i vkcloud.yml -e env=vkcloud -e bootstrap=yes ../ansible-openstack/playbooks/compute-deploy.yml | tee ~/compute-deploy$ ansible-playbook --diff -i vkcloud.yml -e env=vkcloud -e bootstrap=yes ../ansible-openstack/playbooks/neutron-dhcp-deploy.yml | tee ~/neutron-dhcp-deploy$ ansible-playbook --diff -i vkcloud.yml -e env=vkcloud -e bootstrap=yes ../ansible-openstack/playbooks/octavia-deploy.yml | tee ~/octavia-deploy -
Создайте внешнюю сеть, через которую будет осуществляться взаимодействие приватных пользовательских сетей с внешними сетями организации:
$ openstack network create --provider-network-type vlan --external --provider-physical-network vlan --provider-segment <VLAN_ID> --share <НАЗВАНИЕ_ВНЕШНЕЙ_СЕТИ> -
Создайте подсеть в только что созданной сети:
$ openstack subnet create --network <НАЗВАНИЕ_ВНЕШНЕЙ_СЕТИ> --subnet-range <ПОДСЕТЬ> --allocation-pool <ПУЛ_АДРЕСОВ> --dhcp --gateway <IP_АДРЕС_ШЛЮЗА> --dns-nameserver <АДРЕС_DNS_СЕРВЕРА> <НАЗВАНИЕ_ПОДСЕТИ>где:
- <ПОДСЕТЬ> — адрес подсети, которую вам выдали в этом VLAN. Например,
172.25.120.0/24. - <ПУЛ_АДРЕСОВ> — пул IP-адресов для ВМ (не забудьте оставить место для шлюза и двух DHCP-серверов). Например,
start=172.25.120.4,end=172.25.120.245.
- <ПОДСЕТЬ> — адрес подсети, которую вам выдали в этом VLAN. Например,
Для обеспечения доступа ВМ в пользовательских внутренних сетях во внешнюю сеть необходимо задать внешнюю сеть как шлюз для маршрутизатора внутренней:
-
Войдите в Портал самообслуживания с использованием учётной записи Администратора Платформы.
-
Перейдите в раздел Виртуальные сети → Маршрутизаторы.
-
Нажмите кнопку Добавить маршрутизатор.
- Укажите название пользовательской сети.
- Включите флажок Подключение к внешней сети.
- Выберите подсеть в раскрывающемся списке Список подсетей.
-
Нажмите кнопку Создать.
-
Перейдите в раздел Виртуальные сети → Сети.
-
Нажмите кнопку Создать.
-
Укажите название сети при необходимости, в списке Маршрутизатор выберите ранее созданный маршрутизатор.
-
В области Список подсетей нажмите на значок ••• справа от названия подсети и выберите пункт Редактировать подсеть. Включите параметр Включить DHCP.
-
Отключите параметр Приватный DNS и укажите используемые DNS-серверы.
-
Нажмите кнопку Создать.
-
Нажмите кнопку Добавить сеть.
После подключения внутренней сети к внешней для ВМ во внутренней сети появляется возможность назначения Внешнего IP-адреса.
Чтобы пройти аналогичные шаги в OpenStack CLI выполните подготовительные операции для использования OpenStack CLI (подробнее — в разделе Вход для Администратора Платформы), затем — команды:
# openstack router create <НАЗВАНИЕ_РОУТЕРА># openstack network create <НАЗВАНИЕ_ВНУТРЕННЕЙ_СЕТИ># openstack subnet create <НАЗВАНИЕ_ВНУТРЕННЕЙ_ПОДСЕТИ> --network <НАЗВАНИЕ_ВНУТРЕННЕЙ_СЕТИ> --subnet-range 192.168.100.0/24 --dns-nameserver 10.14.0.12# openstack router set <НАЗВАНИЕ_РОУТЕРА> --external-gateway <НАЗВАНИЕ_ВНЕШНЕЙ_СЕТИ># openstack router add subnet <НАЗВАНИЕ_ВНУТРЕННЕЙ_СЕТИ> <НАЗВАНИЕ_ВНУТРЕННЕЙ_ПОДСЕТИ>
Удаление сетевых подключений через Портал администратора:
- Перейдите в раздел Сетевая подсистема → Порты.
- Установите флажки для портов, у которых в столбце Подключенное устройство указано значение compute.
- Нажмите кнопку удаления справа от кнопки Добавить.
Удалять сети и сетевые подключения можно через Портал самообслуживания. Шаги по выполнению операций приведены в Руководстве пользователя VK Private Cloud в разделе Сети.
Для добавления подсети адресов во внешнюю сеть создайте новую подсеть в этой внешней сети (подробнее — в разделе Создание подсети).
$ openstack subnet create --network ext-net --subnet-range 203.0.114.0/24 --allocation-pool start=203.0.114.1,end=203.0.114.253 --gateway 203.0.114.254 ext-net-subnet2