1.4. 为裸机置备配置 Compute 节点
以下说明 只适用于 还运行裸机置备服务的 Compute 节点。您需要以 root 用户身份在 Compute 节点上执行这些步骤。
在 Compute 节点上,您有裸机置备 NIC,如 eth6。此流程的目标如下:
-
要将裸机 Provisioning NIC (
本例中为 eth6)连接到 Open vSwitch。 - 要在这个连接上分配 IP 地址,因为裸机服务器需要在 iPXE 过程中从裸机节点中拉取引导镜像。
将 eth6 连接到 Open vSwitch
与 第 1.3 节 “为裸机置备服务配置 Controller 节点” 中的 Controller 节点一样,在运行裸机置备服务的 Compute 节点上创建一个桥接:
# ovs-vsctl add-br br-ironic # ovs-vsctl add-port br-ironic IRONIC_PROVISIONING_NIC在这里,
br-ironic是网桥的名称,IRONIC_PROVISIONING NIC是连接到裸机置备网络的 NIC,如eth6。注意此和 第 1.3 节 “为裸机置备服务配置 Controller 节点” 之间的唯一区别在于您不会在 Compute 节点上重启 OpenStack 网络服务。
这会将网桥和端口添加到 Open vSwitch,您可以使用
ovs-vsctl show命令来验证。但是,它不会将它连接到集成网桥(br-int),供 OpenStack 使用。要创建连接,您需要更新 OpenStack 网络插件文件,如下所示:
更新 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。
-
对于
在
/etc/neutron/plugins/ml2/openvswitch_agent.ini文件中,找到bridge_mappings参数并更新如下:bridge_mappings =datacentre:br-ex,ironicnet:br-ironic此逗号分隔的键值对的值将裸机置备网络的名称映射到连接到网络的物理设备。
重启 OpenStack 网络 Open vSwitch 代理服务:
# systemctl restart neutron-openvswitch-agent.service
现在,您已从此流程中实现了您的第一个目标。接下来,您需要为 br-ironic 网桥分配一个 IP 地址,并确保它在重启后保留。
为裸机服务器分配 IP 地址
在
/etc/sysconfig/network-scripts位置创建标准配置文件。您可以复制租户网络中已可用的ifcfg*文件,并编辑以下值:device、ipaddr、ovs_bridge、网桥名称和MAC地址,用于br-ironic和eth6。当您完成更新新文件后,它们应具有以下值:ifcfg-br-ironicDEVICE=br-ironic ONBOOT=yes HOTPLUG=no NM_CONTROLLED=no PEERDNS=no DEVICETYPE=ovs TYPE=OVSBridge BOOTPROTO=static IPADDR=BARE_METAL_PROVISIONING_IP NETMASK=255.255.255.0 OVS_EXTRA="set bridge br-ironic other-config:hwaddr=MAC_ADDRESS"ifcfg-eth6DEVICE=eth6 ONBOOT=yes HOTPLUG=no NM_CONTROLLED=no PEERDNS=no DEVICETYPE=ovs TYPE=OVSPort OVS_BRIDGE=br-ironic BOOTPROTO=none重新启动网桥,使您的 IP 地址可以 ping 通。
# ifup br-ironic注意如果您在重启网络服务时从节点断开连接,请重新引导服务器。
1.4.1. 订阅所需的频道 复制链接链接已复制到粘贴板!
要安装裸机置备软件包,您必须使用 Red Hat Subscription Manager 注册服务器或服务器,并订阅所需的频道。如果要在计算节点上安装裸机置备,您的服务器可能已经适当订阅。运行 yum repolist 以检查以下流程中的频道是否已启用。
订阅所需的频道
使用 Content Delivery Network 注册您的系统,在提示时输入您的客户门户网站用户名和密码:
# subscription-manager register找到包含安装裸机置备所需的频道的权利池:
# subscription-manager list --available | grep -A13 "Red Hat Enterprise Linux Server" # subscription-manager list --available | grep -A13 "Red Hat OpenStack Platform"使用上一步中的池标识符来附加 Red Hat Enterprise Linux 7 服务器和 Red Hat OpenStack Platform 权利:
# subscription-manager attach --pool=POOL_ID启用所需的频道:
# subscription-manager repos --enable=rhel-7-server-rpms \ --enable=rhel-7-server-openstack-8-rpms \ --enable=rhel-7-server-rh-common-rpms --enable=rhel-7-server-optional-rpms \ --enable=rhel-7-server-openstack-8-optools-rpms
1.4.2. 安装裸机置备软件包 复制链接链接已复制到粘贴板!
裸机置备需要以下软件包:
openstack-ironic-api
提供裸机置备 API 服务。
openstack-ironic-conductor
提供裸机置备编排器服务。编排器允许添加、编辑和删除节点,使用 IPMI 或 SSH 打开或关闭节点,以及置备、部署和停用裸机节点。
python-ironicclient
提供用于与裸机置备服务交互的命令行界面。
安装软件包:
# yum install openstack-ironic-api openstack-ironic-conductor python-ironicclient ipxe-bootimgs
1.4.3. 配置 iPXE 复制链接链接已复制到粘贴板!
为 iPXE、map-files 创建所需的目录,并将
undionly.kpxe引导镜像、iPXE 和map-file复制到位:# mkdir /httpboot # mkdir /tftpboot # echo 'r ([/]) /tftpboot/\1' > /tftpboot/map-file # echo 'r ^(/tftpboot/) /tftpboot/\2' >> /tftpboot/map-file # cp /usr/share/ipxe/undionly.kpxe /tftpboot/ # chown -R ironic:ironic /httpboot # chown -R ironic:ironic /tftpboot默认情况下,director 部署的 Compute 节点以
Enforcing模式运行 SELinux。为了避免在尝试 iPXE 引导时获得权限错误,请确保在这些目录中设置适当的标签。要应用这些标签,请以root用户身份运行以下命令:# semanage fcontext -a -t httpd_sys_content_t "/httpboot(/.*)?" # restorecon -Rv /httpboot # semanage fcontext -a -t tftpdir_t "/tftpboot(/.*)?" # restorecon -Rv /tftpboot配置 HTTP,以便它可以提供镜像的请求。
httpd软件包已经安装,因此创建适当的虚拟主机条目并启动服务至关重要。注意/etc/httpd/conf.d包含多个文件。由于红帽将单个 overcloud 完整镜像用于所有节点,因此它将在所有节点上包括这些文件,即使它仅在 Controller 节点上使用。您可以删除/etc/httpd/conf.d的内容,或者在其它位置复制它们,因为它们没有被使用。在 中为 iPXE 配置创建一个新文件。您可以命名此文件,确保该文件采用
.conf格式,并包含以下内容:# cat 10-ipxe_vhost.conf Listen 8088 <VirtualHost *:8088> DocumentRoot "/httpboot" <Directory "/httpboot"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all Require all granted </Directory> ## Logging ErrorLog "/var/log/httpd/ironic_error.log" ServerSignature Off CustomLog "/var/log/httpd/ironic_access.log" combined </VirtualHost>以上虚拟主机配置将 HTTPD 配置为在端口 8088 上列出的所有地址,并为该端口的所有请求设置文档根目录以转至
/httpboot。保存此文件并在 Compute 节点上启用和重启 HTTPD 服务:
# systemctl enable httpd.service # systemctl start httpd.service
1.4.4. 配置裸机置备服务 复制链接链接已复制到粘贴板!
在本节中,您将对 /etc/ironic/ironic.conf 文件进行必要的更改。
1.4.4.1. 配置裸机置备与数据库服务器的比较 复制链接链接已复制到粘贴板!
设置连接配置键的值:
# openstack-config --set /etc/ironic/ironic.conf \
database connection mysql+pymysql://ironic:PASSWORD@IP/ironic
在这里,PASSWORD 是数据库服务器的密码,IP 是数据库服务器的 IP 地址或主机名。
在连接配置密钥中指定的 IP 地址或主机名必须与在 第 1.3.1 节 “创建裸机置备数据库” 中创建裸机置备数据库时为裸机置备数据库被授予访问权限的 IP 地址或主机名匹配。此外,如果数据库托管在本地,并且您在创建数据库时为 localhost 授予权限,则必须输入 localhost。
1.4.4.2. 配置裸机置备身份验证 复制链接链接已复制到粘贴板!
配置裸机置备以使用 Identity 进行身份验证。此流程中的所有步骤都必须在托管裸机置备的服务器或服务器上执行,同时以 root 用户身份登录。
配置裸机置备以通过身份认证
设置裸机置备必须使用的 Identity public 和 admin 端点:
# openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken auth_uri http://IP:5000/v2.0 # openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken identity_uri http://IP:35357/使用身份服务器的 IP 地址或主机名替换 IP。
设置裸机置备以作为 服务 租户进行身份验证:
# openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken admin_tenant_name service设置裸机置备,以使用 ironic 管理用户帐户进行身份验证:
# openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken admin_user ironic设置裸机置备,以使用正确的 ironic 管理用户帐户密码:
# openstack-config --set /etc/ironic/ironic.conf \ keystone_authtoken admin_password PASSWORD将 PASSWORD 替换为创建 ironic 用户时设定的密码。
1.4.4.3. 为裸机置备配置 RabbitMQ 消息代理设置 复制链接链接已复制到粘贴板!
RabbitMQ 是默认的(和推荐)消息代理。RabbitMQ 消息传递服务由 rabbitmq-server 软件包提供。以下流程中的所有步骤都必须在 Controller 或 Compute 节点上执行,同时以 root 用户身份登录。
此流程假设 RabbitMQ 消息传递服务已经安装并配置,并且托管消息传递服务的服务器上已创建了 ironic 用户和相关密码。
配置裸机置备以使用 RabbitMQ 消息代理
将 RabbitMQ 设置为 RPC 后端:
# openstack-config --set /etc/ironic/ironic.conf \ DEFAULT rpc_backend ironic.openstack.common.rpc.impl_kombu设置裸机置备以连接到 RabbitMQ 主机:
# openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_host RABBITMQ_HOST将 RABBITMQ_HOST 替换为托管消息代理的服务器的 IP 地址或主机名。
将消息代理端口设置为 5672 :
# openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_port 5672在配置了 RabbitMQ 时,设置为裸机置备创建的 RabbitMQ 用户名和密码:
# openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_userid guest # openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_password RABBIT_GUEST_PASSWORD将 RABBIT_GUEST_PASSWORD 替换为 guest 用户的 RabbitMQ 密码。
启动 RabbitMQ 后,guest 用户被授予对所有资源的读写权限:特别是通过虚拟主机。配置裸机置备以连接到此虚拟主机:
# openstack-config --set /etc/ironic/ironic.conf \ oslo_messaging_rabbit rabbit_virtual_host /
1.4.4.4. 配置裸机置备驱动程序 复制链接链接已复制到粘贴板!
裸机置备支持多个驱动程序,用于部署和管理裸机服务器。有些驱动程序有硬件要求,且需要额外的配置或软件包安装。详情请查看 附录 A, 裸机置备驱动程序。驱动程序的前半名称指定其部署方法(如 PXE),第二个半指定其电源管理方法(如 IPMI)。
配置裸机置备驱动程序
指定用于置备裸机服务器的驱动程序或驱动程序。使用以逗号分隔的列表指定多个驱动程序:
# openstack-config --set /etc/ironic/ironic.conf \ DEFAULT enabled_drivers DRIVER1,DRIVER2支持以下驱动程序:
带有 PXE 部署的 IPMI
-
pxe_ipmitool
-
具有 PXE 部署的 DRAC
-
pxe_drac
-
带有 PXE 部署的 iLO
-
pxe_ilo
-
具有 PXE 部署的 SSH
-
pxe_ssh
-
iRMC 使用 PXE
-
pxe_irmc
-
重启裸机编排器服务:
# systemctl restart openstack-ironic-conductor.service
1.4.4.5. 将裸机置备服务配置为使用 PXE 复制链接链接已复制到粘贴板!
将裸机置备服务设置为使用 PXE 模板:
# openstack-config --set /etc/ironic/ironic.conf \ pxe pxe_config_template \$pybasedir/drivers/modules/ipxe_config.template将裸机置备服务设置为使用
tftp_server:# openstack-config --set /etc/ironic/ironic.conf \ pxe tftp_server BARE_METAL_PROVISIONING_NETWORK_IP设置 PXE
tftp_root:# openstack-config --set /etc/ironic/ironic.conf \ pxe tftp_root /tftpboot设置 PXE 引导文件名:
# openstack-config --set /etc/ironic/ironic.conf \ pxe pxe_bootfile_name undionly.kpxe启用裸机置备服务以使用 iPXE:
# openstack-config --set /etc/ironic/ironic.conf \ pxe ipxe_enabled true为
http服务器设置 URL:# openstack-config --set /etc/ironic/ironic.conf deploy http_url http://BARE_METAL_PROVISIONING_IP:8088重启裸机编排器服务:
# systemctl restart openstack-ironic-conductor.service
1.4.4.6. 配置裸机置备,使其与 OpenStack 网络和 OpenStack 镜像比较 复制链接链接已复制到粘贴板!
裸机调配使用 OpenStack 网络进行 DHCP 和网络配置,并使用镜像服务来管理用于启动物理计算机的镜像。配置裸机置备以连接到 OpenStack 网络和镜像服务并进行通信。此流程中的所有步骤都必须在托管裸机置备的服务器上执行,同时以 root 用户身份登录。
配置裸机置备以与 OpenStack 网络和 OpenStack 镜像比较
设置裸机置备以使用 OpenStack 网络端点:
# openstack-config --set /etc/ironic/ironic.conf \ neutron url http://NEUTRON_IP:9696将 NEUTRON_IP 替换为托管 OpenStack 网络的服务器的 IP 地址或主机名。
设置裸机置备以与镜像服务通信:
# openstack-config --set /etc/ironic/ironic.conf \ glance glance_host GLANCE_IP使用托管镜像服务的服务器的 IP 地址或主机名替换 GLANCE_IP。
启动裸机置备 API 服务,并将其配置为在引导时启动:
# systemctl start openstack-ironic-api.service # systemctl enable openstack-ironic-api.service创建裸机置备数据库表:
# ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema启动裸机置备编排器服务,并将其配置为在引导时启动:
# systemctl restart openstack-ironic-conductor.service # systemctl enable openstack-ironic-conductor.service
1.4.5. 配置 OpenStack Compute 以使用裸机置备服务 复制链接链接已复制到粘贴板!
在本节中,您将更新 /etc/nova/nova.conf 文件,以将 Compute 服务配置为使用裸机置备服务:
配置 OpenStack Compute 以使用裸机置备
将 Compute 设置为使用集群计算管理器:
# openstack-config --set /etc/nova/nova.conf \ DEFAULT compute_manager ironic.nova.compute.manager.ClusteredComputeManager将虚拟 RAM 设置为物理 RAM 分配比率:
# openstack-config --set /etc/nova/nova.conf \ DEFAULT ram_allocation_ratio 1.0设置要为主机保留的磁盘空间量(以 MB 为单位):
# openstack-config --set /etc/nova/nova.conf \ DEFAULT reserved_host_memory_mb 0设置 Compute 以使用裸机置备驱动程序:
# openstack-config --set /etc/nova/nova.conf \ DEFAULT compute_driver nova.virt.ironic.IronicDriver设置 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 地址或主机名。
重启 Compute 控制器节点上的 Compute 调度程序服务:
# systemctl restart openstack-nova-scheduler.service重启计算节点上的 compute 服务:
# systemctl restart openstack-nova-compute.service