8
10

More than 1 year has passed since last update.

Webサーバーをプライベートサブネットに配置して、ALBを経由してアクセスできるようにする

Last updated at Posted at 2023-01-15

タイトルのような構成を作ってみたら、はまったところがあったので備忘録として残しておきます

はじめに

Webサーバーを作成するとなった場合、普通は以下のような構成が思いつくと思います
image.png

ただ、ALBがパブリックサブネットにありさえすれば、WebサーバーをプライベートサブネットにおいてしまってもOKです
image.png

上記のような構成を作ってみたので、簡単な手順とはまりポイントを書きます

ちなみに先に行っておくと、上記の構成には間違いがあります
記事に最後に記載していますが、間違いはどこでしょうか?

作成手順

すべてマネジメントコンソール上で作成しています
詳細は、以下のページと同じなので概要だけ記載します

NW周りの設定

以下のコンポーネントを作成します

  • VPC
    • パブリックサブネット×2
      • ルートテーブルは以下の2つを設定
        • 宛先:10.1.0.0/24(VPCのCIDR)、ネクストポップ:local
        • 宛先:0.0.0.0/0、ネクストポップ:インターネットゲートウェイ
    • プライベートサブネット×2
      • ルートテーブルは以下の1つのみを設定
        • 宛先:10.1.0.0/24(VPCのCIDR)、ネクストポップ:local
    • インターネットゲートウェイ

AutoScalingグループの作成とロードバランサーの設定

手順はざっくり以下の通り

  • 起動テンプレートの作成

  • AutoScalingグループとALBの作成

    • AutoScalingグループを作成する画面で、ALBも同時に作成する
      • 起動テンプレートは上記で作成したものを指定
      • ネットワークの設定では、 プライベートサブネット を指定
      • ロードバランシングの設定画面で、新しいロードバランサーをアタッチする
        • デフォルトでInternalになってしまっているので、Internet-facingに変更する
        • サブネットは パブリックサブネット を指定
        • ターゲットグループを新規作成する
      • その他の設定はお好みでOK

引っかかりポイント

動作確認として、ALBのURLにアクセスしてみる

  • 502 Bad Gatewayの表示がされる。。。
  • AutoScalingグループの画面ではHealtyなのに、ALBの画面ではUnhealtyになっていた
  • 色々と見直してみたところ、Webサービスが起動していないように見える

お気づきの方もいるかもしれませんが、この構成ではインスタンスのユーザーデータに仕込んでいるApacheのインストールが完了しません
なぜなら、プライベートサブネットにあるインスタンスがインターネットに出ることができないからです

ということで、正解は「NATゲートウェイを追加する」でした

初歩的な凡ミスでした。。。

image.png

もしくは、「S3向けのVPCエンドポイントを作成する」 も正解です

最後に

インスタンスをプライベートサブネットに置く場合、セキュリティを気にしている場合が多いと思います
ただ、あまりにも怖がっていると今回のように凡ミスをやらかすかもしれません

プライベートサブネットを使う場合であっても、「インターネットアウトバウンドが必要かどうか、必要なら確保されているかどうか」をちゃんと確認すべきですね

この記事が誰かの役に立てばうれしいです

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10