Как работает ассоциация OpenStack с плавающим IP-адресом?

Я создал установку DevStack примерно на 10 узлов, чтобы узнать больше о том, как OpenStack управляет сетью. Я создал несколько VMS и проверил их на каком-то хосте, например:

virsh # list
 Id    Name                           State
----------------------------------------------------
 2     instance-0000001b              running
 3     instance-0000001f              running
 4     instance-00000024              running
 5     instance-0000002c              running

Я связал плавающий IP-адрес с идентификатором экземпляра 2, я проверил его, просмотрев его идентификатор openstack и сопоставив с выводом virsh dumpxml 2. Он имеет следующий плавающий IP-адрес: 172.16.6.12 и локальный IP-адрес: 10.4.128.11.

Я вижу, что он использует vnet0:

   <interface type='bridge'>
      <mac address='fa:16:3e:a1:f8:65'/>
      <source bridge='br100'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <filterref filter='nova-instance-instance-0000001b-fa163ea1f865'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

Выполняя ifconfig vnet0, он не показывает IP-адрес:

vnet0     Link encap:Ethernet  HWaddr fe:16:3e:a1:f8:65  
          inet6 addr: fe80::fc16:3eff:fea1:f865/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:70 errors:0 dropped:0 overruns:0 frame:0
          TX packets:44216 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:7232 (7.2 KB)  TX bytes:29123311 (29.1 MB)

Когда я выполняю ip addr, я вижу, что IP-адрес определен в мосте, br100.

4: br100: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether d8:50:e6:c3:22:ee brd ff:ff:ff:ff:ff:ff
    inet 10.4.128.13/20 brd 10.4.143.255 scope global br100
       valid_lft forever preferred_lft forever
    inet 172.16.0.101/21 brd 172.16.7.255 scope global br100
       valid_lft forever preferred_lft forever
    inet 172.16.6.12/32 scope global br100
       valid_lft forever preferred_lft forever
    inet 172.16.6.19/32 scope global br100
       valid_lft forever preferred_lft forever
    inet6 fe80::80b6:99ff:fef7:dc16/64 scope link 
       valid_lft forever preferred_lft forever
5: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br100 state UNKNOWN group default qlen 500
    link/ether fe:16:3e:a1:f8:65 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc16:3eff:fea1:f865/64 scope link 
       valid_lft forever preferred_lft forever
  • 172.16.0.101/21 : IP-адрес хоста
  • 172.16.6.12/32: плавающий IP-адрес виртуальной машины

Однако где ассоциация, что vnet0 -> 172.16.6.12 (плавающий IP)? Почему трафик приходящий на 172.16.6.19 не уходит на 172.16.6.12,

Я искал правила iptables, но там ничего не указывало на vnet0 или плавающий ip. Как это делается? Я вижу, что они соединены мостом с brctl, но связи IP-MAC я не вижу. Его нет даже в arp-таблицах. Я просмотрел iptables или порты прослушивания, если какая-либо переадресация выполняется в пользовательском пространстве, но это не так.

bridge name bridge id       STP enabled interfaces
br100       8000.d850e6c322ee   no      eth0
                                        vnet0
                                        vnet1
                                        vnet2
                                        vnet3

person Mustafa    schedule 12.01.2016    source источник
comment
Это использование nova-network? нейтрон? Если нейтрон, то в какой конфигурации? какие-либо специальные драйверы / оборудование в игре? этот материал ВЫСОКО настраивается в openstack.   -  person Matt Joyce    schedule 13.01.2016
comment
Ну, я думаю, devstack использует nova-network   -  person Mustafa    schedule 24.01.2016


Ответы (1)


Хорошо, я нашел это. Я забыл посмотреть правила NAT iptables, которые они используют для переадресации заданных плавающих ip-адресов на эти устройства veth.

person Mustafa    schedule 24.01.2016