HAProxy AWS OpsWorks スタックレイヤー - AWS OpsWorks

HAProxy AWS OpsWorks スタックレイヤー

注記

この Layer は、Chef 11 以前の Linux ベースのスタックでのみ使用できます。

AWS OpsWorks スタック HAProxy レイヤーとは、信頼できる高パフォーマンスの TCP/HTTP ロードバランサーである HAProxy サーバーをホストするインスタンスの設計図となる AWS OpsWorks スタックレイヤーです。通常は、1 つのスモールインスタンスで、すべてのアプリケーションサーバートラフィックを十分に処理できます。

注記

スタックは 1 つのリージョンに制限されます。アプリケーションを複数のリージョンに分散させるには、リージョンごとに個別のスタックを作成する必要があります。

HAProxy Layer を作成するには

  1. ナビゲーションペインで、[Layers] をクリックします。

  2. [Layers] ページで [Add a Layer] または [+ Layer] をクリックします。[Layer type] で [HAProxy] を選択します。

Layer には、次の設定があります。すべてがオプションです。

HAProxy statistics

Layer が統計を収集および表示するかどうか。デフォルト値は [Yes] です。

Statistics URL

統計ページの URL パス。完全な URL は、http://DNSNameStatisticsPath の形式になっています (DNSName は、関連付けられているインスタンスの DNS 名)。StatisticsPath のデフォルト値は /haproxy?stats です。たとえば、http://ec2-54-245-151-7.us-west-2.compute.amazonaws.com/haproxy?stats のようになります。

Statistics user name

統計ページのユーザー名。統計ページを表示するには、指定する必要があります。デフォルト値は "opsworks" です。

Statistics password

統計ページのパスワード。統計ページを表示するには、指定する必要があります。デフォルト値はランダムに生成される文字列です。

Health check URL

ヘルスチェック URL サフィックス。HAProxy はこの URL を使用して定期的に各アプリケーションサーバーインスタンスの HTTP メソッドを呼び出し、インスタンスが機能しているかどうかを判断します。ヘルスチェックが失敗した場合、HAProxy は手動で、または自動ヒーリングによってインスタンスが再開されるまで、インスタンスへのトラフィックのルーティングを停止します。URL サフィックスのデフォルト値は "/" です。これは、サーバーインスタンスのホームページ http://DNSName/ に対応しています。

Health check method

インスタンスが機能しているかどうかを確認するために使用される HTTP メソッド。デフォルト値は OPTIONS で、GET または HEAD を指定することもできます。詳細については、「httpchk」を参照してください。

Custom security groups

この設定は、AWS OpsWorks スタックの組み込みセキュリティグループをレイヤーと自動的に関連付けないことを選択している場合に表示されます。Layer に関連付けるセキュリティグループを指定する必要があります。グループが正しく設定され、Layer 間のトラフィックが許可されていることを確認します。詳細については、「新しいスタックを作成する」を参照してください。

注記

パスワードは後で必要になるのでメモしておいてください。AWS OpsWorks スタックでは、レイヤーの作成後はパスワードを表示できないようになっています。ただし、Layer の [Edit] ページに移動し、[General Settings] タブの [Update password] をクリックして、パスワードを更新できます。

HAProxy Layer のしくみ

デフォルトで、HAProxy は以下のように動作します。

  • HTTP ポートと HTTPS ポートのリクエストをリッスンします。

    Chef 設定テンプレート (haproxy.cfg.erb) をオーバーライドすることによって、HTTP または HTTPS ポートだけをリッスンするように HAProxy を設定できます。

  • 任意のアプリケーションサーバー Layer のメンバーであるインスタンスに受信トラフィックをルーティングします。

    デフォルトでは、AWS OpsWorks スタックは任意のアプリケーションサーバー Layer のメンバーであるインスタンスにトラフィックを分散させるように HAProxy を設定します。たとえば、スタックに Rails アプリケーションサーバー と PHP アプリケーションサーバー の両方の Layer を持たせることができ、HAProxy マスターはトラフィックを両方の Layer のインスタンスに分散します。カスタムレシピを使用すると、デフォルトルーティングを設定できます。

  • 複数のアベイラビリティーゾーンにトラフィックをルーティングします。

    1 つのアベイラビリティーゾーンがダウンした場合、ロードバランサーは他のゾーン内のインスタンスに受信トラフィックをルーティングするので、アプリケーションは中断せずに実行できます。そのため、推奨される方法は、複数のアベイラビリティーゾーンにアプリケーションサーバーを分散することです。

  • 指定されたヘルスチェックメソッドを各アプリケーションサーバーインスタンスに対して定期的に実行し、正常性を評価します。

    指定されたタイムアウト期間内にメソッドが戻らない場合は、インスタンスに障害が発生していると推定されるため、HAProxy はそのインスタンスへのルーティングリクエストを停止します。AWS OpsWorks スタックには、障害が起きたインスタンスを自動的に置き換える方法も用意されています。詳細については、「自動ヒーリングの使用」を参照してください。Layer を作成する際に、ヘルスチェックメソッドを変更できます。

  • 統計情報を収集し、オプションでウェブページに表示します。

重要

ヘルスチェックがデフォルトの OPTIONS メソッドで正しく動作するには、アプリケーションが 2xx または 3xx ステータスコードを返す必要があります。

デフォルトでは、HAProxy レイヤーにインスタンスを追加すると、AWS OpsWorks スタックはそのアプリケーションを表す Elastic IP アドレスを割り当てます。このアドレスは、世界中に対してパブリックです。HAProxy インスタンスの Elastic IP アドレスは、アプリケーションのパブリックに公開される URL に過ぎないので、基盤となるアプリケーションサーバーインスタンスのためのパブリックドメイン名を作成および管理する必要はありません。次の図に示すように、[Instances] ページに移動し、インスタンスのパブリック IP アドレスを調べることで、アドレスを取得することもできます。"(EIP)" の前に表示されているアドレスが Elastic IP アドレスです。Elastic IP アドレスの詳細については、「Elastic IP アドレス (EIP)」を参照してください。

HAProxy インスタンスを停止すると、AWS OpsWorks スタックはその Elastic IP アドレスを保持し、そのインスタンスの再開時に再割り当てします。HAProxy インスタンスを削除すると、デフォルトでは、AWS OpsWorks スタックはそのインスタンスの IP アドレスを削除します。アドレスを保持するには、次の図に示されているように、[Delete instance's Elastic IP] オプションをオフにします。

このオプションは、削除されたインスタンスと置き換えるために新しいインスタンスを Layer に追加したときに何が起こるかに影響します。

  • 削除したインスタンスの Elastic IP アドレスを保持してある場合、AWS OpsWorks スタックはそのアドレスを新しいインスタンスに割り当てます。

  • そうでない場合、AWS OpsWorks スタックはインスタンスに新しい Elastic IP アドレスを割り当てるので、そのアドレスにマップされるように DNS レジストラ設定を更新する必要があります。

アプリケーションサーバーインスタンスが、手動、自動スケーリング、または自動ヒーリングによってオンラインになるかオフラインになるときは、トラフィックを現在のオンラインインスタンスのセットにルーティングするようにロードバランサー設定を更新する必要があります。このタスクは、Layer の組み込みレシピによって自動的に処理されます。

  • 新しいインスタンスがオンラインになると、AWS OpsWorks スタックは Configure ライフサイクルイベントをトリガーします。HAProxy Layer の組み込み Configure レシピは、リクエストを任意の新しいアプリケーションサーバーインスタンスにも分散するようにロードバランサー設定を更新します。

  • インスタンスがオフラインになるか、インスタンスがヘルスチェックに失敗した場合も、AWS OpsWorks スタックは Configure ライフサイクルイベントをトリガーします。HAProxy Configure レシピはロードバランサー設定を更新して、トラフィックを残りのオンラインインスタンスのみにルーティングします。

最後に、HAProxy Layer でカスタムドメインを使用することもできます。詳細については、「カスタムドメインの使用」を参照してください。

統計ページ

統計ページを有効にした場合、HAProxy は指定された URL のさまざまなメトリックスを含むページを表示します。

HAProxy 統計を表示するには

  1. HAProxy インスタンスの [Public DNS] の名前をインスタンスの [Details] ページから取得し、それをコピーします。

  2. [Layers] ページの [HAProxy] をクリックし、その Layer の詳細ページを開きます。

  3. Layer の詳細から統計の URL を取得し、それをパブリック DNS 名に追加します。たとえば、http://ec2-54-245-102-172.us-west-2.compute.amazonaws.com/haproxy?stats とします。

  4. 前の手順の URL をブラウザに貼り付け、Layer を作成したときに指定したユーザー名とパスワードを使用して統計ページを開きます。