第 15 章 配置实时计算

作为云管理员,您可能需要 Compute 节点上的实例遵循低延迟策略并执行实时处理。实时 Compute 节点包含一个具有实时的内核、特定虚拟化模块和优化的部署参数,以方便实时处理要求并最小化延迟。

启用 Real-time Compute 的进程包括:

  • 配置 Compute 节点的 BIOS 设置
  • 使用实时内核和 Real-Time KVM (RT-KVM)内核模块构建实时镜像
  • ComputeRealTime 角色分配给 Compute 节点

对于实时计算部署工作复制的一个用例,请参阅 Network Functions Virtualization Planning and Configuration Guide 中的Example: Configuring OVS-DPDK with ODL and VXLAN tunnelling 部分。

注意

只有在 Red Hat Enterprise Linux 7.5 或更高版本支持实时 Compute 节点。

15.1. 为实时准备 Compute 节点

在 overcloud 中部署 Real-time Compute 之前,您必须启用 Red Hat Enterprise Linux Real-Time KVM (RT-KVM),配置 BIOS 以支持实时 overcloud 镜像。

先决条件

流程

  1. 要构建实时 overcloud 镜像,您必须为 RT-KVM 启用 rhel-8-for-x86_64-nfv-rpms 存储库。要检查将从存储库中安装哪些软件包,请输入以下命令:

    $ dnf repo-pkgs rhel-8-for-x86_64-nfv-rpms list
    Loaded plugins: product-id, search-disabled-repos, subscription-manager
    Available Packages
    kernel-rt.x86_64                   4.18.0-80.7.1.rt9.153.el8_0               rhel-8-for-x86_64-nfv-rpms
    kernel-rt-debug.x86_64             4.18.0-80.7.1.rt9.153.el8_0               rhel-8-for-x86_64-nfv-rpms
    kernel-rt-debug-devel.x86_64       4.18.0-80.7.1.rt9.153.el8_0               rhel-8-for-x86_64-nfv-rpms
    kernel-rt-debug-kvm.x86_64         4.18.0-80.7.1.rt9.153.el8_0               rhel-8-for-x86_64-nfv-rpms
    kernel-rt-devel.x86_64             4.18.0-80.7.1.rt9.153.el8_0               rhel-8-for-x86_64-nfv-rpms
    kernel-rt-doc.noarch               4.18.0-80.7.1.rt9.153.el8_0               rhel-8-for-x86_64-nfv-rpms
    kernel-rt-kvm.x86_64               4.18.0-80.7.1.rt9.153.el8_0               rhel-8-for-x86_64-nfv-rpms
    [ output omitted…]
  2. 要为 Real-time Compute 节点构建 overcloud 镜像,请在 undercloud 上安装 libguestfs-tools 软件包以获取 virt-customize 工具:

    (undercloud)$ sudo dnf install libguestfs-tools
    重要

    如果在 undercloud 上安装 libguestfs-tools 软件包,请禁用 iscsid.socket 以避免 undercloud 上的 tripleo_iscsid 服务的端口冲突:

    $ sudo systemctl disable --now iscsid.socket
  3. 提取镜像:

    (undercloud)$ tar -xf /usr/share/rhosp-director-images/overcloud-full.tar
    (undercloud)$ tar -xf /usr/share/rhosp-director-images/ironic-python-agent.tar
  4. 复制默认镜像:

    (undercloud)$ cp overcloud-full.qcow2 overcloud-realtime-compute.qcow2
  5. 注册镜像并配置所需的订阅:

    (undercloud)$ virt-customize -a overcloud-realtime-compute.qcow2 --run-command 'subscription-manager register --username=<username> --password=<password>'
    [  0.0] Examining the guest ...
    [ 10.0] Setting a random seed
    [ 10.0] Running: subscription-manager register --username=<username> --password=<password>
    [ 24.0] Finishing off

    使用您的红帽客户帐户替换 usernamepassword 的值。

    有关构建实时 overcloud 镜像的常规信息,请参阅使用 virt-customize 修改 Red Hat Enterprise Linux OpenStack Platform Overcloud 镜像 的知识库文章。

  6. 查找 Red Hat OpenStack Platform for Real Time 订阅的 SKU。SKU 可能位于已注册到 Red Hat Subscription Manager 的系统中,并使用相同的帐户和凭证:

    $ sudo subscription-manager list
  7. Red Hat OpenStack Platform for Real Time 订阅附加到镜像:

    (undercloud)$  virt-customize -a overcloud-realtime-compute.qcow2 --run-command 'subscription-manager attach --pool [subscription-pool]'
  8. 创建在镜像中配置 rt 的脚本:

    (undercloud)$ cat rt.sh
      #!/bin/bash
    
      set -eux
    
      subscription-manager repos --enable=[REPO_ID]
      dnf -v -y --setopt=protected_packages= erase kernel.$(uname -m)
      dnf -v -y install kernel-rt kernel-rt-kvm tuned-profiles-nfv-host
    
      # END OF SCRIPT
  9. 运行脚本来配置实时镜像:

    (undercloud)$ virt-customize -a overcloud-realtime-compute.qcow2 -v --run rt.sh 2>&1 | tee virt-customize.log
  10. 重新标记 SELinux:

    (undercloud)$ virt-customize -a overcloud-realtime-compute.qcow2 --selinux-relabel
  11. 提取 vmlinuzinitrd。例如:

    (undercloud)$ mkdir image
    (undercloud)$ guestmount -a overcloud-realtime-compute.qcow2 -i --ro image
    (undercloud)$ cp image/boot/vmlinuz-4.18.0-80.7.1.rt9.153.el8_0.x86_64 ./overcloud-realtime-compute.vmlinuz
    (undercloud)$ cp image/boot/initramfs-4.18.0-80.7.1.rt9.153.el8_0.x86_64.img ./overcloud-realtime-compute.initrd
    (undercloud)$ guestunmount image
    注意

    vmlinuzinitramfs 文件名中的软件版本与内核版本不同。

  12. 上传镜像:

    (undercloud)$ openstack overcloud image upload \
     --update-existing --os-image-name
     overcloud-realtime-compute.qcow2

    现在,您有一个实时镜像,可用于选择 Compute 节点上的 ComputeRealTime 可组合角色。

  13. 要减少 Real-time Compute 节点上的延迟,您必须修改 Compute 节点上的 BIOS 设置。您应该在 Compute 节点 BIOS 设置中禁用以下组件的所有选项:

    • 电源管理
    • Hyper-Threading
    • CPU 睡眠状态
    • 逻辑处理器

      有关这些设置的描述及其禁用它们的影响,请参阅设置 BIOS 参数。有关如何更改 BIOS 设置的详情,请查看您的硬件制造商文档。