Junos 노드 슬라이싱 설정 준비
이 섹션의 주제는 외부 서버 모델을 사용하여 설정된 Junos 노드 슬라이싱에만 적용됩니다. 섀시 내 Junos 노드 슬라이싱의 경우, 섀시 내 모드에서 작동하도록 MX 시리즈 라우터 구성으로 진행하십시오.
Junos Node Slicing(외부 서버 모델)을 설정하기 전에 서버와 라우터 연결, 추가 패키지 설치, x86 서버 Linux GRUB 구성, x86 서버 CPU의 BIOS 설정과 같은 몇 가지 준비 단계를 수행해야 합니다.
서버와 라우터 연결
Junos Node Slicing을 설정하려면 한 쌍의 외부 x86 서버를 MX 시리즈 라우터에 직접 연결해야 합니다. Linux 호스트를 위한 관리 포트 외에, 각 서버에는 JDM 및 GNF VM에 대한 관리 연결을 각각 제공하기 위한 2개의 추가 포트와 MX 시리즈 라우터에 연결하기 위한 2개의 포트가 필요합니다.
MX 시리즈 라우터에서 Junos Node Slicing이 활성화된 경우 루프백 케이블을 외부 CB 포트에 연결하지 마십시오. 또한 외부 CB 포트가 다른 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
따르면 x86 서버의 , em2
, 및 em3
는 각각 Linux 호스트, JDM 및 GNF의 관리에 사용되는 포트입니다. p3p1
p3p2
각 서버에는 MX 시리즈 라우터의 컨트롤 보드에 연결된 두 개의 10Gbps 포트가 있습니다.
서버의 인터페이스 이름(예: 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(Control Board-Routing Engine)에서 이러한 포트를 확인합니다.
x86 서버 CPU BIOS 설정
Junos Node Slicing의 경우 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 Node Slicing에서 각 GNF VM에는 전용 CPU 코어가 할당됩니다. 이 할당은 JDM(Juniper Device Manager)에 의해 관리됩니다. JDM은 각 x86 서버에서 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'으로 설정해야 합니다(GNF VM에서 사용할 수 있도록 코어 0, 1, 2 및 3 이외의 모든 CPU 코어 격리). 매개변수는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
호스트 OS 버전과 관련된 절차를 따릅니다. RHEL 7의 경우 절차는 이 Red Hat 문서의 프로세스 스케줄러에서 CPU 격리 섹션에 설명되어 있습니다. RHEL 9의 경우 커널 명령줄 수정에 대한 정보는 이 Red Hat 문서에 설명되어 있습니다.절차 요약은 다음과 같습니다.
다음 예제와 같이 Linux GRUB 파일 /etc/default/grub 을 편집하여 변수 GRUB_CMDLINE_LINUX에 매개 변수를 추가합니다
isolcpus
.GRUB_CMDLINE_LINUX= "crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet
isolcpus=4-23
”Linux 셸 명령을
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 서버를 다시 부팅합니다.
isolcpus
다음 예와 같이 Linux 명령cat /proc/cmdline
의 출력을 확인하여 매개변수가 설정되었는지 확인합니다.#
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 서버용 Intel X710 NIC 드라이버 업데이트
Intel 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
...
드라이버 업데이트에 대한 지침은 인텔 지원 페이지를 참조하십시오.
호스트 OS를 업데이트하면 Intel X710 NIC 드라이버를 대체할 수 있습니다. 따라서 Intel X710 NIC 드라이버를 업데이트하기 전에 호스트 OS가 최신 상태인지 확인하십시오.
드라이버를 빌드하려면 다음 패키지가 필요합니다.
RedHat의 경우:
커널 개발
개발 도구
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
Intel X710 NIC 드라이버를 업데이트한 후 호스트 OS 로그에 다음 메시지가 표시될 수 있습니다.
"i40e: module verification failed: signature and/or required key missing - tainting kernel"
이 메시지를 무시하십시오. 업데이트된 NIC 드라이버 모듈이 호스트 OS와 함께 패키지된 드라이버의 기본 버전을 대체했기 때문에 나타납니다.
또한보십시오
JDM용 추가 패키지 설치
x86 서버에는 RHEL(Red Hat Enterprise Linux) 7.3, (RHEL) 9 또는 Ubuntu 20.04 LTS가 설치되어 있어야 합니다.
x86 서버에는 가상화 패키지가 설치되어 있어야 합니다.
RHEL 9의 경우 podman 및 containernetworking-plugins 가 설치되어 있는지 확인합니다. 그렇지 않은 경우 DNF 유틸리티를 사용하여 Red Hat 고객 포털에서 다운로드할 수 있는 다음 추가 패키지를 설치합니다.
-
포드맨
-
containernetworking-plugins
RHEL 7.3의 경우 Red Hat 고객 포털에서 다운로드할 수 있는 다음 추가 패키지를 설치합니다.
-
파이썬-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 패치에서 사용할 수 있습니다.
-
libstdc++ 패키지 확장
.i686
은 32비트 패키지임을 나타냅니다. -
RHEL의 경우 또는
dnf
명령을 사용하여yum
패키지를 설치하는 것이 좋습니다.
For Ubuntu 20.04에서 다음 패키지를 설치합니다.
-
파이썬-psutil
Junos OS 릴리스 17.4R1 및 이전 버전에만 해당되며, 18.1R1의 경우 Ubuntu를 실행하는 경우 다음 추가 패키지도 설치합니다.
-
libstdc++6:i386
-
Ubuntu의
apt-get
경우 명령을 사용하여 이러한 패키지의 최신 버전을 설치할 수 있습니다. 예를 들어 다음을 사용합니다.-
최신 버전의 패키지를 설치하는 명령
apt-get install python-psutil
입니다python-psutil
. -
최신 버전의
libstdc++6
패키지를 설치하는 명령apt-get install libstdc++6:i386
입니다(확장:i386
은 설치 중인 패키지가 32비트 버전임을 나타냄).
-
서버와 라우터 간의 연결 완료
JDM 설치를 시작하기 전에 다음 단계를 완료하십시오.
서버와 라우터 연결에 설명된 대로 MX 시리즈 라우터가 x86 서버에 연결되어 있는지 확인합니다.
두 개의 x86 서버와 MX 시리즈 라우터의 라우팅 엔진의 전원을 켭니다.
두 x86 서버에서 Linux 호스트 관리 포트를 식별합니다. 예를 들어,
em1
.JDM 및 GNF 관리 포트에 할당할 포트를 식별합니다. 예를 들어,
em2
및em3
.MX 시리즈 라우터의 컨트롤 보드에 연결된 두 개의 10Gbps 포트를 식별합니다. 예를 들어,
p3p1
및p3p2
.