准备 Junos 节点切片设置
本节中的主题仅适用于使用外部服务器模型设置的 Junos 节点切片。对于机箱内 Junos 节点切片,请继续执行 将 MX 系列路由器配置为在机箱内模式下运行。
在设置 Junos 节点切片(外部服务器模型)之前,您需要执行一些准备步骤,例如连接服务器和路由器、安装其他软件包、配置 x86 服务器 Linux GRUB 以及设置 x86 服务器 CPU 的 BIOS。
连接服务器和路由器
要设置 Junos 节点切片,必须将一对外部 x86 服务器直接连接到 MX 系列路由器。除了 Linux 主机的管理端口外,每台服务器还需要两个附加端口,分别用于为 JDM 和 GNF VM 提供管理连接,以及两个用于连接到 MX 系列路由器的端口。
在 MX 系列路由器上启用 Junos 节点切片时,请勿将环路电缆连接到外部 CB 端口。另外,请确保外部控制板端口未连接到其他控制板的外部端口。
为防止主机服务器遭受任何 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 中的示例,em1
、 和 em2
em3
x86 服务器上的端口分别用于管理 Linux 主机、JDM 和 GNF。 p3p1
p3p2
每台服务器上都有两个 10-Gbps 端口,它们连接到 MX 系列路由器的控制板。
服务器上的接口名称(如 em1
) p3p1
可能因服务器硬件配置而异。
有关 图 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 上的命令输出中,请参阅端口号 24
并 26
查看 SCBE2 上的这些端口。在 MX2010 和 MX2020 上的命令输出中,请参阅端口号 26
, 27
并在控制板路由引擎 (CB-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 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 服务器,请执行以下步骤:
确定 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 要求为 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 文档中进行了描述。程序摘要如下:
编辑 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/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-327.36.3.el7.x86_64 … quiet isolcpus=4-23
对于运行 Ubuntu 20.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
。重新启动服务器。
isolcpus
通过检查 Linux 命令cat /proc/cmdline
的输出来验证参数是否已设置。
更新 x86 服务器的英特尔 X710 网卡驱动程序
如果您使用的是英特尔 X710 网卡,请确保在 x86 服务器上安装了最新的驱动程序(2.4.10 或更高版本),并且 X710 网卡固件版本为 18.5.17 或更高版本。
您需要首先识别服务器上的 X710 NIC 接口。例如,这可能是 p3p1
。
您可以通过运行 Linux 命令 ethtool -i interface
来检查网卡驱动程序版本。请参阅以下示例:
root@Linux server0# ethtool -i p3p1
driver: i40e
version: 2.4.10
firmware-version: 5.05 0x80002899 18.5.17
...
有关更新驱动程序的说明,请参阅 英特尔支持页面 。
更新主机操作系统可能会替换英特尔 X710 NIC 驱动程序。因此,在更新英特尔 X710 NIC 驱动程序之前,请确保主机操作系统是最新的。
您需要以下包来生成驱动程序:
对于红帽:
内核-devel
开发工具
对于 Ubuntu:
做
海湾合作委员会
如果您使用的是 RedHat,请运行以下命令来安装软件包:
root@Linux server0#yum install kernel-devel
root@Linux server0#yum group install "Development Tools"
如果您使用的是 Ubuntu,请运行以下命令来安装软件包:
root@Linux server0#apt-get install make
root@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 或 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 管理端口分配的端口。例如,
em2
和em3
.识别连接到 MX 系列路由器控制板的两个 10-Gbps 端口。例如,
p3p1
和p3p2
.