Linux インスタンスにおける Elastic Network Adapter (ENA) を使用した拡張ネットワーキングの有効化
Amazon EC2 は、Elastic Network Adapter (ENA) を介してネットワーキング機能を提供します。
コンテンツ
要件
ENA を使用した拡張ネットワーキングを準備するには、次のようにインスタンスをセットアップします。
-
サポートされているインスタンスタイプは次のタイプのみです: A1, C5, C5d, C5n, F1, G3, H1, I3,
m4.16xlarge
, M5, M5a, M5d, P2, P3, R4, R5, R5a, R5d, T3,u-6tb1.metal
,u-9tb1.metal
,u-12tb1.metal
, X1, X1e, and z1d。 -
サポートされているバージョンの Linux カーネルとサポートされているディストリビューションを使用してインスタンスを起動します。インスタンスに対して ENA 拡張ネットワーキングが自動的に有効化されます。詳細については、「ENA Linux Kernel Driver Release Notes」を参照してください。
-
インスタンスがインターネットに接続されていることを確認します。
-
選択した任意のコンピュータ、できればローカルのデスクトップまたはノート PC に、AWS CLI または AWS Tools for Windows PowerShell をインストールして設定します。詳細については、「Amazon EC2 へのアクセス」を参照してください。拡張ネットワーキングは、Amazon EC2 コンソールから管理することはできません。
-
保持する必要がある重要なデータがインスタンスにある場合、インスタンスから AMI を作成してそのデータをバックアップする必要があります。カーネルとカーネルモジュールを更新し、
enaSupport
属性を有効にすると、互換性のないインスタンスがレンダリングされたり、オペレーティングシステムにアクセスできなくなる場合があります。最新のバックアップがあれば、このような場合でもデータは保持されます。
拡張ネットワーキングが有効化されているかどうかのテスト
拡張ネットワーキングが既に有効になっているかどうかをテストするには、ena
モジュール がインスタンスにインストールされていることと、enaSupport
属性が設定されていることを確認します。インスタンスがこれら 2 つの条件を満たしている場合は、ethtool -i
ethn
コマンドによって、ネットワークインターフェイスで使用されているモジュールが表示されます。
カーネルモジュール (ena)
ena
モジュールがインストールされていることを確認するには、以下の要領で modinfo コマンドを使用します。
[ec2-user ~]$
modinfo ena
filename: /lib/modules/4.14.33-59.37.amzn2.x86_64/kernel/drivers/amazon/net/ena/ena.ko version: 1.5.0g license: GPL description: Elastic Network Adapter (ENA) author: Amazon.com, Inc. or its affiliates srcversion: 692C7C68B8A9001CB3F31D0 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: retpoline: Y intree: Y name: ena ...
上の Amazon Linux のケースでは、ena
モジュールはインストールされています。
ubuntu:~$
modinfo ena
ERROR: modinfo: could not find module ena
上の Ubuntu インスタンスでは、モジュールはインストールされていないため、まずインストールする必要があります。詳細については、「Ubuntu での拡張ネットワーキングの有効化」を参照してください。
インスタンス属性 (enaSupport)
インスタンスに拡張ネットワーキングの 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
イメージ属性 (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
ネットワークインターフェイスドライバー
ena
モジュールが特定のインターフェイスで使用されていることを確認するには、確認するインターフェイス名に置き換えて、次のコマンドを使用します。単一のインターフェイス (デフォルト)
を使用している場合は、eth0
です。
[ec2-user ~]$
ethtool -i eth
0
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
であるため、vif
モジュールはロードされていません。
[ec2-user ~]$
ethtool -i eth
0
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
この場合、ena
モジュールはロードされており、最小推奨バージョンです。このインスタンスでは、拡張ネットワーキングが適切に設定されています。
Amazon Linux AMI での拡張ネットワーキングの有効化
Amazon Linux 2 および最新バージョンの Amazon Linux AMI では、拡張ネットワーキングに必要なモジュールがインストールされており、必要な
enaSupport
属性も設定されています。したがって、サポートされるインスタンスタイプで HVM バージョンの Amazon Linux を使用してインスタンスを起動した場合、拡張ネットワーキングは既にインスタンスで有効になっています。詳細については、「拡張ネットワーキングが有効化されているかどうかのテスト」を参照してください。
以前の 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-backed インスタンス] ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを停止します。stop-instances (AWS CLI)、Stop-EC2Instance (AWS Tools for Windows PowerShell)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。
[Instance store-backed インスタンス] インスタンスを停止して属性を変更することはできません。代わりに、この手順に進んでください: Amazon Linux AMI で拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)。
-
ローカルコンピュータから、次のいずれかのコマンドを使用して拡張ネットワーキングの属性を有効化します。
-
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
-
-
(オプション) 「Amazon EBS-Backed Linux AMI の作成」の説明に従って、インスタンスから AMI を作成します。AMI は、インスタンスから拡張ネットワーキング
enaSupport
属性を継承します。このため、この AMI を使用することで、拡張ネットワーキングがデフォルトで有効になっている別のインスタンスを起動できます。 -
ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを起動します。start-instances (AWS CLI)、Start-EC2Instance (AWS Tools for Windows PowerShell)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。
-
インスタンスに接続し、拡張ネットワーキングが有効化されているかどうかのテスト の ethtool -i eth
n
コマンドを使用して、ena
モジュールがインストールされ、ネットワークインターフェイスにロードされていることを確認します。拡張ネットワーキングを有効にした後にインスタンスに接続できない場合、「Elastic Network Adapter (ENA) のトラブルシューティング」を参照してください。
Amazon Linux AMI で拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)
インスタンスを停止するステップまで、前の手順に従います。「Instance Store-Backed Linux 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 での拡張ネットワーキングの有効化
最新の Ubuntu HVM AMI では、ENA を使用した拡張ネットワーキングに必要なモジュールがインストールされており、必要な enaSupport
属性も設定されています。したがって、サポートされるインスタンスタイプで最新の Ubuntu HVM AMI を使用してインスタンスを起動した場合、拡張ネットワーキングは既にインスタンスで有効になっています。詳細については、「拡張ネットワーキングが有効化されているかどうかのテスト」を参照してください。
以前の AMI を使用してインスタンスを起動した場合、まだ拡張ネットワーキングが有効になっていなければ、linux-aws
カーネルパッケージをインストールして最新の拡張ネットワーキングドライバーを取得して、必要な属性を更新できます。
linux-aws カーネルパッケージをインストールするには
-
インスタンスに接続します。
-
パッケージキャッシュおよびパッケージを更新します。
ubuntu:~$
sudo apt-get update && sudo apt-get upgrade -y linux-aws
重要
更新プロセス中に
grub
をインストールするよう求められた場合は、/dev/xvda
のインストール先としてgrub
を使用し、現在のバージョンの/boot/grub/menu.lst
を保持することを選択します。 -
[EBS-backed インスタンス] ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを停止します。stop-instances (AWS CLI)、Stop-EC2Instance (AWS Tools for Windows PowerShell)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。
[Instance store-backed インスタンス] インスタンスを停止して属性を変更することはできません。代わりに、この手順に進んでください: Ubuntu で拡張ネットワーキングを有効にするには (Instance store-backed インスタンス) 。
-
ローカルコンピュータから、次のいずれかのコマンドを使用して拡張ネットワーキングの属性を有効化します。
-
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
-
-
(オプション) 「Amazon EBS-Backed Linux AMI の作成」の説明に従って、インスタンスから AMI を作成します。AMI は、インスタンスから拡張ネットワーキング
enaSupport
属性を継承します。このため、この AMI を使用することで、拡張ネットワーキングがデフォルトで有効になっている別のインスタンスを起動できます。 -
ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを起動します。start-instances (AWS CLI)、Start-EC2Instance (AWS Tools for Windows PowerShell)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。
Ubuntu で拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)
インスタンスを停止するステップまで、前の手順に従います。「Instance Store-Backed Linux AMI の作成」に記述されているように、新しい AMI を作成します。AMI を登録するときに拡張ネットワーキング属性を有効にしてください。
-
register-image (AWS CLI)
aws ec2 register-image --ena-support
...
-
Register-EC2Image (AWS Tools for Windows PowerShell)
Register-EC2Image -EnaSupport $true
...
Linux での拡張ネットワーキングの有効化
次の手順では、SUSE Linux Enterprise Server、Red Hat Enterprise Linux、または CentOS など、Amazon Linux AMI または Ubuntu 以外の Linux ディストリビューションで拡張ネットワーキングを有効にするための一般的なステップを示します。開始する前に、「拡張ネットワーキングが有効化されているかどうかのテスト」を参照して、インスタンスで拡張ネットワーキングがすでに有効になっているかどうかを確認します。コマンドの詳細な構文、ファイルの場所、パッケージやツールのサポートなどの詳細については、使用する Linux ディストリビューションのドキュメントを参照してください。
Linux で拡張ネットワーキングを有効化するには
-
インスタンスに接続します。
-
の GitHub からインスタンスで
ena
モジュールのソースコードのクローンを作成します。git clone https://github.com/amzn/amzn-drivers
-
インスタンスで
ena
モジュールをコンパイルし、インストールします。 -
sudo depmod コマンドを実行して、モジュールの依存関係を更新します。
-
起動時に新しいモジュールがロードされるように、インスタンスの
initramfs
を更新します。たとえば、ディストリビューションで dracut がサポートされる場合、次のコマンドを使用できます。dracut -f -v
-
システムがデフォルトで予測可能なネットワークインターフェイス名を使用するかどうかを確認します。systemd または udev のバージョン 197 以上を使用するシステムの場合、イーサネットデバイスの名前を変更でき、単一ネットワークインターフェイスの名前が
eth0
になることは保証されません。この動作は、インスタンスに接続する際に問題の原因となる可能性があります。詳細と他の設定オプションについては、freedesktop.org ウェブサイトで「Predictable Network Interface Names/」を参照してください。-
次のコマンドを使用して、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-backed インスタンス] ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを停止します。stop-instances (AWS CLI)、Stop-EC2Instance (AWS Tools for Windows PowerShell)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。
[Instance store-backed インスタンス] インスタンスを停止して属性を変更することはできません。代わりに、この手順に進んでください: Linux で拡張ネットワーキングを有効にするには (Instance store–backed インスタンス)。
-
ローカルコンピュータから、次のいずれかのコマンドを使用して拡張ネットワーキングの
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
-
-
(オプション) 「Amazon EBS-Backed Linux AMI の作成」の説明に従って、インスタンスから 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)。インスタンスを AWS OpsWorks で管理する場合、インスタンスの状態が同期し続けるために、AWS OpsWorks コンソールでインスタンスを停止する必要があります。
-
(オプション) インスタンスに接続し、モジュールがインストールされていることを確認します。
拡張ネットワーキングを有効にした後にインスタンスに接続できない場合、「Elastic Network Adapter (ENA) のトラブルシューティング」を参照してください。
Linux で拡張ネットワーキングを有効にするには (Instance store–backed インスタンス)
インスタンスを停止するステップまで、前の手順に従います。「Instance Store-Backed Linux AMI の作成」に記述されているように、新しい AMI を作成します。AMI を登録するときに拡張ネットワーキング属性を有効にしてください。
-
register-image (AWS CLI)
aws ec2 register-image --ena-support
...
-
Register-EC2Image (AWS Tools for Windows PowerShell)
Register-EC2Image -EnaSupport
...
トラブルシューティング
ENA アダプタのトラブルシューティングの詳細については、「Elastic Network Adapter (ENA) のトラブルシューティング」を参照してください。