У меня есть распределенная установка openstack - один контроллер и три вычислительных экземпляра. «Сетевой узел» совпадает с контроллером. У меня есть плоская внешняя сеть и сеть провайдера VLAN, которой был присвоен тег 775.
У меня есть маршрутизатор, соединяющий сеть VLAN с внешней сетью. Вся сантехника работает как положено. Я могу войти на сервер openstack и пинговать снаружи. Сети изолированы, как и ожидалось и т. Д.
На узле контроллера / сети я вижу пространство имен qrouter, в котором openstack создан для маршрутизатора, а другой - для DHCP.
Я создаю сервер в общедоступной сети с поддержкой VLAN. Мне нужно добраться до сервера с контроллера. Я попробовал несколько хаков, создав пару веток и протолкнув один конец в пространство имен qrouter, но это не сработало.
Я наконец попробовал следующий уродливый хак (который сработал):
ovs-vsctl show
# Look for the mapping that openstack is using
ovs-ofctl dump-flows br-int -O openflow13 | grep 775
# discover that tag 6 is used by openstack on my integration bridge.
# corresponding to vlan 775
# Create a veth pair so the root namespace can access the bridge.
ip link ip link add veth0 type veth peer name veth1
# put one end on the bridge.
# assign a tag of 6 so it can access the server.
ovs-vsctl add-port br-int veth1 tag=6
# Finally I can assign an address to veth0 and ping a host on
# the openstack managed vlan network
ifconfig veth0 10.0.40.39
После выполнения описанных выше шагов я могу пропинговать сервер в моей сети, управляемой openstack, с моего контроллера.
Мне пришлось выполнить несколько шагов вручную, чтобы выяснить внутренний тег, который openstack использовал на мосту интеграции. Я сделал это, сбросив
правила потока на мосту интеграции, чтобы увидеть, как управляли тегами. Затем я сделал шаги, описанные выше. Я думаю, что должен быть набор команд openstack (нейтрон), который я могу использовать вместо того, чтобы проходить через это.
В поисках лучшего решения. Мне не нужно смотреть на внутренние теги, выяснять сопоставления и т. Д. Существует ли базовый набор команд командной строки открытого стека для достижения этого?
Спасибо
Ранг