Как работает OpenStack Floating IP?

Я создал ~10 узлов установки DevStack, чтобы узнать больше о том, как 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

1 ответ

Решение

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

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