[VIP] openstack環境配置VIP


描述

當你在openstack平台創建一個network,在這個network上創建兩台虛擬機,當這兩台虛擬機還需要VIP時,你從這個network分配一個地址做為VIP,配置到虛擬機上,你會發現這個VIP並不能被訪問。因為在neutron中,從 VM 端口發送/接收的數據包必須具有該 VM 端口的固定 IP/MAC 地址,所以虛擬機的端口在創建時就會把IP/MAC進行了綁定。有這條規則存在,所以VIP 是無法與外部通信,但可以通過如下兩個方法來解決。

  • 方法1(推薦): 為需要使用VIP的虛擬機端口配置allwed_address_pairs
  • 方法2: 為需要使用VIP的虛擬機端口disable_secruity

openstack version: Train

方法1

allwed_address_pairs: 允許一個端口在該端口上添加額外的 IP/MAC 地址對,以允許與這些指定值匹配的流量, 使額外的IP能與外部通信。

安全組放通VRRP協議(可選)

keeplived場景下,虛擬機所在安全組放通VRRP協議,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協議,可以認為是實現高可用的協議,即將N台提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。

# 找到虛擬機所在安全組的id(3a02e44f-d5bb-40de-99b5-f9467e456bc7)
$ openstack security group rule create 3a02e44f-d5bb-40de-99b5-f9467e456bc7 --protocol vrrp --ingress --remote-ip 0.0.0.0/0
$ openstack security group rule create 3a02e44f-d5bb-40de-99b5-f9467e456bc7 --protocol vrrp --egress --remote-ip 0.0.0.0/0

配置allwed_address_pairs
# 虛擬機端口和VIP都是使用這個network分配的IP
$ openstack network list
  test_network  a75d1c08-73d7-476e-be3a-37d4532672eb


# 從test_network創建一個VIP地址為:192.168.2.253 , 名字為:test-vip
$ neutron port-create test_network --allowed-address-pairs type=dict list=true ip_address=192.168.2.253 --name test-vip
+-----------------------+--------------------------------------------------------------------------------------+
| Field                 | Value                                                                                |
+-----------------------+--------------------------------------------------------------------------------------+
| admin_state_up        | True                                                                                 |
| allowed_address_pairs | {"ip_address": "192.168.2.253", "mac_address": "fa:16:3e:ab:0f:ad"}                  |
| binding:host_id       |                                                                                      |
| binding:profile       | {}                                                                                   |
| binding:vif_details   | {}                                                                                   |
| binding:vif_type      | unbound                                                                              |
| binding:vnic_type     | normal                                                                               |
| created_at            | 2022-02-26T13:57:15Z                                                                 |
| description           |                                                                                      |
| device_id             |                                                                                      |
| device_owner          |                                                                                      |
| extra_dhcp_opts       |                                                                                      |
| fixed_ips             | {"subnet_id": "4a7237fc-10a8-4a44-b711-57dfbcee569a", "ip_address": "192.168.2.237"} |
| id                    | 490ba237-649d-4a52-a923-fbad0c00702a                                                 |
| mac_address           | fa:16:3e:ab:0f:ad                                                                    |
| name                  | test-vip                                                                             |
| network_id            | a75d1c08-73d7-476e-be3a-37d4532672eb                                                 |
| port_security_enabled | True                                                                                 |
| project_id            | a3f435fc08854b828b3346aa1581d39f                                                     |
| revision_number       | 1                                                                                    |
| security_groups       | 3a02e44f-d5bb-40de-99b5-f9467e456bc7                                                 |
| status                | DOWN                                                                                 |
| tags                  |                                                                                      |
| tenant_id             | a3f435fc08854b828b3346aa1581d39f                                                     |
| updated_at            | 2022-02-26T13:57:15Z                                                                 |
+-----------------------+--------------------------------------------------------------------------------------+

# 為需要使用VIP的虛擬機端口添加`allwed_address_pairs`屬性。
# vm1 port_id=1bd248cb-a543-46a4-b4ae-8ec9f93ce713
# vm2 port_id=c454a763-2bed-4164-a725-e2ded705c942
$ neutron port-update 1bd248cb-a543-46a4-b4ae-8ec9f93ce713 --allowed-address-pairs type=dict list=true ip_address=192.168.2.253
$ neutron port-update c454a763-2bed-4164-a725-e2ded705c942--allowed-address-pairs type=dict list=true ip_address=192.168.2.253

# 查看端口下是否具有allowed_address_pairs屬性。
$ openstack port show 1bd248cb-a543-46a4-b4ae-8ec9f93ce713 | grep allowed_address_pairs
  | allowed_address_pairs   | ip_address='192.168.2.253', mac_address='fa:16:3e:d1:0d:1d'
$ openstack port show c454a763-2bed-4164-a725-e2ded705c942 | grep allowed_address_pairs
  | allowed_address_pairs   | ip_address='192.168.2.253', mac_address='fa:16:3e:d1:0d:1d'

# 從vm端口刪除allwed_address_pairss屬性,也就是刪除VIP。
$ openstack port unset 1bd248cb-a543-46a4-b4ae-8ec9f93ce713 --allowed-address ip-address='192.168.2.253',mac-address='fa:16:3e:d1:0d:1d'

方法2

刪除port安全組

安全組: 連接到虛擬機實例的端口的所有傳入和傳出流量都被阻止(除非已應用“安全組相應規則”)

# 從test_network創建一個VIP地址為:192.168.2.253 , 名字為:test-vip
$ neutron port-create test_network --allowed-address-pairs type=dict list=true ip_address=192.168.2.253 --name test-vip

# 把VIP的端口安全組關閉掉(找到VIP端口的port id)
$ openstack port set --disable-port-security --no-security-group 490ba237-649d-4a52-a923-fbad0c00702a 
# 把需要使用VIP的虛擬機端口安全組關閉掉(找到VM端口的port id)
$ openstack port set --disable-port-security --no-security-group  1bd248cb-a543-46a4-b4ae-8ec9f93ce713
$ openstack port set --disable-port-security --no-security-group   c454a763-2bed-4164-a725-e2ded705c942


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM