Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

在 OpenStack 上安装 vMX

阅读本主题可了解如何在 OpenStack 环境中安装 vMX 实例。

准备安装 vMX 的 OpenStack 环境

在运行任何 OpenStack 命令之前,请确保 openstackrc 文件已获取。

要准备安装 vMX 的 OpenStack 环境,请执行以下任务:

创建中子网络

在启动 vMX 实例之前,您必须创建 vMX 使用的中子网络。公共网络是用于管理 (fxp0) 网络的中子网络。WAN 网络是在其上添加 vMX 的 WAN 接口的中子网络。

要显示中子网络名称,请使用命令 neutron net-list

注意:

您必须在 OpenStack 配置中识别并创建所需的网络类型。

您可以使用这些命令作为创建公共网络的一种方式:

  • 例如:

  • 对于 virtio,您可以使用这些命令作为创建 WAN 网络的一种方式:

    例如:

  • 对于 SR-IOV,您可以使用以下命令作为创建 WAN 网络的一种方式:

    例如:

准备控制器节点

为 vMX 准备控制器节点

要准备控制器节点,请执行以下作:

  1. 通过编辑 scheduler_default_filters /etc/nova/nova.conf 文件中的参数,配置控制器节点以启用 Huge Pages 和 CPU 关联性。确保存在以下筛选器:

    使用此命令重新启动调度程序服务。

    • 对于 Red Hat: systemctl restart openstack-nova-scheduler.service

    • 对于 Ubuntu(从 Junos OS 17.2R1 版开始): service nova-scheduler restart

  2. 更新默认配额。
    注意:

    我们建议使用这些默认值,但如果它们适合您的环境,您可以使用其他值。请确保默认配额具有足够的分配资源。

    使用 nova quota-defaults 命令验证更改。

  3. 确保热包为 5.0.1-6 或更高版本。此软件包是 rhel-7-server-openstack-8-rpms 的一部分。

    使用 rpm -qa | grep heat 命令验证版本。

    使用此命令更新热量包。

    • 对于 Red Hat: yum update openstack-heat-engine

    • 对于 Ubuntu(从 Junos OS 17.2R1 版开始): apt-get install heat-engine

  4. 确保安装了 lsb(redhat-lsb-core 或 lsb-release)和 numactl 软件包。
    • 对于 Red Hat:

    • 对于 Ubuntu(从 Junos OS 17.2R1 版开始):

为 virtio 接口配置控制器节点

要配置 virtio 接口,请执行以下作:

  1. 通过 vlan 添加 type_drivers /etc/neutron/plugins/ml2/ml2_conf.ini 文件中的参数来启用 VLAN 机制驱动程序。
  2. 通过添加以下行,将桥映射添加到 /etc/neutron/plugins/ml2/ml2_conf.ini 文件中:

    例如,使用以下设置为映射到 OVS 网桥 br-vlan 的物理网络 physnet1 添加网桥映射。

  3. /etc/neutron/plugins/ml2/ml2_conf.ini 文件中配置用于物理网络的 VLAN 范围,其中 physical-network-name 是您为 virtio WAN 网络创建的中子网络的名称。

    例如,使用以下设置配置用于物理网络 physnet1 的 VLAN 范围。

  4. 重新启动 neutron 服务器。
    • 对于 Red Hat: systemctl restart neutron-server

    • 对于 Ubuntu(从 Junos OS 17.2R1 版开始): service neutron-server restart

  5. 添加映射到物理网络和 virtio 接口 (eth2) 的 OVS 网桥。

    例如,使用以下命令添加 OVS 桥接 br-vlan 和 eth2 接口:

为 SR-IOV 接口配置控制器节点

注意:

如果您有多个 SR-IOV 接口,则每个额外的 SR-IOV 接口需要一个专用的物理 10G 接口。

注意:

在 SRIOV 模式下,路由引擎 (RE) 和数据包转发引擎之间的通信使用 VLAN 提供商 OVS 网络上的 virtio 接口启用。因此,给定的物理接口不能同时属于 VirtIO 和 SR-IOV 网络。

要配置 SR-IOV 接口,请执行以下作:

  1. 编辑 /etc/neutron/plugins/ml2/ml2_conf.ini 文件以添加 sriovnicswitch 为机制驱动程序和用于物理网络的 VLAN 范围。

    例如,使用以下设置配置用于物理网络 physnet2 的 VLAN 范围。

    如果添加更多 SR-IOV 端口,则必须添加用于每个物理网络的 VLAN 范围(用逗号分隔)。例如,在配置两个 SR-IOV 端口时使用以下设置。

  2. 编辑 /etc/neutron/plugins/ml2/ml2_conf_sriov.ini 文件以添加有关 PCI 设备的详细信息。
  3. 将突出显示的 –-config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini as 添加到 neutron 服务器文件中。
    • 对于 Red Hat:

      编辑突出显示的 /usr/lib/systemd/system/neutron-server.service 文件。

      systemctl restart neutron-server使用命令重新启动服务。

    • 对于 Ubuntu(从 Junos OS 17.2R1 版开始):

      编辑突出显示的 /etc/init/neutron-server.conf 文件。

      service neutron-server restart使用命令重新启动服务。

  4. 若要允许正确调度 SR-IOV 设备,计算计划程序必须将 FilterScheduler 与 PciPassthroughFilter 筛选器一起使用。

    确保在控制器节点上的 /etc/nova/nova.conf 文件中配置了 PciPassthroughFilter 筛选器。

    重新启动调度程序服务。

    • 对于 Red Hat: systemctl restart openstack-nova-scheduler

    • 对于 Ubuntu(从 Junos OS 17.2R1 版开始): service nova-scheduler restart

准备计算节点

为 vMX 准备计算节点

注意:

您不再需要通过在 /etc/nova/nova.conf 文件中包含参数config_drive_format=vfat来配置计算节点以将元数据传递给 vMX 实例。

要准备计算节点,请执行以下作:

  1. 将每个计算节点配置为在启动和重新启动时支持大页面。
    • 对于 Red Hat:添加 Huge Pages 配置。

      mount | grep boot使用命令确定启动设备名称。

    • 对于 Ubuntu(从 Junos OS 17.2R1 版开始):将 Huge Pages 配置添加到参数下的 GRUB_CMDLINE_LINUX_DEFAULT /etc/default/grub 中。

    重新启动后,验证是否已分配“大页面”。

    大页面的数量取决于 VFP 的内存量、大页面的大小和 VFP 实例的数量。计算大页数:(memory-for-vfp / huge-pages-size) * number-of-vfp

    例如,如果您使用 12G 内存和 2M 大页面大小在性能模式下运行四个 vMX 实例(四个 VFP),则公式计算的大页面数为 (12G/2M)*4 或 24576。

    注意:

    从 Junos OS 15.1F6 版及更高版本开始,性能模式是默认作模式。有关详细信息,请参阅 启用性能模式或精简模式

    注意:

    确保计算节点上有足够的物理内存。它必须大于分配给“大页面”的内存量,因为任何其他不使用“大页面”的应用程序都受到为“大页面”分配后剩余内存量的限制。例如,如果您分配了 24576 个大页面和 2M 个大页面大小,则需要 24576*2M 或 48G 内存来容纳大页面。

    您可以使用 vmstat -s 命令并查看总内存和已用内存值,以验证为不使用“大页面”的其他应用程序剩余多少内存。

  2. /etc/default/grub 文件中启用 IOMMU。将 intel_iommu=on 字符串追加到参数的任何现有文本 GRUB_CMDLINE_LINUX 中。

    重新生成 grub 文件。

    • 对于 Red Hat: grub2-mkconfig -o /boot/grub2/grub.cfg

    • 对于 Ubuntu(从 Junos OS 17.2R1 版开始): update-grub

    重新启动计算节点。

  3. 为 Virtio 网络添加网桥,并配置 physnet1:

    例如, br-vlan 添加 OVS 网桥。(这与上面ml2_conf.ini在控制器上添加的bridge_mappings相同 br-vlan 。在此桥接中,添加 eth2 接口,该接口可用于 VM 之间的 Virtio 通信。

    在 /etc/neutron/plugins/ml2/openvswitch_agent.ini 中,附加 physnet1:br-vlan 字符串:

    重新启动 neutron 服务。

    • Redhat:

      systemctl restart neutron-openvswitch-agent.service

      systemctl restart openstack-nova-compute.service

    • Ubuntu的

      service nova-compute restart

      service neutron-plugin-openvswitch-agent restart

为 SR-IOV 接口配置计算节点

注意:

如果您有多个 SR-IOV 接口,则每个额外的 SR-IOV 接口需要一个物理 10G 以太网 NIC 卡。

要配置 SR-IOV 接口,请执行以下作:

  1. 加载修改后的 IXGBE 驱动程序。

    在编译驱动程序之前,请确保已安装 gcc 和 make。

    • 对于 Red Hat:

    • 对于 Ubuntu(从 Junos OS 17.2R1 版开始):

    卸载默认 IXGBE 驱动程序,编译修改后的瞻博网络驱动程序,然后加载修改后的 IXGBE 驱动程序。

    验证 eth4 接口上的驱动程序版本。

    例如,在以下示例中,命令显示驱动程序版本 (3.19.1):

  2. 在物理设备上创建虚拟功能 (VF)。vMX 目前仅支持每个 SR-IOV 接口有一个 VF(例如 eth4)。

    指定每个 NIC 上的 VF 数量。以下行指定 eth2(第一个 NIC)没有 VF,eth4(第二个 NIC,带 SR-IOV 接口的第二个 NIC)没有 VF。

    要验证 VF 是否已创建,命令的 ip link show eth4 输出包含以下行:

    要确保接口已开启且 SR-IOV 流量可以通过这些接口,请执行以下命令以完成配置。

  3. 安装 SR-IOV 代理。
    • 对于 Red Hat: sudo yum install openstack-neutron-sriov-nic-agent

    • 对于 Ubuntu(从 Junos OS 17.2R1 版开始): sudo apt-get install neutron-plugin-sriov-agent

  4. 通过添加以下行,将物理设备映射添加到 /etc/neutron/plugins/ml2/sriov_agent.ini 文件中:

    例如,使用以下设置为映射到 SR-IOV 接口 eth4 的物理网络 physnet2 添加网桥映射。

    如果添加更多 SR-IOV 端口,则必须为每个物理网络添加网桥映射(用逗号分隔)。例如,在为物理网络 physnet3 添加 SR-IOV 接口 eth5 时,请使用以下设置。

  5. 编辑 SR-IOV 代理服务文件,以突出显示的方式添加 –-config-file /etc/neutron/plugins/ml2/sriov_agent.ini
    • 对于 Red Hat:

      编辑突出显示的 /usr/lib/systemd/system/neutron-sriov-nic-agent.service 文件。

      启用并启动 SR-IOV 代理。

      systemctl status neutron-sriov-nic-agent.service使用命令验证代理是否已成功启动。

    • 对于 Ubuntu(从 Junos OS 17.2R1 版开始):

      编辑突出显示的 /etc/init/neutron-plugin-sriov-agent.conf 文件。

      确保 /etc/neutron/plugins/ml2/sriov_agent.ini 具有正确的权限,并且 neutron 是文件的组。

      service neutron-plugin-sriov-agent start使用命令启动 SR-IOV 代理。

      service neutron-plugin-sriov-agent status使用命令验证代理是否已成功启动。

  6. 编辑 /etc/nova/nova.conf 文件,为 SR-IOV 设备添加 PCI 直通允许列表条目。

    例如,此条目为物理网络 physnet2 的 SR-IOV 接口 eth4 添加一个条目。

    如果添加更多 SR-IOV 端口,则必须为每个 SR-IOV 接口添加 PCI 直通允许列表条目(用逗号分隔)。例如,在为物理网络 physnet3 添加 SR-IOV 接口 eth5 时,请使用以下设置。

    重新启动计算节点服务。

    • 对于 Red Hat: systemctl restart openstack-nova-compute

    • 对于 Ubuntu(从 Junos OS 17.2R1 版开始): service nova-compute restart

安装 vMX

准备好 OpenStack 环境后,必须为 VCP 和 VFP 虚拟机创建 nova 配置和概览映像。脚本根据启动配置文件中提供的信息创建配置和映像。

设置 vMX 配置文件

配置 vMX 所需的参数在启动配置文件中定义。

要设置配置文件,请执行以下作:

  1. vMX 页面 下载 vMX KVM 软件包并解压包。

    tar xvf package-name

  2. 将目录更改为文件的位置。

    cd package-location/openstack/scripts

  3. 使用文本编辑器编辑 vmx.conf 文本文件,为单个 vMX 实例创建样式。

    根据您的要求,确保在 vMX 配置文件中正确设置以下参数:

    • re-flavor-name

    • pfe-flavor-name

    • vcpus

    • memory-mb

    有关参数的信息,请参阅 指定 vMX 配置文件参数

    vMX 启动配置文件示例

    以下是 OpenStack 的 vMX 启动配置文件示例:

指定 vMX 配置文件参数

配置 vMX 所需的参数在启动配置文件 (scripts/vmx.conf) 中定义。启动配置文件将生成一个文件,用于创建变种。若要使用不同的 vcpus or memory-mb 参数创建新变种,必须在创建新变种之前更改相应的 re-flavor-name or pfe-flavor-name 参数。

要自定义配置,请执行以下任务:

配置主机

要配置主机,请导航到 HOST 并指定以下参数:

  • virtualization-type—作模式;必须是 openstack

  • compute—(可选)要在逗号分隔的列表中运行 vMX 实例的计算节点的名称。如果指定了此参数,则它必须是有效的计算节点。如果指定了此参数,则使用特定实例启动的 vMX 实例仅在指定的计算节点上运行。

    如果未指定此参数,则 nova hypervisor-list 命令的输出将提供运行 vMX 实例的计算节点列表。

配置 VCP VM

若要配置 VCP VM,必须提供特定实例名称。

注意:

我们建议为 re-flavor-name 该参数设置唯一的值,因为 OpenStack 可以创建多个同名条目。

要配置 VCP VM,请导航到 “CONTROL_PLANE ”并指定以下参数:

  • re-flavor-name—新星风味的名称。

  • vcpus—VCP 的 vCPU 数量;最小值为 1。

    注意:

    如果更改此值,则必须在运行脚本以创建变种之前更改该 re-flavor-name 值。

  • memory-mb—VCP 的内存量;最小为 4 GB。

    注意:

    如果更改此值,则必须在运行脚本以创建变种之前更改该 re-flavor-name 值。

配置 VFP VM

若要配置 VFP VM,必须提供变种名称。根据您的要求,您可能需要更改 vCPU 的内存和数量。请参阅 最低硬件要求 ,了解最低硬件要求。

要配置 VFP VM,请导航到 “FORWARDING_PLANE ”并指定以下参数:

  • pfe-flavor-name—新星风味的名称。

  • memory-mb- VFP 的内存量;最小值为 12 GB(性能模式)和 4 GB(精简模式)。

    注意:

    如果更改此值,则必须在运行脚本以创建变种之前更改该 pfe-flavor-name 值。

  • vcpus—VFP 的 vCPU 数量;最小值为 7(性能模式)和 3(精简模式)。

    注意:

    如果指定的 vCPU 少于 7 个,VFP 会自动切换到精简模式。

    注意:

    如果更改此值,则必须在运行脚本以创建变种之前更改该 pfe-flavor-name 值。

创建 OpenStack 配置

要为 VCP 和 VFP 创建配置,必须在 vMX 启动配置文件 (vmx.conf) 上执行脚本。

要创建 OpenStack 规格,请执行以下作:

  1. 使用启动配置文件运行以 vmx_osp_create_flavor.py 生成 vmx_osp_flavors.sh 创建变种的文件。

    ./vmx_osp_create_flavor.py vmx.conf

  2. 执行以 vmx_osp_flavors.sh 创建变种。

    sh vmx_osp_flavors.sh

为 VCP 和 VFP 安装 vMX 映像

要为 VCP 和 VFP 安装 vMX OpenStack glance 映像,可以执行脚本 vmx_osp_images.sh 。该脚本以 qcow2 格式添加 VCP 映像,以 vmdk 格式添加 VFP 文件。

要安装 VCP 和 VFP 映像,请执行以下作:

  1. vMX 页面 下载 vMX KVM 软件包并解压包。

    tar xvf package-name

  2. 从未压缩的 vMX 软件包中验证软件映像的位置。请参阅 vMX 软件包内容

    ls package-location/images

  3. 将目录更改为 vMX OpenStack 脚本文件的位置。

    cd package-location/openstack/scripts

  4. vmx_osp_images.sh运行脚本以安装 glance 图像。

    sh vmx_osp_images.sh vcp-image-name vcp-image-location vfp-image-name vfp-image-location

    注意:

    您必须按此顺序指定参数。

    • vcp-image-name- 概览图像的名称。

    • vcp-image-location- 用于启动 VCP 的 junos-vmx-x86-64*.qcow2 文件的绝对路径。

    • vfp-image-name- 概览图像的名称。

    • vfp-image-location- 用于启动 VFP 的 vFPC-*.img 文件的绝对路径。

例如,此命令将 VCP 映像安装为 /var/tmp/junos-vmx-x86-64-17.1R1.8.qcow2 文件中的 re-test,并将 VFP 映像安装为 /var/tmp/vFPC-20170117.img 文件中的 fpc-test。

sh vmx_osp_images.sh re-test /var/tmp/junos-vmx-x86-64-17.1R1.8.qcow2 fpc-test /var/tmp/vFPC-20170117.img

要查看浏览图像,请使用 glance image-list 命令。

启动 vMX 实例

要启动 vMX 实例,请执行以下任务:

修改 Junos OS 初始配置

启动 vMX 实例时,将加载 /openstack/vmx-components/vms/vmx_baseline.conf 中的package-locationJunos OS配置文件。如果需要更改此配置,请在启动 vMX 之前对此文件进行任何更改。

注意:

如果您创建自己的 vmx_baseline.conf 文件或移动该文件,请确保 package-location/openstack/vmx-components/vms/re.yaml 引用正确的路径。

启动 vMX 实例

要创建并启动 vMX 实例,请执行以下作:

  1. 在配置的 package-location/openstack/1vmx.env 环境文件中修改这些参数。从 Junos OS 17.4R1 版开始,环境文件采用 YAML 格式。
    • net_id1- 用于 WAN 端口的现有中子网络的网络 ID。 neutron net-list 使用命令显示网络 ID。

    • public_network- 用于管理 (fxp0) 端口的现有中子网络的网络 ID。 neutron net-list | grep public 使用命令显示网络 ID。

    • fpc_img- 将此参数更改为 linux-img。VFP 的扫描图像的名称;与 vfp-image-name 运行脚本安装 vMX 映像时指定的参数相同。

    • vfp_image- VFP 的概览图像的名称;与 vfp-image-name 运行脚本安装 vMX 映像时指定的参数相同(适用于 Junos OS 17.3R1 及更低版本)。

    • fpc_flav- 将此参数更改为 linux-flav。VFP 的 nova 风味的名称;与 pfe-flavor-name vMX 配置文件中指定的参数相同。

    • vfp_flavor—VFP 的 nova 风味的名称;与 pfe-flavor-name vMX 配置文件中指定的参数相同(适用于 Junos OS 17.3R1 及更低版本)。

    • junos_flav—VCP 的 nova 风格的名称;与 re-flavor-name vMX 配置文件中指定的参数相同。

    • vcp_flavor—VCP 的 nova 风格的名称;与 re-flavor-name vMX 配置文件中指定的参数相同(适用于 Junos OS 17.3R1 及更低版本)。

    • junos_img- VCP 的浏览图像的名称;与 vcp-image-name 运行脚本安装 vMX 映像时指定的参数相同。

    • vcp_image- VCP 的浏览图像的名称;与 vcp-image-name 运行脚本安装 vMX 映像时指定的参数相同(适用于 Junos OS 17.3R1 及更低版本)。

    • project_name- 任何项目名称。所有资源都将使用此名称作为前缀。

    • gateway_ip- 网关 IP 地址。

  2. 使用 heat stack-create –f 1vmx.yaml –e 1vmx.env vmx-name 命令启动 vMX 实例。

    此示例配置启动一个具有一个 WAN 端口和一个 FPC 的 vMX 实例。

  3. 验证是否已使用 heat stack-list | grep vmx-name 命令创建 vMX 实例。
  4. 使用 nova-list 命令验证 VCP 和 VFP VM 是否存在。
  5. 使用 nova get-vnc-console nova-id novnc 命令访问 VCP 或 VFP VM,其中 nova-id 是命令输出中 nova-list 显示的实例 ID。
注意:

必须先关闭 vMX 实例,然后才能使用 request system halt 命令重新启动主机服务器。