第 7 章 隔离网络
director 提供了配置隔离 Overcloud 网络的方法。这意味着 Overcloud 环境将网络流量类型划分为不同的网络,后者将网络流量分配到特定的网络接口或绑定。配置隔离的网络后,director 将 OpenStack 服务配置为使用隔离的网络。如果没有配置隔离网络,则所有服务都在 Provisioning 网络上运行。
这个示例为所有服务使用单独的网络:
- 网络 1 - 置备
- 网络 2 - 内部 API
- 网络 3 - 租户网络
- 网络 4 - 存储
- 网络 5 - 存储管理
- 网络 6 - 管理
- 网络 7 - 外部浮动 IP ( Overcloud 创建后映射)
在本例中,每个 Overcloud 节点使用绑定中的两个网络接口来提供 tagged VLAN 中的网络。以下网络分配适用于此绑定:
| 网络类型 | subnet | VLAN |
| 内部 API | 172.16.0.0/24 | 201 |
| tenant | 172.17.0.0/24 | 202 |
| 存储 | 172.18.0.0/24 | 203 |
| 存储管理 | 172.19.0.0/24 | 204 |
| 管理 | 172.20.0.0/24 | 205 |
| 外部/浮动 IP | 10.1.1.0/24 | 100 |
7.1. 创建自定义模板 复制链接链接已复制到粘贴板!
Overcloud 网络配置需要一组网络接口模板。您可以自定义这些模板,以针对每个角色配置节点接口。这些模板是 YAML 格式的标准 Heat 模板(请参阅 第 2.1 节 “Heat 模板”)。director 包含一组示例模板,供您启动:
-
/usr/share/openstack-tripleo-heat-templates/network/config/single-nic-vlans- 包含每个角色上带有 VLAN 配置的单个 NIC 的模板。 -
/usr/share/openstack-tripleo-heat-templates/network/bond-with-vlans- 包含每个角色上绑定 NIC 配置的模板的目录。 -
/usr/share/openstack-tripleo-heat-templates/network/config/multiple-nics- 包含每个角色为多个 NIC 配置的模板的目录。 -
/usr/share/openstack-tripleo-heat-templates/network/config/single-nic-linux-bridge-vlans- 包含每个角色上带有 VLAN 配置的单一 NIC 的模板,并使用 Linux 网桥而不是 Open vSwitch 网桥。
这些示例仅包含默认角色的模板。要为自定义角色定义网络接口配置,请将这些模板用作基础。
在本例中,使用默认绑定的 NIC 示例配置作为基础。复制位于 /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans 的版本。
cp -r /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans ~/templates/nic-configs
$ cp -r /usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans ~/templates/nic-configs
这会创建一组本地的 heat 模板,该模板为每个角色定义绑定的网络接口配置。每个模板都包含标准 参数、资源 和 output 部分。在本例中,您将只编辑 resources 部分。每个 resources 部分都以以下方式开始:
这会为 os-apply-config 命令和 os-net-config 子命令创建一个请求,以配置节点的网络属性。network_config 部分包含基于类型的顺序排列的自定义接口配置,其中包括:
- interface
定义单个网络接口。配置使用实际接口名称("eth0", "eth1", "enp0s25")或一组数字接口("nic1", "nic2", "nic3")来定义各个接口。
- type: interface name: nic2- type: interface name: nic2Copy to Clipboard Copied! Toggle word wrap Toggle overflow - vlan
一个 VLAN。使用从
parameters部分传递的 VLAN ID 和子网。- type: vlan vlan_id: {get_param: ExternalNetworkVlanID} addresses: - ip_netmask: {get_param: ExternalIpSubnet}- type: vlan vlan_id: {get_param: ExternalNetworkVlanID} addresses: - ip_netmask: {get_param: ExternalIpSubnet}Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ovs_bond
在 Open vSwitch 中定义绑定,将两个或多个
接口加入一起。这有助于冗余并增加带宽。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ovs_bridge
在 Open vSwitch 中定义一个网桥,它将多个接口
ovs_bond和vlan对象连接在一起。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - linux_bond
定义一个将两个或多个
接口加入在一起的 Linux 绑定。这有助于冗余并增加带宽。确保在bonding_options参数中包含基于内核的绑定选项。有关 Linux 绑定选项的更多信息,请参阅 4.5.1。bonding Module Directives (在 Red Hat Enterprise Linux 7 网络指南中)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - linux_bridge
定义一个 Linux 网桥,它将多个接口 ,
linux_bond和vlan对象连接在一起。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
有关这些项目的完整参数列表,请参阅 附录 C, 网络接口参数。
在本例中,您使用默认的绑定接口配置。例如,/home/stack/templates/nic-configs/controller.yaml 模板使用以下 network_config :
网络接口 Heat 模板中的管理网络部分已注释掉。取消注释本节以启用管理网络。
此模板定义网桥(通常是名为 br-ex的外部网桥),并从两个数字的接口创建一个名为 bond1 的绑定接口: nic2 和 nic3。该网桥还包含一些标记的 VLAN 设备,其使用 bond1 作为父设备。该模板还包括连接到 director 的接口(nic1)。
有关网络接口模板的更多示例,请参阅 附录 B, 网络接口模板示例。
请注意,其中很多参数使用 get_param 函数。您可以在您为网络创建的环境文件中定义。
未使用的接口可能会导致不必要的默认路由和网络循环。例如,模板可能包含一个网络接口(nic4),它不使用 OpenStack 服务的任何 IP 分配,但仍使用 DHCP 和/或默认路由。为了避免网络冲突,请从 ovs_bridge 设备中删除所有未使用的接口,并禁用 DHCP 和默认路由设置:
- type: interface name: nic4 use_dhcp: false defroute: false
- type: interface
name: nic4
use_dhcp: false
defroute: false