質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

5411閲覧

ELBのヘルスチェックパス指定先

v_engineer0

総合スコア4

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/10/23 06:45

編集2020/10/23 08:44

Webアプリケーションを開発しており、インフラ面の整備中です。AWSの知識があまりないので質問です。
ELBのヘルスチェックのパスは、一般的に何を指定するものなのでしょうか。(何を指定すべきなのでしょうか。)
また、サーバーを2台で構成して、片方のシステムが立ち上がっていない場合はエラーとなるのが理想なのですが、そのような場合はどういった設定をすればよいでしょうか。

今はとりあえず対象のインスタンスのパス(index.html)を指定しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Webアプリケーションを開発しており、インフラ面の整備中です。AWSの知識があまりないので質問です。
ELBのヘルスチェックのパスは、一般的に何を指定するものなのでしょうか。(何を指定すべきなのでしょうか。)

ELBのヘルスチェックでどこまで担保したいか次第です。

  • webサーバが動作していることだけ担保出来てればいい

→適当なHTMLを指定

  • webアプリケーションのトップページが動作していることを担保したい

→トップページを指定(トップページの仕様として、問題発生時には200以外を返すようにする前提)

  • トップページだけでは確認出来ないようなところ(例えばDBへの書き込みやログイン可否)

→チェックしたい項目を満たすようなヘルスチェックプログラムを作ってそこを指定

という感じになります。

投稿2020/10/23 07:34

tanat

総合スコア18727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

v_engineer0

2020/10/23 08:42

わかりやすいご説明ありがとうございます。 サーバーを2台で構成して、片方のシステムが立ち上がっていない場合はエラーとなるのが理想なのですが、そのような場合についてご存じでしょうか。
tanat

2020/10/23 08:51

ELBのヘルスチェックはあくまでノード単体のチェックをするものですから、「両方が起動していないといけない」というチェックは役割的には範囲外です。 (お互いにチェックさせるようなヘルスチェックプログラムを書けば出来なくは無いですが、それならELBのヘルスチェックでは無く、別の方法で冗長化構成を組む方が良いです) > サーバーを2台で構成して、片方のシステムが立ち上がっていない場合はエラーとなる と言うのはよくわかりませんが、最終的な要件はおそらく 「常時2台のサーバが立ち上がっている」 でしょうから、AutoScalingの設定で最小インスタンスを2台にしておけば、 「ヘルスチェックに失敗したサーバは勝手に削除され、AMIから新たに立ち上がる」 という感じの挙動になるのでそれで要件は満たされるかと思いますよ。 立ち上がるまでの間は1台で動くことになるので、それが嫌なら最低インスタンス数を3台にするとかして対応します。 https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/AutoScalingGroup.html とか `AWS オートスケーリング`とかで調べてみてください。
maisumakun

2020/10/23 09:01

あと、意外と引っかかるパターンとして、ヘルスチェックURLにはHTTPアクセスする、ということがあります。 ヘルスチェックは200でないと通らないので、HTTPでのアクセスを301でHTTPSにリダイレクトさせる場合は、ヘルスチェックだけ外す必要があるのは要注意です。
v_engineer0

2020/10/27 00:53

>「常時2台のサーバが立ち上がっている」 こちらの要件で間違いありません、解釈ありがとうございます。 ELBのヘルスチェックを利用しての方法より、他の方法を使用した方が良いということがわかりました。 こちらの方法で検討したいと思います。ご回答ありがとうございました。
guest

0

サービスが正常化どうかを判断できるエンドポイントを指定されるので良いかと思います。
例えばindex.htmlが200でレスポンスしてくれたことが正常と判断するのであれば上記のような指定でよいかと思います。

ヘルスチェックでエラーとなった場合は、そのエンドポイントへの通信を通さないようになります。
ターゲットグループで複数のインスタンスで冗長化している場合は、正常なインスタンスのみに通信が通るようになります。

投稿2020/10/23 06:51

comefigo

総合スコア1051

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

v_engineer0

2020/10/23 08:52

ヘルスチェックのそもそもについて理解できました。ありがとうございます。最終的に実現したいことを追記しましたので、何かご存じであれば回答いただけると幸いです。
comefigo

2020/10/23 13:01

サービスの成否を常時監視したいのであれば、他の回答者のようなオートスケーリングを利用する方法もありますが、外形監視と呼ばれているAWS以外の監視サービスを利用するのもありかと思います。 Datadog https://www.datadoghq.com/ja/product/synthetic-monitoring/ PagerDuty https://pagerduty.digitalstacks.net/docs/guides/uptime-integration-guide/ Mackerel https://mackerel.io/ja/docs/entry/external-monitoring あとAWSのEC2が突然死することあるので、自動再起動の仕組みを考慮しておくのもありかと思います。 何秒以上通信不能の場合は、自動サービス(もしくはインスタンスの停止→起動)再起動する。
comefigo

2020/10/23 13:04

忘れていました。 DBなども含めて監視したい場合は、やはり監視の仕組みを導入されるのが良いかと思います。 弊社のサービスでも、同様にTopページのステータスだけで成否が判断つかないため、ステータスチェック用に裏ページを用意しています。 また、コンテナを使っていて、APPとDBが別コンテナ構成なら、APPコンテナにDBコンテナと接続できなかったら自動再起動するように仕込むのもありかと思います。
v_engineer0

2020/10/27 00:55

監視サービスを利用する手段は考えていなかったので、とても参考になります。 今回はオートスケーリングで検討しますが、また違うケースで教えてもらった方法を使用するかもしれません。 ご回答ありがとうございました。
comefigo

2020/10/27 00:57

解決されてよかったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問