ELB のバックエンドサーバーとして Apache または NGINX を使用するための最適な設定を教えてください。

所要時間1分
0

Apache または NGINX を実行する Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを、Elastic Load Balancing (ELB) のバックエンドサーバーとして使用したいと考えています。しかし、最適なパフォーマンスを得るためにどの設定を使用すればよいかわかりません。

解決方法

ロードバランサーに最適な設定は、お客様のユースケースによって異なります。最適なパフォーマンスを得るには、バックエンドアプリケーションの応答時間とクライアントの要件を分析します。

バックエンドアプリケーションが Apache または NGINX を実行している場合は、次のパラメータを確認します。

クライアントヘッダータイムアウト (Apache の Timeout、NGINX の client_header_timeout)
アプリケーションのタイムアウトをロードバランサーのアイドルタイムアウト値よりも大きい値に設定します。これを行って、ロードバランサーがアイドル接続を適切に終了するようにします。ロードバランサーに適切に通知せずに、バックエンドサーバーで接続を終了すると、504 エラーが表示されることがあります。

キープアライブ (Apache の KeepAlive、NGINX の keepalive_disable)
CPU 使用率を削減し、応答時間を改善するには、キープアライブをオンにします。キープアライブをオンにすると、ロードバランサーで、HTTP リクエストの度に新しい TCP 接続を確立する必要がありません。

キープアライブタイムアウト (Apache の KeepAliveTimeout、NGINX の keepalive_timeout)

キープアライブオプションが有効になっている場合は、ロードバランサーのアイドルタイムアウトよりも長いキープアライブタイムアウトを選択します。

読み取りタイムアウト (Apache の RequestReadTimeout、NGINX の client_header_timeoutclient_body_timeout)
アプリケーションの応答時間に合わせて読み取りタイムアウトを設定します。こうすることで、ロードバランサーがリクエストのヘッダーとボディの両方を受信するために、接続を十分な時間開いたままにしておくことができます。

警告: ロードバランサーのアイドルタイムアウト値がバックエンドタイムアウトよりも小さいことを確認してください。

キープアライブリクエストの最大数 (Apache の MaxKeepAliveRequests、NGINX の keepalive_requests)
このオプションでは、キープアライブがオンになった時に単一の TCP 接続で処理するリクエストの数を設定します。リソースを有効に使用するために、キープアライブリクエストの最大数は 100 以上に設定します。

AcceptFilter (Apache の AcceptFilter、NGINX の accept_filter)
AcceptFilter はデフォルトで有効になっており、接続に TCP_DEFER_ACCEPT オプションを使用するよう Apache に指示します。この設定により、TCP ソケットが「ハーフオープン」状態になる可能性があります。この状態では、ロードバランサーは接続が確立されていると見なしますが、バックエンドインスタンスは接続が確立されていません。ハーフオープン接続は、性能が高くないロードバランサーで最も一般的です。この場合、使用前の接続に時間がかかります。

ロギング: Apache の各リクエストのログに ELB の x-forwarded-for ヘッダーが表示されるように、%{X-Forwarded-For}i オプションを有効にします。このヘッダーには、元のクライアントの IP アドレスが含まれます。%D オプションは、アクセスログに対する各リクエストの処理にかかる時間を追加します。

LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" combined

Apache: Apache MPM イベントモジュールは、ロードバランサーからの接続を早期に切断する可能性があります。接続が早期に切断されると、Application Load Balancer では HTTP 502 エラーが、Classic Load Balancer では HTTP 504 エラーが生成されます。この動作を抑制するためには、代わりに MPM ワーカーモジュールを使用するのがベストプラクティスです。

注: 設定を更新したら、Apache または NGINX を再起動します。


関連情報

Classic Load Balancer の登録済みインスタンス

Classic Load Balancer の設定

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ