网络选项 2:自服务网络

控制器节点上安装和配置网络组件。

安装组件

# apt install neutron-server neutron-plugin-ml2 \
  neutron-openvswitch-agent neutron-l3-agent neutron-dhcp-agent \
  neutron-metadata-agent

配置服务器组件

  • 编辑 /etc/neutron/neutron.conf 文件并完成以下操作

    • [database] 部分,配置数据库访问

      [database]
      # ...
      connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
      

      NEUTRON_DBPASS 替换为您为数据库选择的密码。

      注意

      注释掉或删除 [database] 部分中的任何其他 connection 选项。

    • [DEFAULT] 部分,启用模块化第二层 (ML2) 插件和路由器服务

      [DEFAULT]
      # ...
      core_plugin = ml2
      service_plugins = router
      
    • [DEFAULT] 部分中,配置 RabbitMQ 消息队列访问

      [DEFAULT]
      # ...
      transport_url = rabbit://openstack:RABBIT_PASS@controller
      

      RABBIT_PASS 替换为您在 RabbitMQ 中为 openstack 帐户选择的密码。

    • [DEFAULT][keystone_authtoken] 部分中,配置身份服务访问

      [DEFAULT]
      # ...
      auth_strategy = keystone
      
      [keystone_authtoken]
      # ...
      www_authenticate_uri = http://controller:5000
      auth_url = http://controller:5000
      memcached_servers = controller:11211
      auth_type = password
      project_domain_name = Default
      user_domain_name = Default
      project_name = service
      username = neutron
      password = NEUTRON_PASS
      

      NEUTRON_PASS 替换为您在 Identity 服务中为 neutron 用户选择的密码。

      注意

      注释掉或删除 [keystone_authtoken] 部分中的任何其他选项。

    • [DEFAULT][nova] 部分,配置网络以通知计算组件网络拓扑更改

      [DEFAULT]
      # ...
      notify_nova_on_port_status_changes = true
      notify_nova_on_port_data_changes = true
      
      [nova]
      # ...
      auth_url = http://controller:5000
      auth_type = password
      project_domain_name = Default
      user_domain_name = Default
      region_name = RegionOne
      project_name = service
      username = nova
      password = NOVA_PASS
      

      NOVA_PASS 替换为您在 Identity 服务中为 nova 用户选择的密码。

  • [oslo_concurrency] 部分中,配置锁路径

    [oslo_concurrency]
    # ...
    lock_path = /var/lib/neutron/tmp
    

配置模块化第二层 (ML2) 插件

ML2 插件使用 Linux 网桥机制为实例构建第二层(桥接和交换)虚拟网络基础设施。

  • 编辑 /etc/neutron/plugins/ml2/ml2_conf.ini 文件并完成以下操作

    • [ml2] 部分,启用 flat、VLAN 和 VXLAN 网络

      [ml2]
      # ...
      type_drivers = flat,vlan,vxlan
      
    • [ml2] 部分,启用 VXLAN 自助服务网络

      [ml2]
      # ...
      tenant_network_types = vxlan
      
    • [ml2] 部分,启用 Linux 网桥和第二层填充机制

      [ml2]
      # ...
      mechanism_drivers = openvswitch,l2population
      

      警告

      配置 ML2 插件后,删除 type_drivers 选项中的值可能导致数据库不一致。

      注意

      Linux 网桥代理仅支持 VXLAN 覆盖网络。

    • [ml2] 部分,启用端口安全扩展驱动程序

      [ml2]
      # ...
      extension_drivers = port_security
      
    • [ml2_type_flat] 部分,将提供商虚拟网络配置为 flat 网络

      [ml2_type_flat]
      # ...
      flat_networks = provider
      
    • [ml2_type_vxlan] 部分,配置自助服务网络的 VXLAN 网络标识符范围

      [ml2_type_vxlan]
      # ...
      vni_ranges = 1:1000
      

配置 Open vSwitch 代理

Linux 网桥代理为实例构建第二层(桥接和交换)虚拟网络基础设施并处理安全组。

  • 编辑 /etc/neutron/plugins/ml2/openvswitch_agent.ini 文件并完成以下操作

    • [ovs] 部分,将提供商虚拟网络映射到提供商物理网桥,并配置处理叠加网络的物理网络接口的 IP 地址

      [ovs]
      bridge_mappings = provider:PROVIDER_BRIDGE_NAME
      local_ip = OVERLAY_INTERFACE_IP_ADDRESS
      

      PROVIDER_BRIDGE_NAME 替换为连接到底层提供商物理网络的网桥的名称。有关更多信息,请参阅 主机网络Open vSwitch:提供商网络

      同时,将 OVERLAY_INTERFACE_IP_ADDRESS 替换为处理覆盖网络的底层物理网络接口的 IP 地址。示例架构使用管理接口将流量隧道传输到其他节点。因此,将 OVERLAY_INTERFACE_IP_ADDRESS 替换为控制器节点的管理 IP 地址。有关更多信息,请参阅 主机网络

    • 确保 PROVIDER_BRIDGE_NAME 外部网桥已创建,并且 PROVIDER_INTERFACE_NAME 已添加到该网桥

      # ovs-vsctl add-br $PROVIDER_BRIDGE_NAME
      # ovs-vsctl add-port $PROVIDER_BRIDGE_NAME $PROVIDER_INTERFACE_NAME
      
    • [agent] 部分,启用 VXLAN 叠加网络并启用第二层填充

      [agent]
      tunnel_types = vxlan
      l2_population = true
      
    • [securitygroup] 部分,启用安全组并配置 Open vSwitch 本机或混合 iptables 防火墙驱动程序

      [securitygroup]
      # ...
      enable_security_group = true
      firewall_driver = openvswitch
      #firewall_driver = iptables_hybrid
      
    • 如果使用混合 iptables 防火墙驱动程序,请确保您的 Linux 操作系统内核通过验证以下所有 sysctl 值设置为 1 来支持网络桥接过滤器

      net.bridge.bridge-nf-call-iptables
      net.bridge.bridge-nf-call-ip6tables
      

      要启用网络桥接支持,通常需要加载 br_netfilter 内核模块。有关启用此模块的更多详细信息,请查阅您的操作系统文档。

配置第三层代理

第三层 (L3) 代理为自助服务虚拟网络提供路由和 NAT 服务。

  • 如果需要额外的自定义,请编辑 /etc/neutron/l3_agent.ini 文件。

配置 DHCP 代理

DHCP 代理为虚拟网络提供 DHCP 服务。

  • 编辑 /etc/neutron/dhcp_agent.ini 文件并完成以下操作

    • [DEFAULT] 部分,配置 Dnsmasq DHCP 驱动程序,并启用隔离元数据,以便提供网络上的实例可以访问元数据

      [DEFAULT]
      # ...
      dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
      enable_isolated_metadata = true
      

返回到网络控制器节点配置