アプリケーションサーバー(Apache)にRESTful Webサービスをデプロイしました。ボリュームが大きくなっているので、スケーリングしたいと思います。さらに2つのマシンに2つのApacheインスタンスをデプロイします。
ラウンドロビン戦略に基づいてこれらのそれぞれにリクエストを送信するレイヤーを実装するにはどうすればよいですか?
現在、私はwww.mywebservice.com/employees?id=1
等々。
これらを別のインスタンスにリダイレクトするにはどうすればよいですか?何層かのファサードが必要になるので、どこにレイヤーが入るのか混乱しています。
私の経験では、サーバーをスケーリングする最良の方法は、個別のロードバランサーを使用してネットワークレベルで行うことです。
これはWebサーバーの前にあり、受信リクエストを特定のWebサーバーに転送します。これを行うには、非常に複雑なルールを設定できます。
例えば:
リクエストにバージョンヘッダーを追加して、ロードバランサーにリクエストを正しいバージョンのサービスにダイレクトさせることができます。
ダウンタイムなしでアップグレードできるサーバーの青/緑のグループを用意できます。
各サーバーの応答時間に基づいて負荷を割り当てることができます
等
これをアプリケーションコードに実装しようとする場合の問題は、リクエストがそのレベルに達すると、ボックスがすでに機能していることです。これは、負荷分散で回避しようとしていることです
Ewan が言ったように、ロードバランサーが必要になります。それらのいくつかは「リバースプロキシ」として知られています。
WebサービスがAmazon Web Servicesでホストされている場合は、組み込みのElastic Load Balancingを使用できます。これには、自動スケーリングやその他の多くの機能も含まれています。
インスタンスを追加する前に、次のことを考慮する必要があることに注意してください。
多くのインスタンス間で分割するのが非常に簡単なケースもあります。他の人は、より多くの計画、あなたのスクリプトがどのように機能するかについての十分な知識、そして結果についての注意深い考察を必要とします。
また、場合によっては、インスタンス数のスケーリングを試みる適切な場所に関連するキャッシュを追加する方が、簡単で効果的で安価な場合があります。