Openstack/PackStack базовая настройка многоузловой сети

Фон

После установки OpenStack с PackStack у нас остается проблема с сетью. Мы хотели создать очень простую сеть с одной подсетью, в которой должны находиться все виртуальные машины, поскольку это выглядело как простейшее решение. Мы должны начать с трех узлов, на которых запущена нова.

Файл ответов, который мы использовали, таков: файл ответов (pastebin)

Наша установка

Три узла с CentOS 6.5, где узлы подключены к двум коммутаторам.

  • eth0: публичный
  • eth1: внутренняя сеть, ip 10.0.20.0/24, где узел1 (10.0.20.1), узел2 (10.0.20.2)...
  • Порты коммутатора не имеют тегов vlan или транкинга (к сожалению).
  • Мы хотим, чтобы экземпляры могли общаться, но также имели доступ к Интернету.

Правила группы безопасности

Ingress IPv4    TCP 1 - 65535   0.0.0.0/0 (CIDR)
Ingress IPv4    TCP 22 (SSH)    0.0.0.0/0 (CIDR)
Ingress IPv6    Any -       default
Ingress IPv4    TCP 22 (SSH)    10.0.20.0/24 (CIDR)
Ingress IPv4    TCP 53 (DNS)    0.0.0.0/0 (CIDR)
Egress  IPv4    Any -       0.0.0.0/0 (CIDR)
Ingress IPv4    ICMP    -       0.0.0.0/0 (CIDR)
Egress  IPv6    Any -       ::/0 (CIDR)
Ingress IPv4    Any -       default

нейтрон

(neutron) agent-list
+--------------------------------------+--------------------+------------------------
| id                                   | agent_type         | host  | alive | admin_state_up
+--------------------------------------+--------------------+------------------------
| 09add8dd-0328-4c63-8a79-5c61322a8314 | L3 agent           | host3 | :-)   | True
| 0d0748a9-4289-4a5d-b1d9-d06a764a8d25 | Open vSwitch agent | host2 | :-)   | True
| 258c92fe-8e3a-4760-864e-281a47523e85 | Open vSwitch agent | host1 | :-)   | True
| 2e886dc1-af93-4f4f-b66c-61177a6c9dba | L3 agent           | host1 | :-)   | True
| 50f37a33-2bfc-43f2-9d2f-4f42564d234d | Open vSwitch agent | host3 | :-)   | True
| 535bf0a3-06aa-4072-ae5a-1b1ba1d377ab | L3 agent           | host2 | :-)   | True
| 9b17ef73-a602-4b5d-a4e9-e97445e594b4 | DHCP agent         | host1 | :-)   | True

овс-vsctl

Host1

ovs-vsctl show

43da814e-223c-4f66-ba2d-c3c9de91e1f8
    Bridge br-ex
        Port br-ex
            Interface br-ex
                type: internal
    Bridge br-int
        Port br-int
            Interface br-int
                type: internal
        Port "tap3e0d3121-32"
            tag: 4
            Interface "tap3e0d3121-32"
                type: internal
        Port "tap4a397755-29"
            tag: 4
            Interface "tap4a397755-29"
    ovs_version: "1.11.0"
hOST2
afa75816-6a40-4f0c-842f-236a3a94cd63
    Bridge br-int
        Port br-int
            Interface br-int
                type: internal
        Port "tap46f55af8-73"
            tag: 1
            Interface "tap46f55af8-73"
    Bridge br-ex
        Port br-ex
            Interface br-ex
                type: internal
    ovs_version: "1.11.0"

Наша проблема

Экземпляры не могут общаться друг с другом и не могут подключиться к Интернету. Честно говоря, мы не уверены, каковы требования для этого при использовании многоузловой установки nova, когда "внутренняя" сеть между узлами использует только одну ссылку. Я думаю, что проблема заключается в маршрутизации, так как мы не можем соединиться между экземплярами на разных узлах, но после прочтения большого количества документации я не совсем уверен, как действовать дальше. Если я tcpdump интерфейс br-int, я могу видеть запросы ARP, но не более того. Это если я пытаюсь пинговать с экземпляра на соответствующем хосте.

Вопрос

Таким образом, вопрос заключается в следующем: как мы можем найти решение этой проблемы многоузловой сети и о чем нам нужно подумать? Может ли это быть маршрутизация или неправильная конфигурация с ОС хоста или openstack? (Работает CentOS).

Любая обратная связь очень ценится, так как мы застряли на этом этапе в течение нескольких недель. Извините за длинный пост, но я надеюсь, что необходимая информация находится здесь. Если не; не стесняйся:)

Обновить

Мне удалось исправить внутреннюю сеть между узлами, чтобы экземпляры могли обмениваться данными между физическими узлами.

- Changed the /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini:
[database]
connection = mysql://neutron:password@127.0.0.1:3306/ovs_neutron

[OVS]
tennant_network_type = gre
tunnel_id_ranges = 1:1000
integration_brige = br-int
tunnel_bridge = br-tun
local_ip = 10.0.20.1
enable_tunneling = True

- Restarted the service on controller
cd /etc/init.d/; for i in $( ls neutron-* ); do sudo service $i restart; done )
service openvswitch restart

Это было сделано на всех узлах и создало туннели GRE. Хотя поток не работал, поэтому мне нужно было использовать ovs-ofctl add-flow br-tun action=normal,

В настоящее время у меня возникает проблема с маршрутизацией внутренней подсети к Интернету, так что все экземпляры получают доступ к Интернету. Нужно ли использовать плавающие ips для подключения к интернету? Между br-int и br-ex или маршрутизаторами нет патчей, поэтому нужно ли это для маршрутизации трафика в интернет?

Могу ли я добавить маршрут по умолчанию с помощью ip netns exec ... ip add default gw via (ip of br-ex) или мне нужно добавить несколько новых интерфейсов?

2 ответа

Решение

Как ранее обновлялось, мне удалось настроить и запустить сеть, используя туннелирование GRE вместо сети nova. Новые сетевые швы будут хорошим решением, если у вас есть запасной физический сетевой интерфейс, но когда вы этого не сделаете, он работает не так хорошо.

Настройка GRE была выполнена следующим образом: - Изменен /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini:

[database]
connection = mysql://neutron:password@127.0.0.1:3306/ovs_neutron

[OVS]
tennant_network_type = gre
tunnel_id_ranges = 1:1000
integration_brige = br-int
tunnel_bridge = br-tun
local_ip = "internal ip"
enable_tunneling = True

- Restarted the service on controller
cd /etc/init.d/; for i in $( ls neutron-* ); do sudo service $i restart; done )
service openvswitch restart

Это были скопированы на каждый вычислительный узел. Однако при использовании туннелей GRE важная часть заключается в том, что при создании новой сети необходимо указать идентификатор сегментации. Если вы попытаетесь создать сеть через горизонт, она не будет работать.

keystone tenant-list
admin=$(keystone tenant-list | grep admin | awk -F' |' '{ print $2 }')
neutron net-create --tenant-id $admin network --provider:network_type gre --provider:segmentation_id 3
neutron subnet-create --tenant-id $admin network 192.168.0.0/24 --getaway 192.168.0.1

Вы также можете добавить внешнюю сеть с помощью следующих команд:

neutron net-create ext
neutron net-list
neutron subnet-create extnet --allocation-pool start=10.0.0.10,end=10.0.0.100 --gateway=10.0.0.1 --enable_dhcp=False 10.0.0.0/24

Затем мы можем создать новый маршрутизатор и подключить сеть к этому внешнему маршрутизатору. Это, конечно, только одно из многих решений.

intsubnet=$(neutron subnet-list | grep 192.168.0.0/24| awk -F' |' '{ print $2 }')
extnet=$(neutron net-list | grep ext | awk -F' |' '{ print $2 }')

neutron router-create ext-to-int --tenant-id $admin
router=$(neutron router-list | grep ext-to-int | awk -F' |' '{ print $2 }')

neutron router-interface-add $router $intsubnet
neutron router-gateway-set $router $extnet

Сначала у меня была очень низкая пропускная способность. Это было решено, когда я распространял новый MTU (1454) с DCHP (создайте файл конфигурации dhcp в / etc / neutron / и добавьте dhcp-option-force=26,1454 в файл. Обновить dnsmasq_config_file в /etc/neutron/dhcp_agent.ini

Это сработало для меня и было всем, что было нужно.

Садись и смотри это.

В нем описывается настройка простого многоузлового кластера, и я обнаружил, что это очень ясно. Последний бит о настройке NAT не будет применяться, потому что он запускает свой кластер на Virtualbox.

Существует связанное слайд-шоу, связанное в описании видео.

Другие вопросы по тегам