本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 EC2 執行個體上使用 ENA 啟用增強型網路
Amazon EC2 會透過彈性網路介面卡 (ENA) 提供增強型聯網功能。若要使用增強型聯網,您必須使用包含所需 ENA 驅動程式的 AMI,或手動安裝它。然後,您可以在執行個體上啟用 ENA 支援。
若要檢閱 ENA 驅動程式的版本備註或安裝指示,請參閱符合您執行個體作業系統平台的標籤。
對於 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 EC2 和 AWS 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 上啟用增強型聯網
-
連線到您的執行個體。
-
在執行個體上,執行下列命令,將您的執行個體更新為最新的核心驅動程式,包括
ena
:[ec2-user ~]$
sudo yum update
-
從本機電腦,使用 Amazon EC2 主控台或下列其中一個命令重新啟動執行個體:reboot-instances
(AWS CLI) 或 Restart-EC2Instance(AWS Tools for Windows PowerShell)。 -
再次連接至執行個體,並使用 測試是否已啟用增強型網路 中的 modinfo ena 命令確認
ena
核心驅動程式已安裝且為最低建議版本。 -
【EBS 後端執行個體】 從您的本機電腦,使用 Amazon EC2 主控台或下列其中一個命令來停止執行個體:stop-instances
(AWS CLI) 或 Stop-EC2Instance(AWS Tools for Windows PowerShell)。 [執行個體存放區後端執行個體] 您無法停止執行個體來修改屬性。請改為執行此程序:在 Amazon Linux AMI 上啟用增強型聯網 (執行個體存放區後端執行個體)。
-
在本機電腦上使用下列其中一個命令啟用增強型聯網屬性。
-
modify-instance-attribute
(AWS CLI) aws ec2 modify-instance-attribute --instance-id
instance_id
--ena-support -
Edit-EC2InstanceAttribute (Tools for Windows PowerShell)
Edit-EC2InstanceAttribute -InstanceId
instance-id
-EnaSupport $true
-
-
(選擇性) 從執行個體建立 AMI,如 建立 Amazon EBS 支援的 AMI 所述。AMI 將從執行個體繼承增強型聯網的
enaSupport
屬性。因此,您預設可用此 AMI 啟動其他啟用增強型聯網的執行個體。 -
從本機電腦,使用 Amazon EC2 主控台或下列其中一個命令啟動執行個體:start-instances
(AWS CLI) 或 Start-EC2Instance(AWS Tools for Windows PowerShell)。 -
連接至執行個體,並使用 測試是否已啟用增強型網路 中的 ethtool -i eth
n
命令確認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)
-
連線到您的 執行個體。
-
更新套件快取和套件。
ubuntu:~$
sudo apt-get update && sudo apt-get upgrade -y linux-aws
重要
如果更新程序期間提示您安裝
grub
,請用/dev/xvda
安裝grub
,然後選擇保留目前版本的/boot/grub/menu.lst
。 -
【EBS 後端執行個體】 從您的本機電腦,使用 Amazon EC2 主控台或下列其中一個命令來停止執行個體:stop-instances
(AWS CLI) 或 Stop-EC2Instance(AWS Tools for Windows PowerShell)。 [執行個體存放區後端執行個體] 您無法停止執行個體來修改屬性。請改為執行此程序:在 Ubuntu 上啟用增強型聯網 (執行個體後端執行個體)。
-
在本機電腦上使用下列其中一個命令啟用增強型聯網屬性。
-
modify-instance-attribute
(AWS CLI) aws ec2 modify-instance-attribute --instance-id
instance_id
--ena-support -
Edit-EC2InstanceAttribute (Tools for Windows PowerShell)
Edit-EC2InstanceAttribute -InstanceId
instance-id
-EnaSupport $true
-
-
(選擇性) 從執行個體建立 AMI,如 建立 Amazon EBS 支援的 AMI 所述。AMI 將從執行個體繼承增強型聯網的
enaSupport
屬性。因此,您預設可用此 AMI 啟動其他啟用增強型聯網的執行個體。 -
從本機電腦,使用 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 上啟用增強型聯網
-
連線到您的執行個體。
-
在您的執行個體上從 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
-
在您的執行個體上編譯及安裝
ena
核心驅動程式。這些步驟視 Linux 發行版本而定。如需在 Red Hat Enterprise Linux 上編譯核心驅動程式的詳細資訊,請參閱如何在執行 RHEL 的 Amazon EC2 執行個體上安裝最新的 ENS 驅動程式,以取得增強型網路支援? -
執行 sudo depmod 命令更新核心驅動程式相依性。
-
在執行個體上更新
initramfs
,確定開機時載入新核心驅動程式。例如,如果您的發行版本支援 dracut,您可以使用下列命令。dracut -f -v
-
判斷系統是否依預設使用可預測的網路介面名稱。使用 systemd 或 udev 197 或以上版本的系統可重新命名乙太網路裝置,但不保證單一網路介面會命名為
eth0
。該行為會造成連線至執行個體時發生問題。如需詳細資訊及查看其他的組態選項,請參閱 freedesktop.org 網站上的可預測的網路介面名稱。 -
您可用下列命令在 RPM 系統上檢查 systemd 或 udev 的版本。
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,因此可預測的網路介面名稱已停用。
-
若要停用可預測網路介面名稱,請將
net.ifnames=0
選項新增至GRUB_CMDLINE_LINUX
的/etc/default/grub
行中。sudo sed -i '/^GRUB\_CMDLINE\_LINUX/s/\"$/\ net\.ifnames\=0\"/' /etc/default/grub
-
重建 grub 組態檔案。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
-
-
[EBS 支援的執行個體] 從本機電腦中,使用 Amazon EC2 主控台或下列其中一個命令來停止執行個體:stop-instances
(AWS CLI)、Stop-EC2Instance (AWS Tools for Windows PowerShell)。 [執行個體存放區後端執行個體] 您無法停止執行個體來修改屬性。請改為執行此程序:在 Linux 上啟用增強型聯網 (執行個體存放區後端執行個體)。
-
在本機電腦上使用下列其中一個命令啟用增強型聯網的
enaSupport
屬性:-
modify-instance-attribute
(AWS CLI) aws ec2 modify-instance-attribute --instance-id
instance_id
--ena-support -
Edit-EC2InstanceAttribute (Tools for Windows PowerShell)
Edit-EC2InstanceAttribute -InstanceId
instance-id
-EnaSupport $true
-
-
(選擇性) 從執行個體建立 AMI,如 建立 Amazon EBS 支援的 AMI 所述。AMI 將從執行個體繼承增強型聯網的
enaSupport
屬性。因此,您預設可用此 AMI 啟動其他啟用增強型聯網的執行個體。如果您執行個體的作業系統包含
/etc/udev/rules.d/70-persistent-net.rules
檔案,您必須先刪除檔案,然後再建立 AMI。此檔案包含原始執行個體乙太網路卡的 MAC 地址。如果其他執行個體使用此檔案開機,作業系統將無法找到設備,且eth0
可能會失敗,因而造成開機問題。此檔案會在下次開機週期時重新產生,且從 AMI 啟動的任何執行個體將會建立自己的檔案版本。 -
從本機電腦,使用 Amazon EC2 主控台或下列其中一個命令啟動執行個體:start-instances
(AWS CLI) 或 Start-EC2Instance(AWS Tools for Windows PowerShell)。 -
(選擇性) 連線到執行個體,並確認核心驅動程式已安裝。
如果啟用增強型聯網後無法連接至您的執行個體,請參閱 對 Linux 上的 ENA 核心驅動程式進行疑難排解。
在 Linux 上啟用增強型聯網 (執行個體存放區後端執行個體)
遵循先前的程序,一直進行到您停止執行個體的那個步驟。如 建立執行個體儲存體支援的 AMI 中所述建立新的 AMI,且務必在註冊 AMI 時啟用增強型聯網屬性。
-
register-image
(AWS CLI) aws ec2 register-image --ena-support
...
-
Register-EC2Image (AWS Tools for Windows PowerShell)
Register-EC2Image -EnaSupport
...
此方法僅用於測試和意見回饋用途。不適用於生產部署。如需生產部署,請參閱Ubuntu。
重要
使用 DKMS 會使訂閱的支持協議無效。它不應該用於生產部署。
在 Ubuntu 上使用 ENA 啟用增強型聯網 (EBS 後端執行個體)
-
請遵循Ubuntu中的步驟 1 和 2。
-
安裝
build-essential
套件,以編譯核心驅動程式和dkms
套件,使ena
核心驅動程式在每次核心更新時重建。ubuntu:~$
sudo apt-get install -y build-essential dkms
-
在您的執行個體上從 GitHub (網址為 https://github.com/amzn/amzn-drivers
) 中複製 ena
核心驅動程式的原始碼。ubuntu:~$
git clone https://github.com/amzn/amzn-drivers
-
將
amzn-drivers
套件移至/usr/src/
目錄,讓 DKMS 可以找到套件並在每次核心更新時建置。附加原始碼版本編號 (目前的版本編號可在版本備註中找到) 到目錄名稱。例如,下列範例顯示1.0.0
版本。ubuntu:~$
sudo mv amzn-drivers /usr/src/amzn-drivers-1.0.0
-
建立包含下列值的 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"
-
使用 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
-
重建
initramfs
,以在開機時載入正確的核心驅動程式。ubuntu:~$
sudo update-initramfs -u -k all
-
使用 測試是否已啟用增強型網路 中的 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)
-
繼續執行Ubuntu中的步驟 3。
如果您啟動執行個體,且其尚未啟用增強型聯網,您必須在執行個體上下載並安裝必要的網路轉接器驅動程式,然後設定 enaSupport
執行個體屬性,以啟動增強型聯網。
啟用增強型聯網
-
連線到您的執行個體,並以本機管理員登入。
-
[僅限 Windows Server 2016 和 2019 版] 安裝驅動程式後,執行下列 EC2Launch PowerShell 指令碼,以設定執行個體。
PS C:\>
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
-
在執行個體上,安裝驅動程式,如下所示:
-
將最新的驅動程式下載
到執行個體。 -
將 zip 封存檔解壓縮。
-
執行
install.ps1
PowerShell script 來安裝驅動程式。注意
如果您收到執行政策錯誤,請將政策設定為
Unrestricted
(預設設定為Restricted
或RemoteSigned
)。在命令列中,執行Set-ExecutionPolicy -ExecutionPolicy Unrestricted
,然後再次執行install.ps1
PowerShell 指令碼。
-
-
從本機電腦,使用 Amazon EC2 主控台或下列其中一個命令來停止執行個體:stop-instances
(AWS CLI) 或 Stop-EC2Instance(AWS Tools for Windows PowerShell)。 -
在執行個體上啟用 ENA 支援,如下所示:
-
在本機電腦上,執行下列其中一個命令,查看執行個體上的 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
-
-
若要啟用 ENA 支援,請執行下列其中一項命令:
-
modify-instance-attribute
(AWS CLI) 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 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
-
-
如先前所示,使用
true
或 describe-instances,確認屬性已設定為 Get-EC2Instance。您現在應該會看到下列輸出:[ true ]
-
-
從本機電腦,使用 Amazon EC2 主控台或下列其中一個命令啟動執行個體:start-instances
(AWS CLI) 或 Start-EC2Instance(AWS Tools for Windows PowerShell)。 -
在執行個體上,確認 ENA 驅動程式已安裝並啟用,如下所示:
-
用滑鼠右鍵按一下網路圖示,然後選擇 Open Network and Sharing Center (開啟網路和共用中心)。
-
選擇乙太網路卡 (例如,Ethernet 2)。
-
請選擇 Details (詳細資訊)。針對 Network Connection Details (網路連線詳細資料),檢查 Description (描述) 是否為 Amazon Elastic Network Adapter (Amazon 彈性網路介面卡)。
-
-
(選擇性) 從執行個體建立 AMI。AMI 將從執行個體繼承
enaSupport
屬性。因此,您預設可用此 AMI 啟動其他啟用 ENA 的執行個體。