私は研究のための豪華な仕事をしていたので、コミュニティで結果を共有したいと思います。 タスクの意味は、AWS EC2 / VPCでのNGINX展開の最適なバージョンを決定することです。 特に高可用性の側面と応答速度の点から、多くの角度から最適です。 特に重要な要素はSSL要求の処理速度であるため、テストはSSLパフォーマンスで実行されました。
すべてのインスタンスは同じVPCネットワーク内にあり、ELBも同じネットワーク内で増加します。
展開のいくつかのバリエーションが検討されましたが、2つの主要な構成、つまり私が実施したテストに基づいて選択しました。
設定1. ELB
利点:
- 多くのアプリケーションの通常のスキーム。 ELBは2つ以上のNGINXインスタンスに直面し、トラフィックを通過させるため、構成の信頼性が高くなります(HA)。 ノードの1つに障害が発生した場合、トラフィックはそこに行きません。
- 簡単に拡張可能な設計。
短所:
- さらに、ネットワークへの1ホップ。
- 制御できません。
設定2. NGINX
利点:
- 外部のプロキシなしでバランサーに直接アクセスできます。
- インフラストラクチャを完全に制御します。
短所:
- ハートビートチェックとサーバー間の通信を適用することにより、高信頼性の設定は複雑になります。
- 非常にスケーラブル
テスト中
テストはm1.mediumインスタンス(3.75 GiBメモリ、2つのEC2 Compute Unit(1つの仮想コアと2つのEC2 Compute Unit))で行われました。 Webサーバーとして、nginxはデフォルトページで使用されました。 このテストは、Apache Benchを使用して別のAWSリージョンから実施されました。6人の競合ユーザーがページを400回要求しました。 各ケースでテストを100回繰り返しました。
そのため、4つのテストが実施されました。 両方の構成は、httpおよびhttps要求に応答しました。
非SSL
ELBが構造の応答率に与える影響を特定することを目的としたテスト。 ELBを使用した構成は、次のように応答が遅くなると想定されています。 ネットワーク上に追加のノードがあります。 しかし、ELBには複数の(この場合は2)NGINXインスタンスが存在する可能性があることも考慮する必要があります。これは1つよりも生産的です。
平均応答時間グラフ
すべての回答の平均結果(ミリ秒):
ELB: 209.586
NGINX: 207.934
結論
ご覧のとおり、結果は実質的に違いはありません。 NGINX構成はグラフ上のELBより常に高速ですが、1〜2%の差は絶対に許容できます。 また、ELB設定は設定がはるかに簡単で、安定性が高く、NGINXとほぼ同じ応答時間を持っているため、優先することができます。
SSL
テストの目的は、SSL暗号化に関する構成のパフォーマンスを調べることです。 ELB構成では、SSLはELBによって暗号化され、NGINX構成では、NGINXバランサーが1つ使用されます。
平均応答時間グラフ
すべての回答の平均結果(ミリ秒):
ELB: 455.921
NGINX: 437.745
結論
テストの開始時に、ELBは応答で大幅に遅れていました。 しかし、30回目のリクエストの後、生産性が向上しました。 これは、ELBが垂直方向にスケーリングされているためです。 計算能力を向上させた後、スケジュールに見られるように、パフォーマンスはほぼ同じになりました。
ご存じのとおり、ELBはm1.microインスタンスであり、タスクに対応していない場合は垂直にスケーリングできます。 これは決して制御されず、自動的に行われます。 ただし、AWSとのパートナーシップのおかげで、ELBの最小形状のインストールを実現できます。たとえば、ELBがm1.medium未満になることはありません。 これは、インフラストラクチャの速度を最大化するために行われます。 このエンタープライズオプションを使用する場合、SSL暗号化の場所の選択は、セットアップの容易さおよびその他の要因に依存します。 これまでのところ、これらの問題は考慮されていませんが、テスト結果は両方の構成がほぼ同等であることを示しています。
あとがき
パフォーマンステストは、AWS EC2 / VPCでELBを使用する場合と使用しない場合の構成で実行されました。 インジケータは、ELBの存在が応答時間にほとんど影響を与えないことを示していますが、それにより、高可用性ソリューションの構成が容易になります。 また、追加のAWSオプションを使用する場合、SSL処理を実行する場所はそれほど重要ではありません。 他の場合、十分な容量( 少なくともt1.microではない)で、ELBで実行しないでください。
これらの構成を比較する方法に関する他の興味深いアイデアがあれば、私はそれらにオープンです。 これですべてが実行され、さらにいくつかのテストを簡単に実行できます。
UPD
HAproxyのテストが実施されました。 予想どおり、HAproxyはNGINXよりもわずかに高速です。
平均リクエストのタイミング:
- HAproxy: 203.345ミリ秒
- HAproxy 経由の ELB: 204.97ミリ秒
全体像は次のとおりです。