24
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

AWS ELB(Elastic Load Balancer)を使うときの注意点

はじめに

ELB導入時に注意すべき点があったので、紹介します。

特に注意すべき、以下の点について紹介します。

  • KeepAliveの設定
  • リダイレクトの設定
  • ELBを配置するVPCサブネットの大きさ
  • ELBを配置するVPCサブネットのACL

WebサーバにKeepAliveを設定する

ELBからWebサーバへ接続する際に、TCP KeepAlive機能を有効にすることで、TCPコネクションを維持し、接続効率を向上させることができます。

例えば、Apacheでは以下の設定項目を修正します。
Keepaliveのタイムアウト時間は、長めに取ることで効果を得ることができます。

httpd.conf
KeepAlive On
KeepAliveTimeout [ELBのタイムアウト時間より長い時間]

検索すると120秒という文献が多く出てきますが、ちょっと古い記事がほとんどです。
もしかすると、昔はタイムアウト時間が60秒に固定されていたのかもしれませんが、現在はタイムアウト時間も設定することができるため、サービスに応じて変更すればよいと思います。

Webサーバでのリダイレクトの設定

例えば、正規のドメインへリダイレクトしたいとき、HTTP->HTTPSにリダイレクトしたいときなど、Webサーバ側でリダイレクトを行う事があると思います。
このとき、ELBのヘルスチェックでアクセスしたときに、リダイレクトレスポンスを返してしまうと、サーバが落ちていると判定されてしまいます。

そのため、ELBのヘルスチェックからのアクセスでは、リダイレクトをしないように工夫しましょう。
Apacheのmod_rewriteを使うときであれば、RewirteCondでUser-Agentを判定して、リダイレクトを行わないようにすることができます。

httpd.conf
  <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Port} !^443$
    RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker # User-Agentで判定する
    RewriteRule ^(.*)?$ https://example.net$1 [R=301,L]
  </IfModule>

ELBを配置するVPCサブネットの大きさ

ELBはアクセス数に応じてオートスケールアウトをします。
このとき、ロードバランサの台数が増加するので、ELBで利用するVPCのプライベートIPアドレスも増加します。
ELBを配置するサブネットが小さすぎるとスケールアウトできなくなるので、サービスの規模に応じて、サブネットは少し大きめに設計する方がよさそうです。

ELBを配置するVPCサブネットのACL

ELBを配置するサブネットのACLでは、WebサーバからTCP1024-65535のインバウンドを許可しなければなりません。
Linuxの標準的なエフェメラルポートは32768-65535ですが、ELBで利用するポートは非常に広いため、設定に注意が必要です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
24
Help us understand the problem. What are the problem?