TsgcWebSocketLoadBalancerServer › プロパティ › LoadBalancer
ロード バランサーが登録済みバックエンド全体にダウンストリーム接続を分散する方法と、どのプロトコルを分散するかを設定します。
property LoadBalancer: TsgcWSLoadBalancer_Options read FLoadBalancer write SetLoadBalancer;
LoadBalancing=lbRandom、Protocols.WebSocket=True、Protocols.HTTP=True
TsgcWebSocketLoadBalancerServer では、LoadBalancer プロパティはロードバランサー自体のランタイム動作を制御します。別のロードバランサーに登録するクライアントを設定するわけではありません(その役割は TsgcWebSocketServer の同名プロパティに属します)。バックエンドの TsgcWebSocketServer インスタンスは、自身の LoadBalancer.Enabled を有効にし、LoadBalancer.Host/LoadBalancer.Port をこのコンポーネントに向けることで登録します。登録データは内部の ServerList で追跡されます。
サブプロパティ:
LoadBalancing — 新しいダウンストリームクライアントが接続されたときにバックエンドを選択するために使用される分散アルゴリズム:
lbRandom(デフォルト)はランダムに登録済みバックエンドを返します。lbConnectionsは現在接続しているクライアントが最も少ないバックエンドを返します(最小接続数)。Protocols.WebSocket — Trueの場合、WebSocket接続はロードバランサーによって処理されます。Protocols.HTTP — True の場合、プレーンHTTPリクエストがバックエンドに転送されます(OnLoadBalancerHTTPRequest/OnLoadBalancerHTTPResponse イベントを使用してリクエスト/レスポンスペアを検査または変更します)。新しいダウンストリームクライアントへ返されるバインディングは、選択されたバックエンドが自身のLoadBalancer.Bindingsを通じてアドバタイズしたものです。OnBeforeSendServerBindingイベントを使用すると、送信される直前にその選択をオーバーライドできます。
oServer := TsgcWebSocketLoadBalancerServer.Create(nil);
oServer.Port := 80;
oServer.LoadBalancer.LoadBalancing := lbConnections;
oServer.LoadBalancer.Protocols.WebSocket := true;
oServer.LoadBalancer.Protocols.HTTP := true;
oServer.Active := true;