从 VMware Integrated OpenStack 4.0 开始,可以为提供商和租户配置动态路由。
必须先创建一个 VXLAN 外部网络,稍后使用该外部网络作为网关 Edge 的内部接口。
前提条件
- 必须使用 VMware NSX for vSphere 作为虚拟网络提供商。
过程
- 为未来租户子网和外部 VXLAN 网络子网创建 IPv4 地址范围。
neutron address-scope-create scope_name 4
- 创建提供商子网池。
将 scope_name 替换为先前创建的地址范围的名称。
neutron subnetpool-create --pool-prefix 10.10.10.0/24 --default-prefixlen 24 provider_pool_name --address-scope scope_name
- 为租户网络创建自助服务子网池。
将 scope_name 替换为先前创建的地址范围的名称。
neutron subnetpool-create --pool-prefix 1.1.1.0/24 --default-prefixlen 26 selfservice --address-scope scope_name --shared
- 创建外部 VXLAN 网络。
以下命令将在 VMware NSX for vSphere 中创建新的逻辑交换机。
neutron net-create --provider:network_type vxlan --router:external external_VXLAN_network_name
- 创建外部 VXLAN 子网。
将 provider_pool_name 替换为先前创建的提供商池的名称。将 external_VXLAN_network_name 替换为先前创建的网络的名称。
neutron subnet-create --no-gateway --name ext_vxlan_subnet_name --disable-dhcp --allocation-pool start=start_IP,end=end_IP --subnetpool provider_pool_nameexternal_VXLAN_network_nameNETWORK[CIDR]
- 使用
nsxadmin
实用程序创建 BGP 对等互连网关 Edge。网关 Edge 使用管理网络作为外部接口,使用创建的外部网络作为内部接口。nsxadmin -r bgp-gw-edge -o create --property name=name_GW-EDGE1 --property local-as=65001 --property external-iface=morefid:mgtnetwork --property internal-iface=morefid:internal_interface_network_GW-EDGE1 nsxadmin -r bgp-gw-edge -o create --property name=name_GW-EDGE2 --property local-as=65001 --property external-iface=morefid:mgtnetwork --property internal-iface=morefid:internal_interface_network_GW-EDGE2
- 使用 BGP 播发更新 NSX Edge。
使用在上一步创建的 Edge ID。
nsxadmin -r routing-redistribution-rule -o create --property gw-edge-ids=edge-ID_GW-EDGE1,edge-ID_GW-EDGE2 --property learner-protocol=bgp --property learn-from=connected,bgp --property action=permit
- 使用 BGP 邻居更新 NSX Edge。
使用先前创建的 Edge ID。
nsxadmin -r bgp-neighbour -o create --property gw-edge-ids=edge-ID_GW-EDGE1,edge-ID_GW-EDGE2 --property ip-address=IP_physical_router1 --property remote-as=65000 --property password=BGP_password nsxadmin -r bgp-neighbour -o create --property gw-edge-ids=edge-ID_GW-EDGE1,edge-ID_GW-EDGE2 --property ip-address=IP_physical_router2 --property remote-as=65000 --property password=BGP_password
- 更新物理路由器。
- 将
AS
值设置为 65000。 - 将 BGP 邻居设置为 name_GW EDGE1 和 name_GW-EDGE2。
- 设置为将自身播发为动态网关。
- 将
- 创建并配置 BGP 发言方。
- 创建 BGP 发言方。
neutron bgp-speaker-create --local-as local_as_valuename_bgp_speaker
- 创建 BGP 对等方。
neutron bgp-peer-create --peer-ip internal_interface_network_GW-EDGE1 --remote-as 65001 --password BGP_password --auth-type md5 name_GW-EDGE1 --esg-id edge-ID_GW-EDGE1 neutron bgp-peer-create --peer-ip internal_interface_network_GW-EDGE2 --remote-as 65001 --password BGP_password --auth-type md5 name_GW-EDGE2 --esg-id edge-ID_GW-EDGE2
- 将 BGP 对等方添加到 BGP 发言方。
neutron bgp-speaker-peer-add name_bgp_speakername_GW-EDGE1 neutron bgp-speaker-peer-add name_bgp_speakername_GW-EDGE2
- 将发言方与 VXLAN 网络相关联。
neutron bgp-speaker-network-add name_bgp_speakerexternal_VXLAN_network_name
- 创建 BGP 发言方。
- (可选) 为租户创建 BGP 路由器。
租户用户可以创建自己的 BGP 路由器。租户用户必须是
admin
,才能配置不带 SNAT 的路由器。- 为每个租户创建两个逻辑交换机并为所有租户创建子网池。
neutron net-create name_Tenant1_LS1 neutron subnet-create --name name_network_Tenant1-LS1name_Tenant1_LS1 --subnetpool selfservice neutron net-create name_Tenant1_LS2 neutron subnet-create --name name_network_Tenant1-LS2name_Tenant1_LS2 --subnetpool selfservice
- 使用 BGP 配置创建一个路由器。
BGP 适用于所有外形规格的 OpenStack 逻辑路由器:
shared
、distributed
和exclusive
。neutron router-create name_Tenant1-LR --router_type=exclusive neutron router-interface-add name_Tenant1-LRname_network_Tenant1-LS1 neutron router-interface-add name_Tenant1-LRname_network_Tenant1-LS2 neutron router-gateway-set name_Tenant1-LR --disable-snat external_VXLAN_network_name
- 为每个租户创建两个逻辑交换机并为所有租户创建子网池。