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

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

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

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

若要檢閱 ENA 驅動程式的版本備註或安裝指示,請參閱符合您執行個體作業系統平台的標籤。

Linux

您可以在 GitHub 上檢閱下列文件:

Windows

您可以從本指南的管理裝置驅動程式區段檢閱下列文件:

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

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

使用 ENA 增強型聯網的先決條件

若要準備使用 ENA 介面的增強型聯網,請依下列方式設定您的執行個體:

  • 啟動 Nitro 型執行個體

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

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

  • Linux 執行個體:使用支援版本的 Linux 核心和支援的發行版本,啟動執行個體,即可讓執行個體自動啟用 ENA 增強型聯網。如需詳細資訊,請參閱 ENA Linux 核心驅動程式版本備註

  • Windows 執行個體:如果執行個體正在執行 Windows 伺服器 2008 R2 SP1,請確定已有 SHA-2 程式碼簽署支援更新

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

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

您可以測試您的執行個體或 AMI 中是否已啟用增強型聯網。

執行個體屬性

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

  • describe-instances (AWS CLI)

    aws ec2 describe-instances --instance-ids instance_id --query "Reservations[].Instances[].EnaSupport"
  • Get-EC2Instance (Tools for Windows PowerShell)

    (Get-EC2Instance -InstanceId instance-id).Instances.EnaSupport
映像屬性

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

  • describe-images (AWS CLI)

    aws ec2 describe-images --image-id ami_id --query "Images[].EnaSupport"
  • Get-EC2Image (Tools for Windows PowerShell)

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

請用下列命令確認 ena 核心驅動程式用於特定介面,並將介面名稱換成您想要檢查的介面。如果您使用單一介面 (預設),則這會是 eth0。如果您的 Linux 發行版本支援可預測的網路名稱,其名稱可能類似於 ens5。如需詳細資訊,請展開 在執行個體上啟用增強型網路 中 RHEL、SUSE 和 CentOS 的區段。

在下列範例中,不會載入 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. 再次連接至執行個體,並使用 測試是否已啟用增強型網路 中的 modinfo ena 命令確認 ena 核心驅動程式已安裝且為最低建議版本。

  5. 【EBS 後端執行個體】 從您的本機電腦,使用 Amazon EC2 主控台或下列其中一個命令來停止執行個體:stop-instances(AWS CLI) 或 Stop-EC2Instance(AWS Tools for Windows PowerShell)。

    [執行個體存放區後端執行個體] 您無法停止執行個體來修改屬性。請改為執行此程序:在 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)。

  9. 連接至執行個體,並使用 測試是否已啟用增強型網路 中的 ethtool -i ethn 命令確認 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 AMI 包含已安裝 ENA 之增強型聯網所需的核心驅動程式,並且已啟用 ENA 支援。因此,如果您在支援的執行個體類型上使用最新的 Ubuntu HVM AMI 來啟動執行個體,則您的執行個體已啟用增強型聯網。如需詳細資訊,請參閱 測試是否已啟用增強型網路

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

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

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

安裝 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 後端執行個體】 從您的本機電腦,使用 Amazon EC2 主控台或下列其中一個命令來停止執行個體:stop-instances(AWS CLI) 或 Stop-EC2Instance(AWS Tools for Windows PowerShell)。

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

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

  5. (選擇性) 從執行個體建立 AMI,如 建立 Amazon EBS 支援的 AMI 所述。AMI 將從執行個體繼承增強型聯網的 enaSupport 屬性。因此,您預設可用此 AMI 啟動其他啟用增強型聯網的執行個體。

  6. 從本機電腦,使用 Amazon EC2 主控台或下列其中一個命令啟動執行個體:start-instances(AWS CLI) 或 Start-EC2Instance(AWS Tools for Windows PowerShell)。

在 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 ...

適用於 Red Hat Enterprise Linux 、SUSE Linux Enterprise Server 以及 CentOS 最新 AMI 包含使用 ENA 之增強型聯網所需的核心驅動程式,並且已啟用 ENA 支援。因此,如果您在支援的執行個體類型上使用最新的 AMI 來啟動執行個體,則您的執行個體已啟用增強型聯網。如需詳細資訊,請參閱 測試是否已啟用增強型網路

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

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

  2. 在您的執行個體上從 GitHub (網址為 https://github.com/amzn/amzn-drivers) 中複製 ena 核心驅動程式的原始程式碼。(SUSE Linux Enterprise Server 12 SP2 和更新版本預設包含 ENA 2.02,因此您不需要下載和編譯 ENA 驅動程式。若為 SUSE Linux Enterprise Server 12 SP2 和更新版本,您應該提出請求,將您想要的驅動程式版本新增至庫存核心)。

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

  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 支援的執行個體] 從本機電腦中,使用 Amazon EC2 主控台或下列其中一個命令來停止執行個體:stop-instances (AWS CLI)、Stop-EC2Instance (AWS Tools for Windows PowerShell)。

    [執行個體存放區後端執行個體] 您無法停止執行個體來修改屬性。請改為執行此程序:在 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)。

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

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

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

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

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

重要

使用 DKMS 會使訂閱的支持協議無效。它不應該用於生產部署。

在 Ubuntu 上使用 ENA 啟用增強型聯網 (EBS 後端執行個體)
  1. 請遵循Ubuntu中的步驟 1 和 2。

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

    ubuntu:~$ sudo apt-get install -y build-essential dkms
  3. 在您的執行個體上從 GitHub (網址為 https://github.com/amzn/amzn-drivers) 中複製 ena 核心驅動程式的原始碼。

    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. 使用 DKMS 在您的執行個體上新增、建置及安裝 ena 核心驅動程式。

    將核心驅動程式新增至 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 Server 2016 和 2019 版] 安裝驅動程式後,執行下列 EC2Launch PowerShell 指令碼,以設定執行個體。

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

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

    2. 將 zip 封存檔解壓縮。

    3. 執行 install.ps1 PowerShell script 來安裝驅動程式。

      注意

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

  4. 從本機電腦,使用 Amazon EC2 主控台或下列其中一個命令來停止執行個體:stop-instances(AWS CLI) 或 Stop-EC2Instance(AWS Tools for Windows PowerShell)。

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

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

      • describe-instances (AWS CLI)

        aws ec2 describe-instances --instance-ids instance_id --query "Reservations[].Instances[].EnaSupport"
      • Get-EC2Instance (Tools for Windows PowerShell)

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

      若重新啟動執行個體時發生問題,您也可使用下列其中一項命令來停用 ENA 支援。

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

      [ true ]
  6. 從本機電腦,使用 Amazon EC2 主控台或下列其中一個命令啟動執行個體:start-instances(AWS CLI) 或 Start-EC2Instance(AWS Tools for Windows PowerShell)。

  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 的執行個體。