搜索

10.2. 网络隔离

download PDF

Red Hat OpenStack Platform (RHOSP)提供隔离的 overcloud 网络,以便可以隔离托管特定类型的网络流量。流量分配给特定的网络接口或绑定。使用绑定提供容错功能,如果使用正确的绑定协议,也可以提供负载共享。如果没有配置隔离的网络,RHOSP 会将 provisioning 网络用于所有服务。

网络配置由两个部分组成:应用于整个网络的参数,以及在部署的节点上配置网络接口的模板。

您可以为 RHOSP 部署创建以下隔离网络:

IPMI
用于节点电源管理的网络。此网络在安装 undercloud 前预定义。
置备
director 使用此网络进行部署和管理。provisioning 网络通常在专用接口上配置。初始部署使用带有 PXE 的 DHCP,然后网络将转换为静态 IP。默认情况下,必须在原生 VLAN 上进行 PXE 引导,但有些系统控制器允许从 VLAN 引导。默认情况下,计算和存储节点使用调配接口作为其 DNS、NTP 和系统维护的默认网关。
内部 API
内部 API 网络用于使用 API 通信、RPC 消息和数据库通信在 RHOSP 服务之间的通信。
tenant

Networking 服务(neutron)使用以下方法之一为每个租户(project)提供自己的网络:

  • VLAN 隔离,其中每个租户网络都是网络 VLAN。
  • 隧道(通过 VXLAN 或 GRE)。

网络流量在每个租户网络中隔离。每个租户网络都有一个与其关联的 IP 子网,网络命名空间意味着多个租户网络可以使用相同的地址范围,而不会导致冲突。

存储
用于块存储、NFS、iSCSI 等的网络。理想情况下,出于性能原因,这将隔离到完全独立的交换机光纤中。
存储管理
OpenStack Object Storage (swift)使用此网络在参与副本节点间同步数据对象。代理服务充当用户请求和底层存储层之间的中间接口。代理接收传入的请求,并找到所需的副本来检索请求的数据。使用 Ceph 后端的服务通过存储管理网络连接,因为它们不直接与 Ceph 交互,而是使用前端服务。请注意,RBD 驱动程序是一个例外,因为此流量直接连接到 Ceph。
外部
托管用于图形化系统管理的 OpenStack Dashboard (horizon)、OpenStack 服务的公共 API,并为目标用于实例的传入流量执行 SNAT。
浮动 IP
允许传入流量使用 1 到 1 个 IP 地址映射访问实例,以及实际分配给租户网络中实例的 IP 地址。如果在独立于外部的 VLAN 上托管浮动 IP,您可以将浮动 IP VLAN 中继到 Controller 节点,并在 overcloud 创建后通过网络服务(neutron)添加 VLAN。这提供了创建附加到多个网桥的多个浮动 IP 网络的方法。VLAN 被中继,但不会配置为接口。相反,网络服务(neutron)为每个浮动 IP 网络在所选网桥上创建一个具有 VLAN 分段 ID 的 OVS 端口。
注意

置备网络必须是原生 VLAN,其他网络可以被中继。

undercloud 可用作默认网关。但是,所有流量都位于 IP 伪装 NAT (网络地址转换)后面,无法从其余 RHOSP 网络访问。undercloud 也是 overcloud 默认路由的单一故障点。如果在 provisioning 网络上的路由器设备上配置了外部网关,undercloud neutron DHCP 服务器可以提供该服务。

10.2.1. 每个角色所需的网络

您可以使用 VLAN 创建租户网络,但您可以创建 VXLAN 隧道以用于特殊用途,而无需消耗租户 VLAN。VXLAN 功能可以在具有租户 VLAN 的部署中添加 VXLAN 功能,但无法在不严重中断的情况下将租户 VLAN 添加到部署的 overcloud 中。

下表详细介绍了附加到每个角色的隔离网络:

角色Network

Controller

provisioning, internal API, storage, storage management, tenant, external

Compute

provisioning, internal API, storage, tenant

Ceph Storage

置备、内部 API、存储、存储管理

Cinder 存储

置备、内部 API、存储、存储管理

Swift Storage

置备、内部 API、存储、存储管理

10.2.2. 网络定义文件配置选项

使用下表了解以 YAML 格式配置网络定义文件 network_data.yaml 的可用选项:

表 10.1. 网络数据 YAML 选项
Name选项类型默认值

name

网络的名称。

字符串

 

name_lower

可选:网络的小写名称。

字符串

name.lower()

dns_domain

可选:网络的 DNS 域名。

字符串

 

mtu

最大传输单元(MTU)。

number

1500

ipv6

可选:如果使用 IPv6,则设置为 true。

布尔值

false

vip

在网络上创建 VIP。

布尔值

false

subnets

包含网络的子网。

字典

 
表 10.2. 子网定义的网络数据 YAML 选项
Name选项类型 / Element示例

ip_subnet

IPv4 CIDR 块表示法。

字符串

192.0.5.0/24

ipv6_subnet

IPv6 CIDR 块表示法。

字符串

2001:db6:fd00:1000::/64

gateway_ip

可选:网关 IPv4 地址。

字符串

192.0.5.1

allocation_pools

为子网启动和结束地址。

列出/字典

start: 192.0.5.100

end: 192.0.5.150

ipv6_allocation_pools

为子网启动和结束地址。

列出/字典

start: 2001:db6:fd00:1000:100::1

end: 2001:db6:fd00:1000:150::1

Routes

需要通过网络网关路由的 IPv4 网络列表。

列出/字典

 

routes_ipv6

需要通过网络网关路由的 IPv6 网络列表。

列出/字典

 

vlan

可选:网络的 VLAN ID。

number

 
注意

routesroutes_ipv6 选项包含路由列表。每个路由都是一个带有 目的地下一步 键的字典条目。这两个选项都是字符串类型。

routes:
  - destination: 198.51.100.0/24
    nexthop: 192.0.5.1
  - destination: 203.0.113.0/24
    nexthost: 192.0.5.1
routes:
  - destination: 2001:db6:fd00:2000::/64
    nexthop: 2001:db6:fd00:1000:100::1
  - destination: 2001:db6:fd00:3000::/64
    nexthost: 2001:db6:fd00:1000:100::1
表 10.3. 网络虚拟 IP 的 YAML 数据选项
Name选项类型 / Element默认值

network

Neutron 网络名称。

字符串

 

ip_address

可选:预定义的固定 IP 地址。

字符串

 

子网

Neutron 子网名称。指定虚拟 IP neutron 端口的子网。使用路由网络进行部署需要。

字符串

 

dns_name

可选: FQDN (完全限定域名)。

列出/字典

overcloud

name

可选:虚拟 IP 名称。

字符串

$network_name_virtual_ip

10.2.3. 配置网络隔离

要启用和配置网络隔离,您必须将所需的元素添加到 network_data.yaml 配置文件中。

流程

  1. 创建网络 YAML 定义文件:

    $ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/default-network-isolation-ipv6.yaml /home/stack/templates/network_data.yaml
  2. 更新 network_data.yaml 文件中的选项,使其与 overcloud 网络环境的要求匹配:

    - name: Storage
      name_lower: storage
      vip: true
      ipv6: true
      mtu: 1500
      subnets:
        storage_subnet:
          ipv6_subnet: fd00:fd00:fd00:3000::/64
          ipv6_allocation_pools:
            - start: fd00:fd00:fd00:3000::10
              end: fd00:fd00:fd00:3000:ffff:ffff:ffff:fffe
          vlan: 30
    - name: StorageMgmt
      name_lower: storage_mgmt
      vip: true
      ipv6: true
      mtu: 1500
      subnets:
        storage_mgmt_subnet:
          ipv6_subnet: fd00:fd00:fd00:4000::/64
          ipv6_allocation_pools:
            - start: fd00:fd00:fd00:4000::10
              end: fd00:fd00:fd00:4000:ffff:ffff:ffff:fffe
          vlan: 40
    - name: InternalApi
      name_lower: internal_api
      vip: true
      ipv6: true
      mtu: 1500
      subnets:
        internal_api_subnet:
          ipv6_subnet: fd00:fd00:fd00:2000::/64
          ipv6_allocation_pools:
            - start: fd00:fd00:fd00:2000::10
              end: fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe
          vlan: 20
    - name: Tenant
      name_lower: tenant
      vip: false # Tenant networks do not use VIPs
      ipv6: true
      mtu: 1500
      subnets:
        tenant_subnet:
          ipv6_subnet: fd00:fd00:fd00:5000::/64
          ipv6_allocation_pools:
            - start: fd00:fd00:fd00:5000::10
              end: fd00:fd00:fd00:5000:ffff:ffff:ffff:fffe
          vlan: 50
    - name: External
      name_lower: external
      vip: true
      ipv6: true
      mtu: 1500
      subnets:
        external_subnet:
          ipv6_subnet: 2001:db8:fd00:1000::/64
          ipv6_allocation_pools:
            - start: 2001:db8:fd00:1000::10
              end: 2001:db8:fd00:1000:ffff:ffff:ffff:fffe
          gateway_ipv6: 2001:db8:fd00:1000::1
          vlan: 10
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.