Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

准备 Junos 节点切片设置

注意:

本节中的主题仅适用于使用外部服务器模型设置的 Junos 节点切片。对于机箱内 Junos 节点切片,请继续执行 将 MX 系列路由器配置为在机箱内模式下运行

在设置 Junos 节点切片(外部服务器模型)之前,您需要执行一些准备步骤,例如连接服务器和路由器、安装其他软件包、配置 x86 服务器 Linux GRUB 以及设置 x86 服务器 CPU 的 BIOS。

连接服务器和路由器

要设置 Junos 节点切片,必须将一对外部 x86 服务器直接连接到 MX 系列路由器。除了 Linux 主机的管理端口外,每台服务器还需要两个附加端口,分别用于为 JDM 和 GNF VM 提供管理连接,以及两个用于连接到 MX 系列路由器的端口。

注意:
  • 在 MX 系列路由器上启用 Junos 节点切片时,请勿将环路电缆连接到外部 CB 端口。另外,请确保外部控制板端口未连接到其他控制板的外部端口。

  • 为防止主机服务器遭受任何 SSH 暴力攻击,建议您在主机服务器上添加 IPtables 规则。下面是一个示例:

    上述示例中的规则用于对传入的 SSH 连接进行速率限制。它允许您在进行特定次数的 SSH 尝试时在一段时间内阻止来自远程 IP 的连接。根据上面的示例,尝试 10 次后,来自远程 IP 的连接将被阻止 120 秒。

图 1 显示了 MX2020 路由器如何连接到一对 x86 外部服务器。

图 1:MX2020 路由器 — 外部 x86 服务器连接 MX2020 Router—External x86 Server Connectivity

根据图 1 中的示例,em1、 和 em2em3 x86 服务器上的端口分别用于管理 Linux 主机、JDM 和 GNF。 p3p1 p3p2 每台服务器上都有两个 10-Gbps 端口,它们连接到 MX 系列路由器的控制板。

注意:

服务器上的接口名称(如 em1p3p1 可能因服务器硬件配置而异。

有关 图 1 中提到的 MX 系列路由器控制板 (CB) 的 XGE 端口的详细信息,请参阅:

  • SCBE2-MX 说明 (适用于 MX960 和 MX480)

    注意:

    XGE 端口号未在 SCBE2 上标记。在垂直方向的 SCBE2 上,上端口为 XGE-0,下端口为 XGE-1。在水平方向的 SCBE2 上,左侧端口为 XGE-0,右侧端口为 XGE-1。

  • REMX2K-X8-64G 和 REMX2K-X8-64G-LT CB-RE 说明 (适用于 MX2010 和 MX2020)

注意:

使用 show chassis ethernet-switch 命令查看这些 XGE 端口。在 MX960 上的命令输出中,请参阅端口号 2426 查看 SCBE2 上的这些端口。在 MX2010 和 MX2020 上的命令输出中,请参阅端口号 2627 并在控制板路由引擎 (CB-RE) 上查看这些端口。

x86 服务器 CPU BIOS 设置

对于 Junos 节点切片,x86 服务器 CPU 的 BIOS 应设置为:

  • 超线程已禁用。

  • CPU 内核始终以其额定频率运行。

  • CPU 内核设置为通过限制 C 状态的使用来减少抖动。

要查找服务器上 CPU 内核的额定频率,请运行 Linux host 命令 lscpu,并检查字段 Model name的值。请参阅以下示例:

要查找 CPU 内核当前运行的频率,请运行 Linux host 命令 grep MHz /proc/cpuinfo 并检查每个 CPU 内核的值。

在将 BIOS 设置为以额定频率运行 CPU 内核的服务器上,CPU 内核的观测值将全部匹配额定频率(或非常接近额定频率),如以下示例所示。

在没有将 BIOS 设置为以额定频率运行 CPU 内核的服务器上,观察到的 CPU 内核值与额定频率不匹配,并且这些值也可能随时间变化(您可以通过重新运行命令来检查这一点)。

要将 x86 服务器 BIOS 系统配置文件设置为以额定频率运行 CPU 内核、减少抖动和禁用超线程,请咨询服务器制造商,因为这些设置因服务器型号和 BIOS 版本而异。

实现此目的的典型 BIOS 系统配置文件设置包括:

  • Logical processor:设置为禁用。

  • CPU power management:设置为“最高性能”。

  • Memory frequency:设置为“最高性能”。

  • Turbo boost:设置为禁用。

  • C-states and C1E state:设置为禁用。

  • Energy efficient policy:设置为“性能”。

  • Monitor/Mwait:设置为禁用。

可能需要自定义 BIOS 系统配置文件来设置这些值。

x86 Server Linux GRUB 配置

在 Junos 节点切片中,系统会为每个 GNF 虚拟机分配专用 CPU 内核。此分配由瞻博网络设备管理器 (JDM) 管理。在每台 x86 服务器上,JDM 要求保留除 CPU 核心 0 和 1 以外的所有 CPU 核心用于 Junos 节点切片,实际上,必须将这些核心与其他应用程序隔离。CPU 核心 2 和 3 专用于 GNF 虚拟磁盘和网络 I/O。CPU 核心 4 及更高版本可用于分配给 GNF 虚拟机。要保留这些 CPU 内核,您必须按照以下过程中的说明在 Linux GRUB 配置中设置 isolcpus 参数:

对于运行红帽企业 Linux (RHEL) 7.3 的 x86 服务器,请执行以下步骤:

  1. 确定 x86 服务器上的 CPU 内核数。确保已禁用超线程,如 x86 服务器 CPU BIOS 设置中所述。您可以使用 Linux 命令 lscpu 查找 CPU 内核的总数,如以下示例所示:

    这里有 24 个内核 (12 x 2)。CPU 内核编号为核心 0 到核心 23。

  2. 根据此示例, isolcpus 必须将参数设置为“isolcpus=4-23”(隔离除内核 0、1、2 和 3 以外的所有 CPU 内核,以供 GNF VM 使用)。由于以下原因,该 isolcpus 参数设置为“isolcpus=4-23”:

    • 在每台 x86 服务器上,JDM 要求为 Junos 节点切片保留除 CPU 核心 0 和 1 以外的所有 CPU 核心。

    • CPU 核心 2 和 3 专用于 GNF 虚拟磁盘和网络 I/O。

    注意:

    以前, isolcpus 使用参数“isolcpus=2-23”。现在已更新为“isolcpus=4-23”。有关详细信息,请参阅 KB35301

    要在 Linux GRUB 配置文件中设置参数isolcpus,请按照特定于主机操作系统版本的过程进行操作。对于 RHEL 7,本 Red Hat 文档中将 CPU 与进程调度程序隔离部分介绍了该过程。对于 RHEL 9,有关修改内核命令行的信息在此 Red Hat 文档中进行了描述。

    程序摘要如下:

    1. 编辑 Linux GRUB 文件 /etc/default/grub 以将 isolcpus 参数追加到变量 GRUB_CMDLINE_LINUX,如以下示例所示:

    2. 运行 Linux shell 命令 grub2-mkconfig 以生成更新的 GRUB 文件,如下所示:

      如果您使用的是旧版 BIOS,请发出以下命令:

      如果您使用的是 UEFI,请发出以下命令:

      在 RHEL 9.3 及更高版本中,为旧版 BIOS 或 UEFI 系统发出以下命令:

    3. 重新启动 x86 服务器。

    4. 通过检查 Linux 命令cat /proc/cmdline的输出来验证参数是否已设置,isolcpus如以下示例所示:

对于运行 Ubuntu 20.04 的 x86 服务器,请执行以下步骤:

  1. 确定 x86 服务器上的 CPU 内核数。确保已禁用超线程,如 x86 服务器 CPU BIOS 设置中所述。您可以使用 Linux 命令 lscpu 查找 CPU 内核的总数。

  2. 编辑 /etc/default/grub 文件以将 isolcpus 参数附加到变量 GRUB_CMDLINE_LINUX_DEFAULT,如以下示例所示:

  3. 要更新更改,请运行 update-grub

  4. 重新启动服务器。

  5. isolcpus通过检查 Linux 命令cat /proc/cmdline的输出来验证参数是否已设置。

更新 x86 服务器的英特尔 X710 网卡驱动程序

如果您使用的是英特尔 X710 网卡,请确保在 x86 服务器上安装了最新的驱动程序(2.4.10 或更高版本),并且 X710 网卡固件版本为 18.5.17 或更高版本。

您需要首先识别服务器上的 X710 NIC 接口。例如,这可能是 p3p1

您可以通过运行 Linux 命令 ethtool -i interface来检查网卡驱动程序版本。请参阅以下示例:

有关更新驱动程序的说明,请参阅 英特尔支持页面

注意:

更新主机操作系统可能会替换英特尔 X710 NIC 驱动程序。因此,在更新英特尔 X710 NIC 驱动程序之前,请确保主机操作系统是最新的。

您需要以下包来生成驱动程序:

  • 对于红帽:

    • 内核-devel

    • 开发工具

  • 对于 Ubuntu:

    • 海湾合作委员会

如果您使用的是 RedHat,请运行以下命令来安装软件包:

如果您使用的是 Ubuntu,请运行以下命令来安装软件包:

注意:

更新英特尔 X710 NIC 驱动程序后,您可能会在主机操作系统日志中注意到以下消息:

"i40e: module verification failed: signature and/or required key missing - tainting kernel"

忽略此消息。出现此问题是因为更新的 NIC 驱动程序模块已取代与主机操作系统一起打包的驱动程序的基本版本。

为 JDM 安装其他软件包

x86 服务器必须安装 Red Hat Enterprise Linux (RHEL) 7.3、(RHEL) 9 或 Ubuntu 20.04 LTS。

注意:

x86 服务器必须安装虚拟化包。

对于 RHEL 9,请确保安装了 podman 和容器网络插件。如果没有,请使用 DNF 实用程序安装以下附加软件包,这些软件包可以从 红帽客户门户下载。

  • 豆荚人

  • 容器网络插件

对于 RHEL 7.3,请安装以下附加软件包,这些软件包可以从 红帽客户门户下载。

  • python-psutil-1.2.1-1.el7.x86_64.rpm

  • 净SNMP-5.7.2-24.el7.x86_64.rpm

  • net-snmp-libs-5.7.2-24.el7.x86_64.rpm

  • libvirt-snmp-0.0.3-5.el7.x86_64.rpm

仅适用于 Junos OS 17.4R1 及更低版本以及 18.1R1,如果您运行的是 RHEL 7.3,还要安装以下附加软件包:

  • libstdc++-4.8.5-11.el7.i686.rpm

注意:
  • 显示的软件包版本号是最低版本。更新的版本可能在最新的 RHEL 7.3 和 RHEL 9 修补程序中提供。

  • libstdc++ 包扩展 .i686 指示它是一个 32 位包。

  • 对于 RHEL,我们建议您使用 or yum dnf 命令安装软件包。

For Ubuntu 20.04,安装以下软件包:

  • python-psutil

仅适用于 Junos OS 17.4R1 及更早版本以及 18.1R1,如果您运行的是 Ubuntu,则还要安装以下附加软件包:

  • libstdc++6:i386

注意:
  • 对于 Ubuntu,您可以使用 apt-get 命令安装这些软件包的最新版本。例如,使用:

    • 用于安装最新版本软件包python-psutil的命令apt-get install python-psutil

    • 用于安装最新版本的libstdc++6包的命令apt-get install libstdc++6:i386(扩展:i386指示正在安装的包是 32 位版本)。

完成服务器和路由器之间的连接

在开始安装 JDM 之前,请完成以下步骤:

  • 确保 MX 系列路由器已连接到 x86 服务器,如 连接服务器和路由器中所述。

  • 打开 MX 系列路由器上的两台 x86 服务器和两个路由引擎的电源。

  • 识别两台 x86 服务器上的 Linux 主机管理端口。例如, em1.

  • 确定要为 JDM 和 GNF 管理端口分配的端口。例如, em2em3.

  • 识别连接到 MX 系列路由器控制板的两个 10-Gbps 端口。例如, p3p1p3p2.