web-dev-qa-db-ja.com

AWS ALBでのHTTPSのトラブルシューティング:ターゲットグループのヘルスチェックが失敗する

AWS EC2インスタンスにHTTPSを設定するのに問題があります。つまり、EC2インスタンスでプログラムを実行しており、クライアントからAWSにデータを安全に転送できることが重要です。

これまでに行ったこと:

AWSの場合:

  • EC2インスタンス(t2.micro、ubuntu)を起動しました。インスタンスは正常に稼働しており、SSH経由でアクセスできます。
  • Www.ourdomain.comの下で、Amazonの証明書マネージャーを介してパブリックSSL証明書を作成しました
  • 以前の証明書を使用して、HTTPSリスナー(ポート443上)を備えたインターネット向けのアプリケーションロードバランサーを作成した
  • EC2インスタンスでターゲットグループを作成し、ロードバランサーに追加しました
  • ロードバランサーセキュリティグループの場合、任意の場所からのインバウンドHTTPS、およびEC2インスタンスのセキュリティグループへのアウトバウンドHTTPおよびHTTPSを有効にします
  • インスタンスセキュリティグループの場合、ロードバランサーセキュリティグループからの受信HTTPS

On GoDaddy:

  • CNAMEレコードを作成しました(ホスト:www.ourdomain.com、値:ロードバランサーDNS名)

問題:

  • ターゲットグループの[ターゲット]タブの下に、「これらのアベイラビリティーゾーンには正常なターゲットが含まれていません。リクエストはすべてのターゲットにルーティングされています」と表示されます。
  • さらに、ターゲットグループの[ターゲット]タブの下にあるインスタンスの情報ボタンには、「ヘルスチェックが次のコードで失敗しました:[502]」と表示されます。
  • Ssllabs.comでドメインを確認すると、「評価に失敗しました:サーバーに接続できません」と表示されます

可能であればRoute53の使用を避けたいのですが、Route53に関係のないこの問題に関するAWSドキュメントが見つかりません。

私はネットワーキングやAWSの専門家ではないので、単純なものが欠けている可能性は十分にあります。どんな提案も大歓迎です!

2
pixel-drinker

@Jakubの説明とは別に、ヘルスチェックAPIが正常に機能することを確認してください。私はAWS Fargateを使用しており、ロードバランサーが作成されると、ヘルスチェックはヘルスチェックAPIとしてデフォルトの「/」を持ち、ECSサービスを作成すると、サービスの名前は「/ ecs-service」になります。このリンクで指定されているように、ここで構成されているヘルスチェックAPIを確認できます https://engineering.telia.no/blog/troubleshooting-fargate-health-check

AWS CLIコマンド:aws elbv2 modify-target-group --target-group-arn ""\--health-check-timeout-seconds 30\--health-check-interval-seconds 200

ECS Fargateを使用している場合は、次の手順を実行していることを確認してください。1)コンテナーでサブネットIPアドレスにアクセスできるかどうか2)Dockerコンテナーポートが適切に公開されていますか? 3)ヘルスチェックAPIは正しく機能していますか?

1

502は不適切なゲートウェイです。ルーティングに問題があります。多くの場合、それはセキュリティグループまたはルーティングテーブルです。

Alb/elbおよびec2インスタンスは、同じVPC内の別々のサブネットにある必要があります。

Elbはポート80での接続を受け入れ、ポート443にリダイレクトする必要があります。EC2インスタンスは、elbが存在するサブネットからポート80での接続を受け入れる必要があります。

EC2インスタンスがポート80に存在するサブネットを指すターゲットグループを作成しますが、インスタンスが実際にそのポートでリッスンしていることを確認する必要があります。

次に、そのターゲットグループを使用するELBを作成します。

ポート80リスナールールの場合、 https://www.ourdomain.com:443/ ? 、ステータスコードhttp_301。

ポート443リスナールールの場合、ターゲットグループに転送します。

0
Chupacabra

チュパカブラにはいくつかの良い提案がありますが、助けにはなりませんでしたか?私もこれに多くの時間を浪費し、ここに私のヒントを要約します: AWS Fargate:恐ろしい「サービス..は正常でない」のトラブルシューティング

トップのヒント:

  1. 200のリクエスト/返却はOKですか?
  2. 彼らは十分に速く戻りますか?
  3. 開始後、サービスは十分に速く応答し始めますか?
  4. リスナーは、正しいプロトコルを使用して、サービスが実際に実行されているポートでサービスに接続しようとしますか?サービスのセキュリティグループは、ロードバランサーのセキュリティグループがポートにアクセスすることを許可しますか?

詳細とヒントについては、ブログ投稿を参照してください。

0
Jakub Holý