ALBのターゲットに別VPCにあるインスタンスを指定する

2021.12.23

こんにちは、岩城です。

ALBのターゲットに別VPCにあるインスタンスを指定する機会がありましたので内容を共有します。

結論

以下図のようにVPCピアリングで接続したVPCであれば、別VPCにあるインスタンスをターゲットに指定できます。

細かい設定は以降で確認してください。

やってみた

VPCを始めとするネットワークが既に構築されている前提で進めていきます。

VPCピアリングを設定する

本エントリでは、同一アカウント上のVPC間でピアリングしますが、別アカウントでも可能です。 リクエスタとアクセスプタにそれぞれVPCを指定してピアリング接続を作成します。

ピアリング接続を作成しただけでは、まだVPCピアリングできていません。 リクエストを承認します。

次に各VPCのルートテーブルにおいて、対向のVPC CIDRを送信先とし、ターゲットをピアリング接続とするルートを追加します。

WEBサーバーとなるEC2インスタンスにnginxをインストールする

EC2インスタンスを起動します。起動手順については、特別な点はないので省略します。 本エントリでは、プライベートサブネットにあるインスタンスにSession Managerで接続するので、以下の点を考慮する必要があります。

  • Session Managerを利用するためのIAMロールをEC2インスタンスにアタッチする
    • AmazonSSMManagedInstanceCoreのIAMポリシーをアタッチしたIAMロール
  • EC2インスタンスからSession Managerのエンドポイントにアクセスするため、NATGWを経由してインターネットへアクセスする
    • NATGWとしましたが、VPCエンドポイントの利用でも構いません

Session Managerで接続した後は、以下コマンドを実行してnginxをセットアップします。

# nginxをインストールする
$ sudo amazon-linux-extras install nginx1
# nginxを起動する
$ sudo systemctl start nginx
# nginxが起動したことを確認する
$ sudo systemctl status nginx
# nginxデフォルトのindex.htmlが返ってくることを確認する
$ curl http://localhost

ALBを設定する

ALBの設定は特別な点がないので大部分を省略し、ターゲットグループの設定だけ触れます。

ターゲットがEC2インスタンスの場合、ターゲットタイプのインスタンスを選択することが多いと思います。

インスタンスは、ALBが稼働するVPCのインスタンスを動的に認識するものであり、ピアリング先のインスタンスを認識することができません。

そこでIPアドレスを選択します。

ネットワークの選択において、その他のプライベートIPアドレスを選択し、先程作成したEC2インスタンスのプライベートIPアドレスを指定し、保留中として以下を含めるをクリックします。

この状態ではまだALBからEC2インスタンスに接続できません。なぜなら、本ケースのシナリオでは、EC2インスタンスのセキュリティグループで、まだALBからのアクセスを許可していないからです。

VPCピアリングするとピアリング先のセキュリティグループIDを指定することができるため、今回はALBにアタッチしたセキュリティグループIDを指定しています。

すべての準備が整えば、ターゲットグループのヘルスチェックに成功します。

動作確認

ALBのDNS名を指定してアクセスすると、

nginxのWelcomeページが表示されました。

おわりに

今回はVPCピアリングのユースケースで紹介しましたが、DXやVPNで接続されたオンプレのインスタンスを指定することも可能です。

本エントリがどなたかのお役に立てれば幸いです。

ご参考