[新機能] AWS Elastic Load Balancing(ELB)のタイムアウト値を変更する
ども、大瀧です。
本日、AWSで使用できるロードバランササービス、ELBでタイムアウト値変更のオプションが追加されました。これまでは、AWSサポートに個別に連絡しAWS側で変更するという手続きでしたが、ユーザー側で自由に設定できるようになりました!!また、上限も以前は17分でしたが、今回のアップデートでなんと最大60分まで設定できます。
ELBのタイムアウト値とは
ELBは、ロードバランサのサービスとして一般に言うリバースプロキシの機能を持ちます。処理の流れを以下に示します。
- ELBはクライアントからのリクエストを受信し、EC2インスタンスに転送する
- EC2インスタンスはELBが転送したリクエストに対応する処理を実行する
- EC2インスタンスはレスポンスとしてELBに処理の結果を返送する
- ELBはEC2インスタンスのレスポンスをクライアントに転送する
今回のタイムアウト値は、上記手順の2と3にかかった時間の合計値を指します。デフォルトは60秒で、60秒を経過するとELBはEC2インスタンスのレスポンスを待たずに、エラーとしてクライアントにHTTP 504: Gateway Timeoutを返します。EC2でのリクエストに対する処理がJavaやPHPなどの動的処理で時間がかかったり、EC2の処理性能が足りないというケースで起こりうるトラブルです。
設定方法
現状、ELBのCreate Load Balancerのウィザードには設定が見当たらないため、ELBを作成したあとでタイムアウト値を変更します。
AWS Management ConsoleのEC2の管理画面のメニューから[Load Balancers]を選択し、ELB一覧から設定したいELBを選択します。[Details]タブの項目の末尾、[Connection Settings]にある[Idle Timeout]が今回のタイムアウト値です。ここで、現在の設定の確認と変更ができます。
では、試しに60分に変更してみます。[Edit]リンクをクリックし、秒単位でタイムアウト値を入力します。今回は60分なので、3600と入力し[Save]で保存します。
タイムアウト値が60分になりました!
まとめ
ELBのタイムアウト値が変更できるようになったこと、上限が60分になったことをご紹介しました。ELBを使った構成でアプリの動きがおかしい!といったときにこの記事を思い出してみてください。