share facebook facebook facebook twitter twitter menu hatena pocket slack

2021.08.02 MON

TerraformとALB-request timed outについて

Shimpei Chiba

WRITTEN BY Shimpei Chiba

これは何

TerraformでAWS環境を構築した際、ALBのHealth checkでrequest timed outになったので、解決のメモ。

つまり…

request timed outなので、ググって以下を参考に対応。

"AWSのDocumentより"
HTTP 408: Request timeout
アイドルタイムアウト期間の期限が切れる前に、クライアントからデータが送信されませんでした。
TCP キープアライブを送信しても、このタイムアウトを防ぐことはできません。
各アイドルタイムアウト期間が経過する前に、1 バイト以上のデータを送信します。必要に応じて、アイドルタイムアウト期間を長くします。
"Qiitaより"
リクエストが通るには、
ロードバランサに設定したセキュリティグループのアウトバウンドルール
インスタンスに設定したセキュリティグループのインバウンドルール
の双方で接続を許可する必要があります。

ふ〜む、なるほど。
どうやら、タイムアウト値が短すぎるのか、SGのルールを見直す必要がありそうです。

参考
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html
https://qiita.com/koseki/items/61372f25dfe8c8bb7a63

結論

SGのルールは問題なく、どうやらTimeoutの期間が短すぎた模様。

"Terraform Document より"
timeout - (Optional) Amount of time, in seconds, during which no response means a failed health check. 
For Application Load Balancers, the range is 2 to 120 seconds, and the default is 
5 seconds for the instance target type and 30 seconds for the lambda target type. 
For Network Load Balancers, you cannot set a custom value, 
and the default is 10 seconds for TCP and HTTPS health checks and 6 seconds for HTTP health checks.

ALBのHealth checkについては、デフォルトのまま、特に値を変えることなくapplyしていたので、適当に以下に変更。

resource "aws_lb_target_group" "main" {
  name     = "lb-tg"
  port     = 80
  protocol = "HTTP"
  vpc_id   = aws_vpc.main.id
  health_check {
  interval = 90
  timeout = 60
      }
}

これで、request timed outは解決しました。
結局はデフォルトの値だとrequest timed outになる、ということだったのですが、他にも原因があるのかもしれません。
timeoutって普通はしっかり考えてデフォルト値にはしない(?)から、そんなに同じような問題を抱えている人がいないんでしょうか。

Terraformのデフォルトに従うとエラーになる、なんて天下のHashi Corpがするかなあと思ったりします。
なので他にも原因がありそうだなあと思いつつ、これで解決はしたので何だかなあという感じです。

参考
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_target_group

全文はこちら

https://qiita.com/namely_/items/73b29406dfab1d484733

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。