1つ以上のセカンダリプライベートIPアドレスをプライマリまたはセカンダリのelastic network interface (ENI) に割り当てて、マルチアプリケーション、フェールオーバー、およびServer Load Balancer (SLB) シナリオのビジネス要件を満たすことができます。 このトピックでは、ECS (Elastic Compute Service) インスタンスにセカンダリプライベートIPアドレスを割り当て、セカンダリプライベートIPアドレスを設定する方法について説明します。
シナリオ
セカンダリプライベートIPアドレスは、次のシナリオに適しています。
マルチアプリケーションシナリオ: インスタンスが複数のアプリケーションをホストしている場合、各アプリケーションが送信接続に個別のIPアドレスを使用できるように、セカンダリプライベートIPアドレスをアプリケーションに割り当てることができます。 これにより、1つのインスタンスで複数のサービスを提供し、インスタンスの利用率を最大化できます。
フェイルオーバーシナリオ: インスタンスに障害が発生した場合、インスタンスからセカンダリENIのバインドを解除し、ENIを別のインスタンスにバインドして、障害が発生したインスタンスのセカンダリプライベートIPアドレス宛てのトラフィックを通常のインスタンスに転送できます。 これにより、サービスの継続性が確保される。
SLBシナリオ: 各インスタンスに複数のセカンダリプライベートIPアドレスを割り当てることで、SLBメカニズムを実装して、複数のインスタンスにトラフィックを均等に分散できます。 これにより、システムのスケーラビリティとパフォーマンスが向上します。
制限事項
セカンダリプライベートIPアドレスを割り当てるときは、次の制限事項に注意してください。
セキュリティグループの制限: Virtual private Cloud (VPC) タイプのセキュリティグループに含まれるプライベートIPアドレスの数に制限があります。 詳細については、「制限」トピックのセキュリティグループの制限セクションを参照してください。
ENIの制限: ENIに割り当てることができるプライベートIPアドレスの最大数は、ENIのステータスによって異なります。
[使用可能] 状態のENIでは、最大10個のプライベートIPアドレスを割り当てることができます。
[InUse] 状態のENIの場合、割り当てることができるプライベートIPアドレスの最大数は、ENIがバインドされているインスタンスのインスタンスタイプによって異なります。 詳細については、「インスタンスファミリーの概要」をご参照ください。
手順
ステップ1: 準備をする
次の要件が満たされていることを確認してください。
ENIがバインドされているインスタンスは、実行中 (実行中) 状態です。 詳細については、「インスタンスの起動」をご参照ください。
ENIはインスタンスにバインドされています。 詳細については、「セカンダリENIのバインド」をご参照ください。
ステップ2: セカンダリプライベートIPアドレスの割り当て
ECSコンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リソースが属するリージョンとリソースグループを選択します。
[Elastic Network Interface] ページで、セカンダリプライベートIPアドレスを割り当てるENIを見つけ、[操作] 列の [ENI IPアドレスの管理] をクリックします。
[ENI IPアドレスの管理] ダイアログボックスで、[セカンダリプライベートIPv4アドレス] または [IPv6] セクションの [増加] をクリックします。
フィールドを空のままにすると、ENIが接続されているvSwitchのプライベートIPv4またはIPv6 CIDRブロック内からランダムなIPアドレスが自動的に割り当てられます。
IPアドレスを入力する場合は、IPアドレスがENIが接続されているvSwitchのプライベートIPv4またはIPv6 CIDRブロック内にあることを確認してください。
[確認]をクリックします。
ステップ3: インスタンスのセカンダリプライベートIPアドレスを設定する
セカンダリプライベートIPアドレスをインスタンスに割り当てた後、オペレーティングシステムタイプとIPアドレスタイプに基づいて、インスタンスのセカンダリプライベートIPアドレスを設定する必要があります。 実行する必要がある操作は、オペレーティングシステムのタイプとIPアドレスのタイプによって異なります。
セカンダリプライベートIPv6アドレスの設定方法については、「ECSインスタンスのIPv6アドレスの設定」をご参照ください。
Windows インスタンス
ECSインスタンスに接続します。
接続方法の詳細については、「接続方法の概要」をご参照ください。
インスタンスのサブネットマスクとデフォルトゲートウェイを表示します。
コマンドプロンプトまたはWindows PowerShellを開きます。
ipconfig
コマンドを実行して、インスタンスのサブネットマスクとデフォルトゲートウェイを表示します。次の図に示すサンプルのコマンド出力が返されます。 コマンド出力は、イーサネットが使用されていることを示します。
[ネットワークと共有センター] をクリックします。
[アダプター設定の変更] をクリックします。
使用中のネットワーク接続をダブルクリックします。 この例では、Ethernetという名前のネットワーク接続が使用されています。 [Ethernetステータス] ダイアログボックスで [プロパティ] をクリックします。
[イーサネットのプロパティ] ダイアログボックスで、[インターネットプロトコルバージョン4 (TCP/IPv4)] をダブルクリックします。
[インターネットプロトコルバージョン4 (TCP/IPv4) プロパティ] ダイアログボックスで、[次のIPアドレスを使用] を選択し、[詳細設定] をクリックします。
[高度なTCP/IP設定] ダイアログボックスで、IPアドレスを設定します。
[IPアドレス] セクションで、[追加] をクリックし、割り当てられたIPアドレスの1つをIPアドレスフィールドに入力し、取得したサブネットマスクを [サブネットマスク] フィールドに入力します。
この手順を繰り返して、同じアダプタに複数のIPアドレスを追加できます。
[デフォルトゲートウェイ] セクションで、[追加] をクリックし、[デフォルトゲートウェイ] フィールドに取得したデフォルトゲートウェイを入力します。
[OK] をクリックします。
ipconfig
コマンドを実行して、設定結果を確認します。次の図は、2つのセカンダリプライベートIPアドレスを設定するためのサンプルコマンドの出力を示しています。
インスタンスのセカンダリプライベートIPアドレスを設定した後、Windowsインスタンスがインターネットにアクセスできない場合、の手順に従って問題のトラブルシューティングを行います。WindowsインスタンスのセカンダリプライベートIPアドレスを設定した後、インスタンスはインターネットに接続できません。 これはなぜですか。 「ネットワークFAQ」トピックのセクション。
Red Hat Enterprise Linux (RHEL) オペレーティングシステムを実行するLinuxインスタンス
この手順は、次のオペレーティングシステムに適用されます。Alibaba Cloud Linux 2、Alibaba Cloud Linux 3、CentOS 6、CentOS 7、CentOS 8、Red Hat 6、Red Hat 7、Red Hat 8、Anolis 7、Anolis 8、Fedora 33、およびFedora 34。
ECSインスタンスに接続します。
接続方法の詳細については、「接続方法の概要」をご参照ください。
ネットワーク設定を表示します。
ifconfig
コマンドを実行してサブネットマスクを照会し、route -n
コマンドを実行してデフォルトゲートウェイを照会します。コマンド出力の例を次の図に示します。
上記のコマンド出力では、netmaskに対応する
255.255.**.**
がIPv4サブネットマスクで、Gatewayに対応する192.**.**.253
がデフォルトゲートウェイです。説明インスタンスで使用されるLinuxディストリビューションが
ifconfig
コマンドをサポートしていない場合は、代わりにip a
コマンドまたはip addr show
コマンドを実行します。ls /etc/sysconfig/network-scripts/ifcfg-<Name of the ENI>
コマンドを実行し、ENIのプライマリプライベートIPアドレスを含む設定ファイルが存在するかどうかを確認します。コマンド出力の例を次の図に示します。
指定されたファイルが存在しません
上記のメッセージが返された場合、ENIのプライマリプライベートIPアドレスを含む構成ファイルは存在しません。
sudo vi /etc/sysconfig/network-scripts/ifcfg-<Name of the ENI>
コマンドを実行して、設定ファイルでENIのプライマリプライベートIPアドレスを指定する必要があります。例:
DEVICE=<Name of the ENI> // Example: eth1 TYPE=Ethernet BOOTPROTO=static ONBOOT=yes IPADDR=<Assigned primary private IPv4 address> NETMASK=<IPv4 subnet mask> GATEWAY=<Default gateway>
指定されたファイルが存在します
上記のメッセージが返された場合、ENIのプライマリプライベートIPアドレスを含む構成ファイルが存在します。 この手順を無視して、次の手順に進みます。
ネットワーク設定ファイルを変更します。
説明次の例では、eth1という名前のセカンダリENIが使用されます。 ビジネス要件に基づいてDEVICEの値を置き換える必要があります。
単一のセカンダリプライベートIPv4アドレスを設定するには、
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1:0
コマンドを実行して、設定ファイルに設定項目を追加します。例:
DEVICE=eth1:0 TYPE=Ethernet BOOTPROTO=static IPADDR=<Assigned secondary private IPv4 address 1> NETMASK=<IPv4 subnet mask>
セカンダリプライベートIPv4アドレスをさらに設定する場合は、[デバイス] シーケンス番号をインクリメントし、対応する設定項目を追加します。
たとえば、
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1:1
コマンドを実行して、次のサンプル設定項目を追加します。DEVICE=eth1:1 TYPE=Ethernet BOOTPROTO=static IPADDR=<Assigned secondary private IPv4 address 2> NETMASK=<IPv4 subnet mask>
設定を有効にするために、オペレーティングシステムに基づいて対応するコマンドを実行します。
オペレーティングシステム
コマンド
Alibaba Cloud Linux 2
CentOS 7
レッドハット7
アナリス7
次のいずれかのコマンドを実行して、ネットワークサービスを再起動します。
sudoサービスネットワーク再起動
sudo systemctl再起動ネットワーク
CentOS 6
レッドハット6
sudo service network restart
コマンドを実行して、ネットワークサービスを再起動します。Alibaba Cloud Linux 3
CentOS 8
レッドハット8
アナリス8
Fedora 33/34
次の操作を実行します。
sudo systemctl restart NetworkManager
コマンドを実行して、ネットワークサービスを再起動します。sudo nmcli device reapply eth1
コマンドを実行してeth1 ENIに再接続するか、sudo reboot
コマンドを実行してインスタンスを再起動します。
ifconfig
コマンドを実行して、設定が有効かどうかを確認します。次の図は、2つのセカンダリプライベートIPアドレスを設定するためのサンプルコマンドの出力を示しています。
Debianオペレーティングシステムを実行するLinuxインスタンス
次の手順を実行する前に、次の項目に注意してください。
この手順は、Ubuntu 18、Ubuntu 20、Ubuntu 14、Ubuntu16、Debian 8、Debian 9、Debian 10のオペレーティングシステムに適用されます。
次の例では、eth0プライマリENIが使用されています。 セカンダリENIを使用する場合は、ENI IDを実際のENI IDに置き換えます。
ECSインスタンスに接続します。
接続方法の詳細については、「接続方法の概要」をご参照ください。
インスタンスが実行するオペレーティングシステムに基づいて、セカンダリプライベートIPアドレスを設定します。
Debianシリーズ: Ubuntu 18およびUbuntu 20
cloud-initネットワーク設定を無効にします。
sudo vim /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
コマンドを実行して、設定ファイルを開き、対応する設定項目をファイルに追加します。例:
network: {config: disabled}
sudo vim /etc/netplan/50-cloud-init.yaml
コマンドを実行してネットワーク設定ファイルを開き、動的ホスト設定プロトコル (DHCP) を使用して割り当てられたIPアドレスを静的IPアドレスに変更します。例:
network: version: 2 ethernets: eth0: match: macaddress: 00:16:3e:36:**:** addresses: - <Primary private IPv4 address>/<Subnet mask bit> - <Assigned secondary private IPv4 address 1>/<Subnet mask bit> - <Assigned secondary private IPv4 address 2>/<Subnet mask bit> gateway4: <Default gateway>
説明<Subnet mask bit>
は、サブネットマスクに対応するサブネットマスクビットに置き換える必要があります。 たとえば、255.255.255.0
サブネットマスクのサブネットマスクビットを/24
に設定します。sudo netplan apply
コマンドを実行して、ネットワークサービスを再起動します。ip -a
コマンドを実行して、設定が有効かどうかを確認します。次の図は、2つのセカンダリプライベートIPアドレスを設定するためのサンプルコマンドの出力を示しています。
Debianシリーズ: Ubuntu 14、Ubuntu 16、Debian 8、Debian 9、およびDebian 10
sudo vi /etc/network/interfaces
コマンドを実行して、ネットワーク設定ファイルを開き、対応する設定項目をファイルに追加します。例:
auto eth0:0 iface eth0:0 inet static address <Assigned secondary private IPv4 address 1> netmask <IPv4 mask> auto eth0:1 iface eth0:1 inet static address <Assigned secondary private IPv4 address 2> netmask <IPv4 mask>
sudo reboot
コマンドを実行して、インスタンスを再起動します。ifconfig
コマンドを実行して、設定が有効かどうかを確認します。次の図は、2つのセカンダリプライベートIPアドレスを設定するためのサンプルコマンドの出力を示しています。
SUSE Linux Enterprise Server (SLES) オペレーティングシステムを実行するLinuxインスタンス
次の手順を実行する前に、次の項目に注意してください。
この手順は、SUSE 11、SUSE 12、SUSE 15、OpenSUSE 15、OpenSUSE 42のオペレーティングシステムに適用されます。
次の例では、eth0プライマリENIが使用されています。 セカンダリENIを使用する場合は、ENI IDを実際のENI IDに置き換えます。
ECSインスタンスに接続します。
接続方法の詳細については、「接続方法の概要」をご参照ください。
sudo vi /etc/sysconfig/network/ifcfg-eth0
コマンドを実行して、ネットワーク設定ファイルを開き、対応する設定項目を追加します。 例:IPADDR_0=<Assigned secondary private IPv4 address 1> NETMASK_0=<IPv4 subnet mask> LABEL_0='0' IPADDR_1=<Assigned secondary private IPv4 address 2> NETMASK_1=<IPv4 subnet mask> LABEL_1='1'
sudo service network restart
またはsudo systemctl restart network
コマンドを実行して、ネットワークサービスを再起動します。ifconfig
コマンドを実行して、設定が有効かどうかを確認します。次の図は、2つのセカンダリプライベートIPアドレスを設定するためのサンプルコマンドの出力を示しています。