安装和配置控制器节点

先决条件

在配置 OpenStack Networking (neutron) 服务之前,您必须创建数据库、服务凭证和 API 端点。

  1. 要创建数据库,请完成以下步骤

    • 使用数据库访问客户端以 root 用户身份连接到数据库服务器

      $ mysql -u root -p
      
    • 创建 neutron 数据库

      MariaDB [(none)]> CREATE DATABASE neutron;
      
    • 授予 neutron 数据库适当的访问权限,将 NEUTRON_DBPASS 替换为合适的密码

      MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
        IDENTIFIED BY 'NEUTRON_DBPASS';
      MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
        IDENTIFIED BY 'NEUTRON_DBPASS';
      
    • 退出数据库访问客户端。

  2. 激活 admin 凭证以访问仅管理员可用的 CLI 命令

    $ . admin-openrc
    
  3. 要创建服务凭证,请完成以下步骤

    • 创建 neutron 用户

      $ openstack user create --domain default --password-prompt neutron
      
      User Password:
      Repeat User Password:
      +---------------------+----------------------------------+
      | Field               | Value                            |
      +---------------------+----------------------------------+
      | domain_id           | default                          |
      | enabled             | True                             |
      | id                  | fdb0f541e28141719b6a43c8944bf1fb |
      | name                | neutron                          |
      | options             | {}                               |
      | password_expires_at | None                             |
      +---------------------+----------------------------------+
      
    • admin 角色添加到 neutron 用户

      $ openstack role add --project service --user neutron admin
      

      注意

      此命令不会产生任何输出。

    • 创建 neutron 服务实体

      $ openstack service create --name neutron \
        --description "OpenStack Networking" network
      
      +-------------+----------------------------------+
      | Field       | Value                            |
      +-------------+----------------------------------+
      | description | OpenStack Networking             |
      | enabled     | True                             |
      | id          | f71529314dab4a4d8eca427e701d209e |
      | name        | neutron                          |
      | type        | network                          |
      +-------------+----------------------------------+
      
  4. 创建 Networking 服务 API 端点

    $ openstack endpoint create --region RegionOne \
      network public http://controller:9696
    
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | 85d80a6d02fc4b7683f611d7fc1493a3 |
    | interface    | public                           |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | f71529314dab4a4d8eca427e701d209e |
    | service_name | neutron                          |
    | service_type | network                          |
    | url          | http://controller:9696           |
    +--------------+----------------------------------+
    
    $ openstack endpoint create --region RegionOne \
      network internal http://controller:9696
    
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | 09753b537ac74422a68d2d791cf3714f |
    | interface    | internal                         |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | f71529314dab4a4d8eca427e701d209e |
    | service_name | neutron                          |
    | service_type | network                          |
    | url          | http://controller:9696           |
    +--------------+----------------------------------+
    
    $ openstack endpoint create --region RegionOne \
      network admin http://controller:9696
    
    +--------------+----------------------------------+
    | Field        | Value                            |
    +--------------+----------------------------------+
    | enabled      | True                             |
    | id           | 1ee14289c9374dffb5db92a5c112fc4e |
    | interface    | admin                            |
    | region       | RegionOne                        |
    | region_id    | RegionOne                        |
    | service_id   | f71529314dab4a4d8eca427e701d209e |
    | service_name | neutron                          |
    | service_type | network                          |
    | url          | http://controller:9696           |
    +--------------+----------------------------------+
    

配置网络选项

您可以使用选项 1 和 2 表示的两种架构之一来部署 Networking 服务。

选项 1 部署最简单的架构,仅支持将实例连接到提供者(外部)网络。不支持自服务(私有)网络、路由器或浮动 IP 地址。只有 admin 或其他特权用户可以管理提供者网络。

选项 2 在选项 1 的基础上增加了支持将实例连接到自服务网络的第 3 层服务。 demo 或其他非特权用户可以管理自服务网络,包括提供自服务网络和提供者网络之间连接的路由器。 此外,浮动 IP 地址通过外部网络(如互联网)为使用自服务网络的实例提供连接。

自服务网络通常使用覆盖网络。 覆盖网络协议(如 VXLAN)包含额外的标头,会增加开销并减少有效载荷或用户数据可用的空间。 在不知道虚拟网络基础设施的情况下,实例尝试使用默认以太网最大传输单元 (MTU) 1500 字节发送数据包。 Networking 服务通过 DHCP 自动为实例提供正确的 MTU 值。 但是,某些云镜像不使用 DHCP 或忽略 DHCP MTU 选项,需要使用元数据或脚本进行配置。

注意

选项 2 还支持将实例连接到提供者网络。

选择以下网络选项之一来配置特定于它的服务。 之后,返回此处并继续到 配置元数据代理

配置元数据代理

元数据代理为实例提供配置信息,例如凭证。

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

    • [DEFAULT] 部分,配置元数据主机和共享密钥

      [DEFAULT]
      # ...
      nova_metadata_host = controller
      metadata_proxy_shared_secret = METADATA_SECRET
      

      METADATA_SECRET 替换为元数据代理的合适密钥。

配置 Compute 服务以使用 Networking 服务

注意

必须安装 Nova 计算服务才能完成此步骤。 有关更多详细信息,请参阅安装指南,该指南位于 文档网站安装指南 部分。

  • 编辑 /etc/nova/nova.conf 文件并执行以下操作

    • [neutron] 部分,配置访问参数,启用元数据代理并配置密钥

      [neutron]
      # ...
      auth_url = http://controller:5000
      auth_type = password
      project_domain_name = Default
      user_domain_name = Default
      region_name = RegionOne
      project_name = service
      username = neutron
      password = NEUTRON_PASS
      service_metadata_proxy = true
      metadata_proxy_shared_secret = METADATA_SECRET
      

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

      METADATA_SECRET 替换为您为元数据代理选择的密钥。

      有关完整的选项集,包括必要时覆盖服务目录端点 URL,请参阅 计算服务配置指南

完成安装

  1. Networking 服务初始化脚本期望一个符号链接 /etc/neutron/plugin.ini 指向 ML2 插件配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini。 如果此符号链接不存在,请使用以下命令创建它

    # ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
    
  2. 填充数据库

    # su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
      --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
    

    注意

    由于脚本需要完整的服务器和插件配置文件,因此 Networking 数据库填充发生在稍后。

  3. 重新启动 Compute API 服务

    # systemctl restart openstack-nova-api.service
    
  4. 启动 Networking 服务并配置它们在系统启动时启动。

    对于两种网络选项

    # systemctl enable neutron-server.service \
      neutron-openvswitch-agent.service neutron-dhcp-agent.service \
      neutron-metadata-agent.service
    # systemctl start neutron-server.service \
      neutron-openvswitch-agent.service neutron-dhcp-agent.service \
      neutron-metadata-agent.service
    

    对于网络选项 2,还启用并启动第 3 层服务

    # systemctl enable neutron-l3-agent.service
    # systemctl start neutron-l3-agent.service