パブリック向けロードバランサーをプライベート IP アドレスを持つ EC2 インスタンスへ接続する方法を教えてください。

最終更新日: 2017 年 2 月 2 日

パブリックのインターネット向けロードバランサーを作成して、プライベートサブネットにあるインスタンスなど、パブリックにアクセス可能ではないバックエンドの Amazon EC2 インスタンスに接続する必要があります。どうすればよいですか?

簡単な説明

プライベートインスタンスが使用しているプライベートサブネットと同じアベイラビリティーゾーンに、パブリックのサブネットを作成する必要があります。次に、このパブリックサブネットを、インターネット向けロードバランサーに関連付けます。

パブリックサブネット

サブネットのデフォルトのトラフィックがインターネットゲートウェイにルーティングされる場合、そのサブネットはパブリックサブネットと呼ばれます。たとえば、このサブネットで起動されたインスタンスが Elastic IP アドレスを持っているか、パブリック IP アドレスが関連付けられている場合、サブネットはパブリックにアクセス可能になります。

プライベートサブネット

サブネットのデフォルトのトラフィックが NAT インスタンス/ゲートウェイにルーティングされるか、デフォルトのルートが全く存在しない場合、そのサブネットはプライベートサブネットと呼ばれます。たとえば、このサブネットで起動されたインスタンスは、Elastic IP アドレスを持っていたり、パブリック IP アドレスが関連付けられていたりしても、パブリックにはアクセスできません。

解決方法

  1. ロードバランサーにアタッチする必要があるインスタンスを持っているアベイラビリティーゾーンをリストにします。
  2. プライベートインスタンスが存在しているのと同じアベイラビリティーゾーンに、同数のパブリックサブネットを作成します。ロードバランサーが正しくスケーリングできるように、ロードバランサーの各サブネットの CIDR ブロックに最低でも /27 ビットのマスク (例 :10.0.0.0/27) を設定し、少なくとも 8 個の空き IP アドレスを用意してください。ロードバランサーはこれらの IP アドレスを使用してバックエンドインスタンスとの接続を確立します。詳細については、VPC とサブネットを参照してください。
    注意 : ロードバランサーに登録する必要のあるインスタンスを含む同じアベイラビリティーゾーンに、複数のプライベートサブネットがある場合でも、作成が必要なのは 1 つのパブリックサブネットだけです。必要なのは、アベイラビリティーゾーンごとに 1 つのパブリックサブネットだけです。その特定のアベイラビリティーゾーンに存在するすべてのプライベートサブネットのプライベートインスタンスを追加できます。
  3. Amazon EC2 コンソールから 、ロードバランサーを作成し、新しく作成したパブリックサブネットをそれに関連付けます。手順については、 ステップ 1: ロードバランサーの種類の選択ステップ 2: ロードバランサーの定義を参照してください。
  4. プライベートインスタンスをロードバランサーに追加します。手順については、ステップ 5: EC2 インスタンスをロードバランサーへ登録するを参照してください。

トラブルシューティング

  1. ロードバランサーに割り当てられたセキュリティグループでリスナーポートが開いていることを確認します。
  2. プライベートインスタンスのセキュリティグループで、リスナーポートとヘルスチェックポート (ヘルスチェックがリスナーポートの 1 つではない場合) のトラフィックが許可されていることを確認します。

インスタンスのセキュリティグループに、ロードバランサーに割り当てられたセキュリティグループからのトラフィックを許可するルールを追加することもできます。たとえば、ロードバランサー上のセキュリティグループが sg-1234567a の場合、プライベートインスタンスに関連付けられたセキュリティグループを以下のように変更します。

タイプ プロトコル ポート範囲 ソース
HTTP TCP 80 sg-1234567a

詳細については、Linux インスタンスの Amazon EC2 セキュリティグループを参照してください。