ロードバランサーの使用を開始するWebサイトを作成していて、頭を抱えようとしています。
私が読んでいる多くの記事は本当に私に正直な答えを与えていないようです、または私はそれらを正しく理解していないので、真の負荷分散が技術面からどのように機能するかを頭に入れたいです、誰かが共有するコードを持っているなら、それもいいでしょう。
キャッシングが問題になることは理解していますが、それは別のトピック、セッションでもあります。
IISにはデフォルトでロードバランサーはありませんが、少なくとも2つのMicrosoftテクノロジーを使用できます。
これらのテクノロジーはどちらもコード自体を必要としません。これはインフラストラクチャの問題です。ただし、もちろん、開発中の負荷分散環境について覚えておく必要があります。たとえば、真にバランスの取れたWebサイトを作成するには、ステートレスでなければなりません。そうでない場合は、クライアントとサーバーの間にいわゆるstickinessを提供する必要があるため、同じクライアントが常に同じサーバーに接続します。
サービスをステートレスにするには、サーバー上の状態(ASP.NET Webサイトの場合のセッションなど)を永続化せず、ファーム内のすべてのサーバー間で共有される外部サーバー上に保持します。したがって、たとえば、クラスター内のすべてのサイトで外部 ASP.NETセッションサーバー (StateServerまたはSQLServerモード)を使用するのが一般的です。
編集:
いくつかのことを明確にするために、言及された両方のテクノロジーについて一言:
IISはすべてのバランシングを行いますか?
はい、設定した場合 Application Request Routing :
分散サーバー上にある別のWebレイヤーはありますか
はい。
認証やその他の作業など、サブサーバーに送信する前に機能するものはありますか?
No 、ARRはかなり「ダム」です:
IIS ARRは事前認証を提供しません。事前認証が必要な場合は、Windows Server 2012 R2で利用可能なWebアプリケーションプロキシ(WAP)を確認できます。
構成時にキャッシングを追加しながら、リクエストを受け入れて転送する透過プロキシとして機能します。
認証については、Windows Server 2012の Web Application Proxy を参照してください。
いくつかのヒント、およびおそらく自分自身を完全に理解するためのアイテム:
上記のすべての回答が上記の状態にあるARRは、ユーザーからサーバーへのトラフィックを処理する「プロキシ」です。
Konradが指摘するようにStateを処理するか、ARRに「スティッキー」セッションを実行させることができます(クライアントが常に「このサーバー」に行くことを確認してください-おそらく状態を維持するサーバー) その特定のクライアント)。その答えについてのディスカッション/コメントを見てください-それは素晴らしいです。
私はIT /サーバーハットをあまり長く着用していませんし、率直に言ってクラスタリングに触れていません(常に一部のプロバイダーによって「自動的に処理されます」)。そのため、ホストからこの質問をしました。私たちのクラスター/ファーム間の複製」は完了しましたか?」-質問は次のようなものをカバーしています
[〜#〜] ssl [〜#〜]: ARRもこれを処理できます 、それは素晴らしいことです!しかし、すべての力と同様に、 "con"が発生します-コード内でチェック/検証すると、 HttpRequest.IsSecureConnection まあ、それは常にfalse
になります。サーバー/ VMには証明書がありませんが、ARRにはあります。暗号化されたconnはclientとARRの間にあります。サーバー/ VMへのARRはありません。リンクで説明されているように、逆の方法(オフロードなし)を使用したい場合は、...を実行できますが、すべてのサーバー/ VMに証明書が必要です(また、上記の「レプリケーション」に関連する方法で、頭)。
包括的であることを意味せず、メモリから物事をリストアップするだけです...