1. 程式人生 > >OpenStack neutron 環境雲主機使用keepalived vip + 給vip綁定浮動IP 步驟及註意事項

OpenStack neutron 環境雲主機使用keepalived vip + 給vip綁定浮動IP 步驟及註意事項

cut associate http 其它 配置 ups work all net

在openstack環境創建的多臺雲主機配置keepalived作主備,默認情況下無法生效,直接對雲主機一張網卡配置兩個IP進行測試也是同樣結果,因為:

技術分享

可以看到,port所在的宿主機上iptables 對 MAC地址和IP進行了限制。所以需要如下操作:

pre. 確認雲主機網卡port_id

nova interface-list [vm_id]

1. 確認 ml2 配置中

arp_responder = False

或 未配置(因為默認為false);

技術分享

2. 對需要配置vip的port,可以直接 disable 安全組 (不推薦):

neutron port-update --no-security-groups
--port-security-enabled=False [port_id]

eg.

 neutron port-update --no-security-groups --port-security-enabled=False aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa

也可以使用 allowed-address-pair功能 (推薦) :

neutron port-update --allowed-address-pair ip_address=[CIDR] [port_id]

,如 :

eg.

neutron port-update --allowed-address-pair ip_address=10.1
.100.100 aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa

技術分享

 neutron port-update --allowed-address-pair ip_address=10.1.100.100/31 aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa

技術分享

到這一步為止,雲主機內配置上面的 vip 就已經可以使用了。

3. 為了避免後續創建的雲資產占用vip ,創建閑置的port,占用掉vip地址:

neutron port-create --fixed-ip ip_address=[IP_ADDR] [network_id]
neutron port-create --fixed-ip ip_address=10.1
.100.100 bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb

此時這個port 只是一個DB裏的一個記錄,不會在宿主機上創建tap設備或增加iptables chain,不用擔心額外的資源損耗。它的用途僅僅是占用IP地址以免被其它資源使用而已。

如下圖,dhcp不會再分配 10.1.100.100 這個ip

技術分享

接下來開始將浮動IP綁定給vip,平時我們在dashboard處是給雲主機綁定浮動IP,常用的CLI /api 是

nova  floating-ip-associate <server>  <address>  

,可這樣浮動IP綁定的是雲主機網卡原始IP (10.1.100.7),不是vip (10.1.100.100)

技術分享

技術分享

,所以我們得使用neutron 的相關接口。

4. 創建浮動IP

neutron floatingip-create [floating_net_id]
neutron floatingip-create cccccccc-cccc-cccc-cccc-cccccccccccc

5. 綁定

neutron floatingip-associate [floatingip_id] [port_id]

先將剛才通過nova CLI 綁定的解綁

技術分享

開始綁定

neutron floatingip-associate cccccccc-cccc-cccc-cccc-cccccccccccc aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa

再去l3 節點的net ns裏可以看到

技術分享

已經綁定的是 vip (10.1.100.100) 了

OpenStack neutron 環境雲主機使用keepalived vip + 給vip綁定浮動IP 步驟及註意事項