インフラ初学者による複数azを跨いだAWSネットワーク構成


注意事項

この記事は普段インフラ構築とかをやらない人間が書いています。
間違えている点などがありましたら生暖かい目で指摘してください。

構成図

※費用の関係上bastionとnatサーバを同一インスタンスにしています。

気を付けたこと

  • webサーバはprivate subnet内に設置する。
    • webサーバに直接アクセスできる状態を避ける
    • ユーザーはpublicサブネットに紐づいたELBを経由してprivateのwebサーバからの返答を得る
    • 開発者はpublicに設置されたbastionサーバを踏み台にしてwebサーバへssh接続をする
    • webサーバから外部へ出ていく通信(update)などはNATサーバを経由するようにする。
  • 複数AZの使用
    • 障害耐性の向上など(auto scalingと組み合わせられるとなおよかった)

引っかかったこととその原因

  • webサーバから yum updateなどができなかった
    • 原因
      • NACLの設定が間違っていた(NACLのアウトバウンドの許可をnatインスタンスに向けていた)
      • 同一サブネット内にnatインスタンスがないためprivateサブネット内でリクエストが迷子になっていた
    • 解消
      • natインスタンスのアウトバウンドを0.0.0.0/0に対して許可した
    • 理由
      • privateに割り当てているルートテーブルで0.0.0.0/0に対してnatインスタンスを割り当てているので、0.0.0.0/0にリクエストすれば自動的にnatインスタンス経由でリクエストを送ることができる
  • bastionサーバに nat機能を持たせようとして時間を想定以上にとられた
    • 原因
      • AMIを知らなかった
    • 解消
      • natインスタンスのAMIを使用しnatを立てて、そこにbastionの役割を持たせた。
    • 理由
      • AMIがあるのでそれを使ったほうが楽。使えるものは使うべき。