web-dev-qa-db-ja.com

NGINXサーバーの前にELBを配置する利点は何ですか?

アマゾンウェブサービス、特にインスタグラムのバックエンド設定をたくさん調べました。 Instgram Engineering Blog で、Django/Gunicornを実行するアプリサーバーの前にある3つのNGINXサーバーの前にElasticLoad Balancerがあると述べましたが、それはなぜですか(バッファリング用ですか?キャッシング?)

その場合、これらのNGINXサーバーをDjango/gunicornアプリサーバーに接続するにはどうすればよいですか?

2
noahandthewhale

Instagramの投稿をちらっと見て、彼らがバッファリングやキャッシュにNginxを使用しているとは思わない(私は間違っているかもしれないが)。私は似たようなものを使用していますが、Nginxの代わりにHAProxyを使用しています。

このアプローチを採用した理由のいくつか:

  • NginxとHAProxyはレイヤー7で動作しますが、ELBはそれ以降4です。レイヤー7サービスが必要な場合、ELBはそれを提供できません
  • ヘルスチェックが失敗した場合の正常な接続の終了。 ELBは、トラフィックがアウトオブサービスインスタンスからブリードされている間、トラフィックをHAProxy/Nginxに渡し続けることができます。 https://forums.aws.Amazon.com/message.jspa?messageID=231571 を参照してください
  • 必要に応じて、負荷分散レイヤーをライブでスケールアウトできます
  • HAProxy/Nginxレイヤーの背後にある各インスタンスのトラフィックとパフォーマンスに関するより優れたメトリック
  • ELBは、HAProxyインスタンスに障害が発生したことを検出し、そのインスタンスへのトラフィックの送信を停止できます。
3
Shane Meyers

私が考えることができるいくつかのポイント:

  1. リクエストを配信し、サーバーの状態を監視するため、nginxサーバーのいずれかがクラッシュしても、サイトは問題なく動作し続けます。
  2. Amazonは、サービス拒否の緩和を行っています。自分で負荷分散を処理する場合は、それらにヒットするすべてのトラフィックに対して料金を支払うことになります。アマゾンがあなたのELBに向けられたいくつかの攻撃をブロックするなら、あなたはその部分にお金を払っていません。
  3. NginxサーバーのセキュリティグループをELBのみにロックして、パブリックインターネットに公開するよりも安全にすることができます。
2
ceejayoz