在EC2執行個體ENA上啟用增強型聯網 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在EC2執行個體ENA上啟用增強型聯網

Amazon EC2 透過彈性網路介面卡 (ENA) 提供增強的聯網功能。若要使用增強型網路功能,您必須使用包AMI含所需ENA驅動程式的驅動程式,或手動安裝。然後,您可以在執行個體上啟用ENA支援。

若要檢閱版本說明或ENA驅動程式的安裝說明,請參閱與您執行個體作業系統平台相符的索引標籤。

Linux

您可以檢閱下列文件 GitHub:

Windows

您可以從本指南的「管理裝置驅動程式」一節檢閱下列文件:

對於 Nitro 型執行個體,增強型聯網功能會因執行個體類型實作的 Nitro 版本而有所不同。

若要檢閱執行個體的網路規格,請選擇執行個體類型的執行個體系列連結。如果您不確定哪個執行個體系列適用,請參閱 Amazon EC2 執行個體類型指南中的命名慣例

增強型網路的先決條件 ENA

若要使用進行增強型聯網準備ENA,請按如下方式設定您的執行個體:

  • 啟動在AWS 硝基系統上構建的實例

  • 確定該執行個體具有網際網路連線能力。

  • 如果您有要保留的執行個體上的重要資料,則應立即從執行個體建立AMI來備份該資料。更新ENA核心驅動程式並啟用enaSupport屬性可能會導致不相容的執行個體或作業系統無法存取。如果您有較新的備份,發生這些狀況時資料便能獲得保留。

  • Linux 執行個體 — 使用受支援的 Linux 核心版本和受支援的發行版本啟動執行個體,以便自動為您的執行個體啟用ENA增強型聯網。如需詳細資訊,請參閱 ENALinux 核心驅動程式版本說明

  • 視窗執行個體 — 如果執行個體執行的是 Windows 伺服器 2008 R2SP1,請確定具有 SHA-2 個程式碼簽章支援更新

  • 在您選擇的任何電腦AWS Tools for Windows PowerShell上使用 AWS CloudShell AWS Management Console,AWS CLI或安裝並設定或,最好是您的本機桌上型電腦或筆記型電腦。如需詳細資訊,請參閱 訪問 Amazon EC2AWS CloudShell 使用者指南。增強型聯網無法從 Amazon 主EC2控台管理。

測試是否已啟用增強型網路

您可以測試執行個體或您的AMIs.

實例屬性

若要查看執行個體是否設定增強型聯網的 enaSupport 屬性,請使用下列其中一項命令。如果屬性已設定,回應為 true。

  • describe-instances (AWS CLI/AWS CloudShell)

    aws ec2 describe-instances --instance-ids instance_id --query "Reservations[].Instances[].EnaSupport"
  • Get-EC2Instance(視窗工具 PowerShell)

    (Get-EC2Instance -InstanceId instance-id).Instances.EnaSupport
圖片屬性

若要檢查是否AMI已設定增強型網路enaSupport屬性,請使用下列其中一個指令。如果屬性已設定,回應為 true。

  • describe-images (AWS CLI/AWS CloudShell)

    aws ec2 describe-images --image-id ami_id --query "Images[].EnaSupport"
  • Get-EC2Image(視窗工具 PowerShell)

    (Get-EC2Image -ImageId ami_id).EnaSupport
Linux 網路介面驅動程式

使用下列指令來驗證ena核心驅動程式是否正在特定介面上使用,取代您要檢查的介面名稱。如果您使用單一介面 (預設),介面為 eth0。如果作業系統支援可預測的網路名稱,則名稱可能像是 ens5

在下列範例中,不會載入ena核心驅動程式,因為列出的驅動程式為vif

[ec2-user ~]$ ethtool -i eth0 driver: vif version: firmware-version: bus-info: vif-0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no

在此範例中,ena核心驅動程式會以最低建議版本載入。此執行個體已正確設定增強型網路。

[ec2-user ~]$ ethtool -i eth0 driver: ena version: 1.5.0g firmware-version: expansion-rom-version: bus-info: 0000:00:05.0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no

在執行個體上啟用增強型網路

您使用的程序視執行個體的作業系統而定。

Amazon Linux 2 和最新版本的 Amazon Linux AMI 包含增強型聯網所需的核心驅動程式,且已ENA安裝且已啟用ENA支援。因此,如果您在受支援的執行個體類型上啟動具有 Amazon Linux HVM 版本的執行個體,則您的執行個體已啟用增強型聯網功能。如需詳細資訊,請參閱 測試是否已啟用增強型網路

如果您使用舊版 Amazon Linux 啟動執行個體AMI,但尚未啟用增強型聯網,請使用下列程序啟用增強型聯網。

在 Amazon Linux 上啟用增強型聯網 AMI
  1. 連線到您的執行個體。

  2. 從執行個體執行下列命令,以最新的核心驅動程式更新執行個體,包括ena

    [ec2-user ~]$ sudo yum update
  3. 從本機電腦,使用 Amazon EC2 主控台或下列其中一個命令重新啟動執行個體:reboot-instances(AWS CLI)、Restart-EC2Instance(AWS Tools for Windows PowerShell)。

  4. 再次 Connect 至您的執行個體,並使用modinfo ena指令確認ena核心驅動程式已安裝,以及建議的最低版本測試是否已啟用增強型網路

  5. [EBS-backed 執行個體] 在本機電腦上,使用 Amazon EC2 主控台或下列其中一個命令停止執行個體:stop-instances(AWS CLI)、Stop-EC2Instance(AWS Tools for Windows PowerShell)。如果您的執行個體由管理 AWS OpsWorks,您應該在 AWS OpsWorks 主控台中停止執行個體,讓執行個體狀態保持同步。

    [執行個體存放區後端執行個體] 您無法停止執行個體來修改屬性。請改為執行此程序:在 Amazon Linux 上啟用增強型聯網 AMI (執行個體存放區支援執行個體)

  6. 在本機電腦上使用下列其中一個命令啟用增強型聯網屬性。

  7. (選擇性) AMI 從執行個體建立,如中所述創建一個 Amazon 支EBS持 AMI。會AMI繼承執行個體的增強型聯網enaSupport屬性。因此,您可以使用此AMI功能啟動另一個預設啟用增強型聯網的執行個體。

  8. 從您的本機電腦,使用 Amazon EC2 主控台或下列其中一個命令啟動執行個體:start-instances(AWS CLI)、Start-EC2Instance(AWS Tools for Windows PowerShell)。如果您的執行個體由管理 AWS OpsWorks,您應該在 AWS OpsWorks 主控台中啟動執行個體,讓執行個體狀態保持同步。

  9. 使用ethtool -i ethn指令 Connect 至您的執行個體,並確認ena核心驅動程式是否已安裝並載入到網路介面上測試是否已啟用增強型網路

    如果啟用增強型聯網後無法連接至您的執行個體,請參閱 疑難排解 Linux 上的ENA核心驅動程式

在 Amazon Linux 上啟用增強型聯網 AMI (執行個體存放區支援執行個體)

遵循先前的程序,一直進行到您停止執行個體的那個步驟。AMI如中所述建立新的建立執行個體存放區支援 AMI,請務必在註冊時啟用增強型網路屬性AMI。

  • register-image (AWS CLI)

    aws ec2 register-image --ena-support ...
  • Register-EC2Image (AWS Tools for Windows PowerShell)

    Register-EC2Image -EnaSupport $true ...

最新的 Ubuntu HVM AMIs 包括已ENA安裝並啟用ENA支持的增強網絡所需的內核驅動程序。因此,如果您在受支援的執行個體類型HVMAMI上使用最新 Ubuntu 啟動執行個體,則您的執行個體已啟用增強型聯網功能。如需詳細資訊,請參閱 測試是否已啟用增強型網路

如果您使用舊版AMI執行個體啟動執行個體,但尚未啟用增強型網路功能,您可以安裝linux-aws核心套件以取得最新的增強型網路驅動程式,並更新必要的屬性。

安裝 linux-aws 核心套件 (Ubuntu 16.04 或更新版本)

Ubuntu 16.04 和 18.04 隨附 Ubuntu 自訂核心 (linux-aws 核心套件)。若要使用不同的核心,請聯絡 AWS Support

安裝 linux-aws 核心套件 (Ubuntu Trusty 14.04)
  1. 連線到您的 執行個體。

  2. 更新套件快取和套件。

    ubuntu:~$ sudo apt-get update && sudo apt-get upgrade -y linux-aws
    重要

    如果更新程序期間提示您安裝 grub,請用 /dev/xvda 安裝 grub,然後選擇保留目前版本的 /boot/grub/menu.lst

  3. [EBS-backed 執行個體] 在本機電腦上,使用 Amazon EC2 主控台或下列其中一個命令停止執行個體:stop-instances(AWS CLI)、Stop-EC2Instance(AWS Tools for Windows PowerShell)。如果您的執行個體由管理 AWS OpsWorks,您應該在 AWS OpsWorks 主控台中停止執行個體,讓執行個體狀態保持同步。

    [執行個體存放區後端執行個體] 您無法停止執行個體來修改屬性。請改為執行此程序:在 Ubuntu 上啟用增強型聯網 (執行個體後端執行個體)

  4. 在本機電腦上使用下列其中一個命令啟用增強型聯網屬性。

  5. (選擇性) AMI 從執行個體建立,如中所述創建一個 Amazon 支EBS持 AMI。會AMI繼承執行個體的增強型聯網enaSupport屬性。因此,您可以使用此AMI功能啟動另一個預設啟用增強型聯網的執行個體。

  6. 從您的本機電腦,使用 Amazon EC2 主控台或下列其中一個命令啟動執行個體:start-instances(AWS CLI)、Start-EC2Instance(AWS Tools for Windows PowerShell)。如果您的執行個體由管理 AWS OpsWorks,您應該在 AWS OpsWorks 主控台中啟動執行個體,讓執行個體狀態保持同步。

在 Ubuntu 上啟用增強型聯網 (執行個體後端執行個體)

遵循先前的程序,一直進行到您停止執行個體的那個步驟。AMI如中所述建立新的建立執行個體存放區支援 AMI,請務必在註冊時啟用增強型網路屬性AMI。

  • register-image (AWS CLI)

    aws ec2 register-image --ena-support ...
  • Register-EC2Image (AWS Tools for Windows PowerShell)

    Register-EC2Image -EnaSupport $true ...

RHEL、SUSE Linux 企業伺服器和 CentOS 的最新AMIs版本包括增強網路所需的核心驅動程式,ENA並且已啟用ENA支援。因此,如果您使用支援執行個體類型的最新執AMI行個體啟動執行個體,則您的執行個體已啟用增強型聯網功能。如需詳細資訊,請參閱 測試是否已啟用增強型網路

下列程序提供在 Amazon Linux AMI 或 Ubuntu 以外的 Linux 發行版上啟用增強型聯網的一般步驟。如需像是詳細命令語法、檔案位置或套件和工具支援等詳細資訊,請參閱 Linux 發行版本的文件。

在 Linux 上啟用增強型聯網
  1. 連線到您的執行個體。

  2. 從 GitHub at 複製執行個體上ena核心驅動程式的原始程式碼https://github.com/amzn/amzn-drivers。SUSELinux 企業伺服器 12 SP2 及更新版本預設包含 ENA 2.02,因此您不需要下載和編譯ENA驅動程式。 對於 SUSE Linux 企業服務器 12 SP2 及更高版本,您應該提出一個請求,以將所需的驅動程序版本添加到庫存內核中)。

    git clone https://github.com/amzn/amzn-drivers
  3. 在執行個體上編譯並安裝ena核心驅動程式。這些步驟視 Linux 發行版本而定。如需有關在 RHEL 上編譯核心驅動程式的詳細資訊,請參閱如何在執行的 Amazon EC2 執行個體上安裝最新的ENS驅動程式以獲得增強的網路支援RHEL?

  4. 執行命sudo depmod令以更新核心驅動程式相依性。

  5. 更新您initramfs的執行個體,以確保新的核心驅動程式會在開機時載入。例如,如果您的發行版本支援 dracut,您可以使用下列命令。

    dracut -f -v
  6. 判斷系統是否依預設使用可預測的網路介面名稱。使用 systemdudev 197 或以上版本的系統可重新命名乙太網路裝置,但不保證單一網路介面會命名為 eth0。該行為會造成連線至執行個體時發生問題。如需詳細資訊及查看其他的組態選項,請參閱 freedesktop.org 網站上的可預測的網路介面名稱

    1. 您可以使用以下命令檢查RPM基於系統的systemdudev版本。

      rpm -qa | grep -e '^systemd-[0-9]\+\|^udev-[0-9]\+' systemd-208-11.el7_0.2.x86_64

      在上述的 Red Hat Enterprise Linux 7 範例中,systemd 版本為 208,因此可預測的網路介面名稱已停用。

    2. 若要停用可預測網路介面名稱,請將 net.ifnames=0 選項新增至 GRUB_CMDLINE_LINUX/etc/default/grub 行中。

      sudo sed -i '/^GRUB\_CMDLINE\_LINUX/s/\"$/\ net\.ifnames\=0\"/' /etc/default/grub
    3. 重建 grub 組態檔案。

      sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  7. [EBS-backed 執行個體] 在本機電腦上,使用 Amazon EC2 主控台或下列其中一個命令停止執行個體:stop-instances(AWS CLI)、Stop-EC2Instance(AWS Tools for Windows PowerShell)。如果您的執行個體由管理 AWS OpsWorks,您應該在 AWS OpsWorks 主控台中停止執行個體,讓執行個體狀態保持同步。

    [執行個體存放區後端執行個體] 您無法停止執行個體來修改屬性。請改為執行此程序:在 Linux 上啟用增強型聯網 (執行個體存放區後端執行個體)

  8. 在本機電腦上使用下列其中一個命令啟用增強型聯網的 enaSupport 屬性:

  9. (選擇性) AMI 從執行個體建立,如中所述創建一個 Amazon 支EBS持 AMI。會AMI繼承執行個體的增強型聯網enaSupport屬性。因此,您可以使用此AMI功能啟動另一個預設啟用增強型聯網的執行個體。

    如果您的執行個體作業系統包含/etc/udev/rules.d/70-persistent-net.rules檔案,您必須先刪除該檔案,然後再建立AMI. 此檔案包含原始執行個體的乙太網路介面卡MAC位址。如果其他執行個體使用此檔案開機,作業系統將無法找到設備,且 eth0 可能會失敗,因而造成開機問題。這個檔案會在下次開機週期重新產生,而任何從此啟動的執行個體都會AMI建立自己的檔案版本。

  10. 從您的本機電腦,使用 Amazon EC2 主控台或下列其中一個命令啟動執行個體:start-instances(AWS CLI)、Start-EC2Instance(AWS Tools for Windows PowerShell)。如果您的執行個體由管理 AWS OpsWorks,您應該在 AWS OpsWorks 主控台中啟動執行個體,讓執行個體狀態保持同步。

  11. (選擇性) Connect 至執行個體,並確認已安裝核心驅動程式。

    如果啟用增強型聯網後無法連接至您的執行個體,請參閱 疑難排解 Linux 上的ENA核心驅動程式

在 Linux 上啟用增強型聯網 (執行個體存放區後端執行個體)

遵循先前的程序,一直進行到您停止執行個體的那個步驟。AMI如中所述建立新的建立執行個體存放區支援 AMI,請務必在註冊時啟用增強型網路屬性AMI。

此方法僅用於測試和意見回饋用途。不適用於生產部署。如需生產部署,請參閱Ubuntu

重要

使用無DKMS效訂閱的支援合約。它不應該用於生產部署。

若要ENA在 Ubuntu (EBS支援的執行個體) 上啟用增強型網路功能
  1. 請遵循Ubuntu中的步驟 1 和 2。

  2. 安裝build-essential套件以編譯核心驅動程式和dkms套件,以便在每次更新ena核心時重建核心驅動程式。

    ubuntu:~$ sudo apt-get install -y build-essential dkms
  3. 從 GitHub 位置複製執行個體上ena核心驅動程式的原始碼https://github.com/amzn/amzn-drivers

    ubuntu:~$ git clone https://github.com/amzn/amzn-drivers
  4. amzn-drivers套件移至/usr/src/目錄,DKMS以便在每個核心更新中尋找並建置套件。附加原始碼版本編號 (目前的版本編號可在版本備註中找到) 到目錄名稱。例如,下列範例顯示 1.0.0 版本。

    ubuntu:~$ sudo mv amzn-drivers /usr/src/amzn-drivers-1.0.0
  5. 使用下列值建立DKMS組態檔案,取代您的版本ena

    建立檔案。

    ubuntu:~$ sudo touch /usr/src/amzn-drivers-1.0.0/dkms.conf

    編輯檔案並新增下列值。

    ubuntu:~$ sudo vim /usr/src/amzn-drivers-1.0.0/dkms.conf PACKAGE_NAME="ena" PACKAGE_VERSION="1.0.0" CLEAN="make -C kernel/linux/ena clean" MAKE="make -C kernel/linux/ena/ BUILD_KERNEL=${kernelver}" BUILT_MODULE_NAME[0]="ena" BUILT_MODULE_LOCATION="kernel/linux/ena" DEST_MODULE_LOCATION[0]="/updates" DEST_MODULE_NAME[0]="ena" AUTOINSTALL="yes"
  6. 使用. 在執行個體上新增、建置及安裝ena核心驅動程式DKMS。

    將核心驅動程式新增至DKMS。

    ubuntu:~$ sudo dkms add -m amzn-drivers -v 1.0.0

    使用dkms指令建置核心驅動程式。

    ubuntu:~$ sudo dkms build -m amzn-drivers -v 1.0.0

    使用安裝核心驅動程式dkms

    ubuntu:~$ sudo dkms install -m amzn-drivers -v 1.0.0
  7. 重建initramfs以便在開機時載入正確的核心驅動程式。

    ubuntu:~$ sudo update-initramfs -u -k all
  8. 請使用中測試是否已啟用增強型網路的 modinfo ena 指令,確認ena核心驅動程式是否已安裝。

    ubuntu:~$ modinfo ena filename: /lib/modules/3.13.0-74-generic/updates/dkms/ena.ko version: 1.0.0 license: GPL description: Elastic Network Adapter (ENA) author: Amazon.com, Inc. or its affiliates srcversion: 9693C876C54CA64AE48F0CA alias: pci:v00001D0Fd0000EC21sv*sd*bc*sc*i* alias: pci:v00001D0Fd0000EC20sv*sd*bc*sc*i* alias: pci:v00001D0Fd00001EC2sv*sd*bc*sc*i* alias: pci:v00001D0Fd00000EC2sv*sd*bc*sc*i* depends: vermagic: 3.13.0-74-generic SMP mod_unload modversions parm: debug:Debug level (0=none,...,16=all) (int) parm: push_mode:Descriptor / header push mode (0=automatic,1=disable,3=enable) 0 - Automatically choose according to device capability (default) 1 - Don't push anything to device memory 3 - Push descriptors and header buffer to device memory (int) parm: enable_wd:Enable keepalive watchdog (0=disable,1=enable,default=1) (int) parm: enable_missing_tx_detection:Enable missing Tx completions. (default=1) (int) parm: numa_node_override_array:Numa node override map (array of int) parm: numa_node_override:Enable/Disable numa node override (0=disable) (int)
  9. 繼續執行Ubuntu中的步驟 3。

如果您啟動執行個體,且其尚未啟用增強型聯網,您必須在執行個體上下載並安裝必要的網路轉接器驅動程式,然後設定 enaSupport 執行個體屬性,以啟動增強型聯網。

啟用增強型聯網
  1. 連線到您的執行個體,並以本機管理員登入。

  2. [僅限 Windows 伺服器 2016 年和 2019 年] 安裝驅動程式後,執行下列EC2LaunchPowerShell 指令碼以設定執行個體。

    PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
  3. 在執行個體上,安裝驅動程式,如下所示:

    1. 將最新的驅動程式下載到執行個體。

    2. 將 zip 封存檔解壓縮。

    3. 通過運行腳本安裝驅動程install.ps1PowerShell 序。

      注意

      如果您收到執行政策錯誤,請將政策設定為 Unrestricted (預設設定為 RestrictedRemoteSigned)。在命令列中執行Set-ExecutionPolicy -ExecutionPolicy Unrestricted,然後再次執行指令install.ps1 PowerShell 碼。

  4. 在本機電腦上,使用 Amazon EC2 主控台或下列其中一個命令停止執行個體:stop-instances(AWS CLI/AWS CloudShell)、Stop-EC2Instance(AWS Tools for Windows PowerShell)。如果您的執行個體由管理 AWS OpsWorks,您應該在 AWS OpsWorks 主控台中停止執行個體,讓執行個體狀態保持同步。

  5. 在執行個體上啟用ENA支援,如下所示:

    1. 在您的本機電腦上,EC2執行下列其中一個命令,以檢查執行個體上的執行個體ENA支援屬性。如果此屬性未啟用,輸出會是「[]」或空白。EnaSupport 預設會設定為 false

      • describe-instances (AWS CLI/AWS CloudShell)

        aws ec2 describe-instances --instance-ids instance_id --query "Reservations[].Instances[].EnaSupport"
      • Get-EC2Instance(視窗工具 PowerShell)

        (Get-EC2Instance -InstanceId instance-id).Instances.EnaSupport
    2. 若要啟用ENA支援,請執行下列其中一個指令:

      • modify-instance-attribute (AWS CLI/AWS CloudShell)

        aws ec2 modify-instance-attribute --instance-id instance_id --ena-support
      • Edit-EC2InstanceAttribute (AWS Tools for Windows PowerShell)

        Edit-EC2InstanceAttribute -InstanceId instance_id -EnaSupport $true

      如果您在重新啟動執行個體時遇到問題,也可以使用下列其中一個指令停用ENA支援:

      • modify-instance-attribute (AWS CLI/AWS CloudShell)

        aws ec2 modify-instance-attribute --instance-id instance_id --no-ena-support
      • Edit-EC2InstanceAttribute (AWS Tools for Windows PowerShell)

        Edit-EC2InstanceAttribute -InstanceId instance_id -EnaSupport $false
    3. 如先前所示,使用 truedescribe-instances,確認屬性已設定為 Get-EC2Instance。您現在應該會看到下列輸出:

      [ true ]
  6. 從您的本機電腦,使用 Amazon EC2 主控台或下列其中一個命令啟動執行個體:start-instances(AWS CLI/AWS CloudShell)、Start-EC2Instance(AWS Tools for Windows PowerShell)。如果您的執行個體由管理 AWS OpsWorks,您應該使用 AWS OpsWorks 主控台啟動執行個體,讓執行個體狀態保持同步。

  7. 在執行個體上,驗證ENA驅動程式是否已安裝並啟用,如下所示:

    1. 用滑鼠右鍵按一下網路圖示,然後選擇 Open Network and Sharing Center (開啟網路和共用中心)

    2. 選擇乙太網路卡 (例如,Ethernet 2)。

    3. 請選擇 Details (詳細資訊)。針對 Network Connection Details (網路連線詳細資料),檢查 Description (描述) 是否為 Amazon Elastic Network Adapter (Amazon 彈性網路轉接器)

  8. (選擇性) AMI 從執行個體建立。會AMI繼承執行個體的enaSupport屬性。因此,您可以使用它AMI來啟動另一個預設為ENA啟用的執行個體。