准备 Junos 节点切片设置
本部分中的主题仅适用于使用外部服务器模型设置的 Junos 节点切片。对于机箱内 Junos 节点切片,请继续转到将 MX 系列路由器配置为在机箱内模式下运行。
在设置 Junos 节点切片(外部服务器型号)之前,您需要执行一些准备步骤,例如连接服务器和路由器、安装其他软件包、配置 x86 服务器 Linux GRUB 以及设置 x86 服务器 CPU 的 BIOS。
连接服务器和路由器
要设置 Junos 节点切片,您必须将一对外部 x86 服务器直接连接到 MX 系列路由器。除了 Linux 主机的管理端口外,每台服务器还需要两个额外的端口分别用于为 JDM 和 GNF VM 提供管理连接,以及两个端口用于连接到 MX 系列路由器。
-
当 MX 系列路由器上启用了 Junos 节点切片时,请勿将环路电缆连接到外部控制板端口。此外,请确保外部控制板端口未连接到另一个控制板的外部端口。
-
为了防止主机服务器受到任何 SSH 暴力攻击,我们建议您在主机服务器上添加 IPtables 规则。下面是一个示例:
iptables -N SSH_CONNECTIONS_LIMIT iptables -A INPUT -i jmgmt0 -p tcp -m tcp --dport 22 -m state --state NEW -j SSH_CONNECTIONS_LIMIT iptables -A SSH_CONNECTIONS_LIMIT -m recent --set --name SSH --rsource iptables -A SSH_CONNECTIONS_LIMIT -m recent --update --seconds 120 --hitcount 10 --name SSH --rsource -j DROP iptables -A SSH_CONNECTIONS_LIMIT -j ACCEPT
上例中的规则用于对传入 SSH 连接进行速率限制。它允许您在进行特定次数的 SSH 尝试时,在一段时间内阻止来自远程 IP 的连接。如上例所示,尝试 10 次后,来自远程 IP 的连接将被阻止 120 秒。
图 1 显示了 MX2020 路由器如何连接到一对 x86 外部服务器。
根据图 1 中的示例, em1em2em3 x86 服务器上分别是用于管理 Linux 主机、JDM 和 GNF 的端口。 p3p1 p3p2每台服务器上都有两个 10 Gbps 端口,它们连接到 MX 系列路由器的控制板。
要在控制板上启用 XGE 端口以进行 Junos 节点切片,必须配置 set chassis network-slices 或 set chassis network-slices guest-network-functions。
服务器上的接口名称(如 em1) p3p1 可能因服务器硬件配置而异。
有关 图 1 中提到的 MX 系列路由器控制板 (控制板) 的 XGE 端口的更多信息,请参阅:
-
SCBE2-MX 说明 (适用于 MX960 和 MX480)
注意:XGE 端口号未在 SCBE2 上标记。在垂直定向的 SCBE2 上,上端口为 XGE-0,下端口为 XGE-1。在水平方向的 SCBE2 上,左侧端口为 XGE-0,右侧端口为 XGE-1。
-
REMX2K-X8-64G 和 REMX2K-X8-64G-LT 控制板-RE 说明 (适用于 MX2010 和 MX2020)
使用命令 show chassis ethernet-switch 查看这些 XGE 端口。在 MX960 上的命令输出中,请参阅端口号 24 并 26 查看 SCBE2 上的这些端口。在 MX2010 和 MX2020 上的命令输出中,请参阅端口号 26 ,并在 27 控制板路由引擎 (控制板-RE) 上查看这些端口。
x86 服务器 CPU BIOS 设置
对于 Junos 节点切片,应设置 x86 服务器 CPU 的 BIOS,如下所示:
超线程被禁用。
CPU 内核始终以其额定频率运行。
CPU 内核设置为通过限制 C 状态的使用来减少抖动。
要查找服务器上 CPU 内核的额定频率,请运行 Linux host 命令 lscpu,然后检查字段 Model name的值。请参见以下示例:
Linux server0:~# lscpu
..
Model name: Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
..
要查找 CPU 内核当前运行的频率,请运行 Linux host 命令 grep MHz /proc/cpuinfo 并检查每个 CPU 内核的值。
在将 BIOS 设置为在其额定频率下运行 CPU 内核的服务器上,CPU 内核的观察值将都与额定频率匹配(或非常接近它),如以下示例所示。
Linux server0:~# grep MHz /proc/cpuinfo
…
cpu MHz : 2499.902
cpu MHz : 2500.000
cpu MHz : 2500.000
cpu MHz : 2499.902
…
在未将 BIOS 设置为以额定频率运行 CPU 内核的服务器上,观察到的 CPU 内核值与额定频率不匹配,并且这些值也可能随时间变化(您可以通过重新运行命令来检查这一点)。
Linux server0:~# grep MHz /proc/cpuinfo
…
cpu MHz : 1200.562
cpu MHz : 1245.468
cpu MHz : 1217.625
cpu MHz : 1214.156
要将 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 服务器 Linux GRUB 配置
在 Junos 节点切片中,系统会为每个 GNF 虚拟机分配专用 CPU 内核。此分配由瞻博网络设备管理器 (JDM) 管理。在每台 x86 服务器上,JDM 要求将除 CPU 内核 0 和 1 之外的所有 CPU 内核保留用于 Junos 节点切片,实际上,这些内核与其他应用程序隔离。CPU 核心 2 和 3 专用于 GNF 虚拟磁盘和网络 I/O。CPU 核心 4 及更高版本可用于分配给 GNF VM。要保留这些 CPU 内核,您必须在 Linux GRUB 配置中设置 isolcpus 参数,如以下过程所述:
对于运行 Red Hat Enterprise Linux (RHEL) 7.3 的 x86 服务器,请执行以下步骤:
确定 x86 服务器上的 CPU 内核数。确保超线程已禁用,如 x86 服务器 CPU BIOS 设置中所述。您可以使用 Linux 命令
lscpu查找 CPU 核心的总数,如以下示例所示:Linux server0:~#
lscpu… Cores per socket: 12 Sockets: 2 …这里有 24 个内核 (12 x 2)。CPU 内核编号为内核 0 到内核 23。
根据此示例,
isolcpus必须将参数设置为“isolcpus=4-23”(隔离除核心 0、1、2 和 3 之外的所有 CPU 核心,以供 GNF VM 使用)。由于以下原因,参数isolcpus设置为“isolcpus=4-23”:在每台 x86 服务器上,JDM 要求将除 CPU 内核 0 和 1 之外的所有 CPU 内核保留用于 Junos 节点切片。
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 文档中进行了描述。程序摘要如下:
编辑 Linux GRUB 文件 /etc/default/grub 以将参数追加
isolcpus到变量 GRUB_CMDLINE_LINUX,如以下示例所示:GRUB_CMDLINE_LINUX= "crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet
isolcpus=4-23”运行 Linux shell 命令
grub2-mkconfig以生成更新的 GRUB 文件,如下所示:如果您使用的是旧版 BIOS,请发出以下命令:
# grub2-mkconfig -o /boot/grub2/grub.cfg如果使用的是 UEFI,请发出以下命令:
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg在 RHEL 9.3 及更高版本中,为旧版 BIOS 或 UEFI 系统发出以下命令:
# grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline重新启动 x86 服务器。
通过检查 Linux 命令
cat /proc/cmdline的输出,验证isolcpus现在是否已设置参数,如以下示例所示:#
cat /proc/cmdlineBOOT_IMAGE=/vmlinuz-3.10.0-327.36.3.el7.x86_64 … quiet isolcpus=4-23
对于运行 Ubuntu 24.04 的 x86 服务器,请执行以下步骤:
确定 x86 服务器上的 CPU 内核数。确保超线程已禁用,如 x86 服务器 CPU BIOS 设置中所述。您可以使用 Linux 命令
lscpu查找 CPU 内核总数。编辑 /etc/default/grub 文件以将 isolcpus 参数附加到变量 GRUB_CMDLINE_LINUX_DEFAULT,如以下示例所示:
GRUB_CMDLINE_LINUX_DEFAULT= "intel_pstate=disable processor.ignore_ppc=1
isolcpus=4-23"要更新更改,请运行
update-grub。重新启动服务器。
通过检查 Linux 命令
cat /proc/cmdline的输出来验证isolcpus参数是否已设置。
更新适用于 x86 服务器的英特尔 x710 NIC 驱动程序
如果您使用的是英特尔 X710 NIC,请确保在 x86 服务器上安装了最新的驱动程序(2.4.10 或更高版本),并且 X710 NIC 固件版本为 18.5.17 或更高版本。
您需要首先识别服务器上的 X710 NIC 接口。例如,这可能是 p3p1。
您可以通过运行 Linux 命令 ethtool -i interface来检查 NIC 驱动程序版本。请参见以下示例:
root@Linux server0# ethtool -i p3p1
driver: i40e
version: 2.4.10
firmware-version: 5.05 0x80002899 18.5.17
...
有关更新驱动程序的说明,请参阅 英特尔支持页面 。
更新主机操作系统可能会替换英特尔 X710 NIC 驱动程序。因此,在更新英特尔 X710 NIC 驱动程序之前,请确保主机操作系统是最新的。
您需要以下软件包来生成驱动程序:
对于 RedHat:
内核开发
开发工具
对于 Ubuntu:
使
海湾合作委员会
如果您使用的是 RedHat,请运行以下命令来安装软件包:
root@Linux server0#yum install kernel-develroot@Linux server0#yum group install "Development Tools"
如果您使用的是 Ubuntu,请运行以下命令来安装软件包:
root@Linux server0#apt-get install makeroot@Linux server0#apt-get install gcc
更新英特尔 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.4 或 Ubuntu 24.04 LTS。
x86 服务器必须安装虚拟化包。
对于 RHEL 9.4,请确保已安装 podman 和 containernetworking-plugins。如果没有,请使用 DNF 实用程序安装以下附加软件包,这些软件包可以从 Red Hat 客户门户下载。
-
播客
-
容器网络插件
对于 RHEL 7.3,请安装以下附加软件包,可从 Red Hat 客户门户下载。
-
python-psutil-1.2.1-1.el7.x86_64.rpm
-
net-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.4 补丁中可能会提供较新的版本。
-
libstdc++ 包扩展
.i686表明它是一个 32 位包。 -
对于 RHEL,我们建议您使用 or
dnf命令安装yum软件包。
For Ubuntu 24.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 管理端口分配的端口。例如,
em2和em3。识别连接到 MX 系列路由器上控制板的两个 10-Gbps 端口。例如,
p3p1和p3p2。