1.3. 为裸机置备服务配置 Controller 节点


需要将以下步骤以 root 用户身份在 Red Hat OpenStack Platform 部署中的所有控制器节点上执行,但 Create the Bare Metal Provisioning Database 部分除外。您必须在一个控制器上执行该流程,因为它们共享数据库。

在 Controller 节点上,您需要确保裸机置备网络连接到 Open vSwitch,以便 OpenStack 部署可以访问它。

  1. 将网桥添加到 Open vSwitch 中:

    # ovs-vsctl add-br br-ironic
    # ovs-vsctl add-port br-ironic IRONIC_PROVISIONING_NIC
    # ovs-vsctl show

    此处 br-ironic 是网桥的名称,IRONIC_PROVISIONING_NIC 是连接到裸机置备网络的 NIC。

    使用 ovs-vsctl show 命令,您可以看到创建了一个具有关联端口的新网桥,但您会注意到 br-int 集成网桥缺少对新网桥的补丁。

  2. 要获取添加到集成网桥中的新网桥,您需要更新以下插件文件:

    1. 更新 ML2 配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini,如下所示:

      • 对于 type_drivers 参数,请确保在驱动程序中列出了 flat,例如 type_drivers = vxlan,vlan,flat,gre。这是以逗号分隔的列表。
      • 对于 mechanism_drivers 参数,请确保 openvswitch 选项列在驱动程序中,例如 mechanism_drivers =openvswitch。这是以逗号分隔的列表。
      • 对于 flat_networks 参数,创建一个名称来引用裸机置备网络,如 ironicnet。确保此名称列在列出的 flat_networks 中,如 flat_networks =datacentre,ironicnet。这是以逗号分隔的列表。
      • 如果您将 VLAN 用于裸机置备网络,请添加 network_vlan_ranges 参数,其格式为: ironicnet:VLAN_START:VLAN_END,如 network_vlan_ranges =datacentre:1:1000。这是以逗号分隔的列表。
      • enable_security_group 参数应该已经启用。但是,如果没有设置,请将值更改为 True,例如 enable_security_group = True
    2. /etc/neutron/plugins/ml2/openvswitch_agent.ini 文件中,找到 bridge_mappings 参数并更新如下:

      bridge_mappings =datacentre:br-ex,ironicnet:br-ironic

      此逗号分隔的键值对的值将裸机置备网络的名称映射到连接到网络的物理设备。

  3. 重启 neutron-openvswitch-agent.service,以查看 br-ironic 网桥作为集成网桥的一部分:

    # systemctl restart neutron-openvswitch-agent.service
  4. 重启 neutron-server.service,以便它检测到新连接:

    # systemctl restart neutron-server.service
    注意

    如果不执行此步骤,尝试在 OpenStack Networking 服务中创建裸机置备网络会失败,并显示请求的扁平网络不存在的消息。

1.3.1. 创建裸机置备数据库

创建裸机置备使用的数据库和数据库用户。此流程中的所有步骤都必须在数据库服务器上执行,同时以 root 用户身份登录。

创建裸机置备数据库

  1. 连接到数据库服务:

    # mysql -u root
  2. 创建 ironic 数据库:

    mysql> CREATE DATABASE ironic CHARACTER SET utf8;
  3. 创建 ironic 数据库用户,并授予用户 ironic 数据库的访问权限:

    mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'%' IDENTIFIED BY 'PASSWORD';
    mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'localhost' IDENTIFIED BY 'PASSWORD';

    PASSWORD 替换为将使用此用户身份与数据库服务器进行身份验证的安全密码。

  4. 清除数据库权限以确保它们立即生效:

    mysql> FLUSH PRIVILEGES;
  5. 退出 mysql 客户端:

    mysql> quit

1.3.2. 为裸机置备配置 OpenStack Compute 服务

为裸机置备驱动程序配置 Compute 服务。使用这个驱动程序可让 Compute 使用置备虚拟机的相同 API 置备物理机器。每个 openstack-nova-compute 节点只能指定一个驱动程序;具有裸机置备驱动程序的节点只能置备物理计算机。建议您分配一个 openstack-nova-compute 节点,以使用裸机置备驱动程序置备所有裸机节点。以下流程中的所有步骤都必须在所选计算节点上执行,同时以 root 用户身份登录。

为裸机置备配置 OpenStack Compute

  1. 将 Compute 设置为使用裸机置备调度程序主机管理器:

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT scheduler_host_manager nova.scheduler.ironic_host_manager.IronicHostManager
  2. 禁止计算调度程序跟踪实例中的更改:

    # openstack-config --set /etc/nova/nova.conf DEFAULT scheduler_tracks_instance_changes false
  3. 设置默认过滤器,如下所示:

    # openstack-config --set /etc/nova/nova.conf DEFAULT baremetal_scheduler_default_filters AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter
  4. 将 Compute 设置为使用默认裸机置备调度过滤器:

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT scheduler_use_baremetal_filters True
  5. 设置 Compute 以为裸机置备使用正确的身份验证详情:

    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_username ironic
    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_password PASSWORD
    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_url http://IDENTITY_IP:35357/v2.0
    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_tenant_name service
    # openstack-config --set /etc/nova/nova.conf \
       ironic api_endpoint http://IRONIC_API_IP:6385/v1

    替换以下值:

    • PASSWORD 替换为裸机置备用来与身份进行身份验证的密码。
    • IDENTITY_IP 替换为托管身份的服务器的 IP 地址或主机名。
    • IRONIC_API_IP 替换为托管裸机置备 API 服务的服务器的 IP 地址或主机名。
  6. ironic Compute 节点上设置 nova 数据库凭证:

    # openstack-config --set /etc/nova/nova.conf database connection "mysql+pymysql://nova:NOVA_DB_PASSWORD@DB_IP/nova"
  7. 重启 Compute 控制器节点上的 Compute 调度程序服务:

    # systemctl restart openstack-nova-scheduler.service
  8. 重启计算节点上的 compute 服务:

    # systemctl restart openstack-nova-compute.service

1.3.3. 将 OpenStack 网络 DHCP 代理配置为 Tag iPXE 请求

来自 iPXE 的 OpenStack 网络 DHCP 请求需要有一个名为 ipxe 的 DHCP 标签,以便 DHCP 服务器知道客户端需要执行 HTTP 操作来获取 boot.ipxe 脚本。您可以通过在 OpenStack 网络 DHCP 代理服务使用的 dnsmasq 配置文件中添加 dhcp-userclass 条目来完成此操作。

  1. 在 overcloud 控制器上,验证 DHCP 代理使用哪个 dnsmasq 文件:

    # grep ^dnsmasq_config_file /etc/neutron/dhcp_agent.ini
    
    dnsmasq_config_file =/etc/neutron/dnsmasq-neutron.conf
  2. 编辑此文件并在文件末尾添加以下行:

    # Create the "ipxe" tag if request comes from iPXE user class
    
    dhcp-userclass=set:ipxe,iPXE
  3. 保存文件并重启 OpenStack Networking DHCP Agent 服务:

    # systemctl restart neutron-dhcp-agent.service
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.