2017-03-07 28 views
0

AWS Cloudformationを使用してWebアプリケーションを作成しようとしています。この特定のアプリは3つのインスタンス(Webサーバー、Appサーバー、RDSデータベース)を持ちます。私はこれらのインスタンスがお互いに話すことができるようにしたい。たとえば、WebサーバーはAppサーバーと通信し、AppサーバーはRDSデータベースと通信する必要があります。内部IPアドレスを使用したAWS輻輳通信

お互いのIPアドレスを知るようにサーバーを構成する方法を理解できません。私はこれを行うには3つの方法があります理解 - しかし、私は現実的に可能か、可能であるこれらのかわからないんだけど:

  1. 私は、スタック中は固定プライベートIPアドレス(例:192.168.0.2など)を割り当てることができますこれらのIPアドレスを使用してこれらのIPアドレスを使って通信するコードを手動で調整することができます。
  2. 私はAWS Cloudformationが作成されたインスタンスのIPアドレスを返すのを待つことができます。何らかの形でスタック作成プロセス中に作成されたインスタンスのIPアドレスを取得し、作成した次のインスタンスにパラメータとして格納できます(Cloudformでこれを許可しているかどうかわかりません)

これを設定する最も良い方法はどれですか?また、私が雲の形でどのようにこれを行うことができるかについて少し詳しく説明してください。

答えて

1

解決策は、WebサーバーとAppサーバーをELB(ロードバランサ)の後ろに配置することです。これにより、WebサーバーはELBのURL(アプリケーションサーバーのIPではなく)を使用してアプリケーションサーバーと通信します。アプリケーションサーバーは、RDSインスタンスのエンドポイント(これもURLです)を経由してRDSインスタンスと通信できます。

インフラストラクチャを3つのCloudFormationスタック(RDSデータベース、アプリケーションサーバー、およびWebサーバー)に分けたとします。 RDSスタックは、CloudFormation Outputs機能を介してRDSインスタンスを公開します。このエンドポイントは、AppサーバースタックのCloudFormationパラメータとして使用されます。 App ServerのLauchConfigurationのUserDataフィールドにRDSエンドポイントを挿入して、起動時にAppサーバーがRDSインスタンスのエンドポイントを認識できるようにすることができます。最後に、AppサーバースタックにAppサーバーのELBエンドポイントが公開されます(再度CloudFormation出力機能を使用します)。同じレシピを使用して、AppサーバーのELBのURLがWebサーバースタックに挿入され、使用されます。

また、オートスケーリンググループを使用してサービス(Webサーバー、アプリケーションサーバー)を監視することもお勧めします。あなたのインスタンスがあなたの支配していない要因によって終了する可能性は非常に高いです。その場合は、Autoscalingグループが新しいインスタンスを新規作成し、ELBの背後に配置するようにします。

+0

ありがとうございます。@spg ..ここで何を意味しているのか分かります。私はデータベースのためにパブリックURLを使用することの大きなファンではないが、それはアプリケーションサーバーのために働くことができます。乾杯! – Sam

+0

URLを公開する必要はありません。必要に応じて、VPC内のすべてをプライベートに保つことができます。 – spg

関連する問題