TsgcWebSocketLoadBalancerServer › Eigenschaften › LoadBalancer
Konfiguriert, wie der Load Balancer nachgelagerte Verbindungen über registrierte Backends verteilt und welche Protokolle balanciert werden.
property LoadBalancer: TsgcWSLoadBalancer_Options read FLoadBalancer write SetLoadBalancer;
LoadBalancing=lbRandom, Protocols.WebSocket=True, Protocols.HTTP=True
Auf TsgcWebSocketLoadBalancerServer steuert die Eigenschaft LoadBalancer das Laufzeitverhalten des Load Balancers selbst — sie konfiguriert nicht einen Client, der sich gegenüber einem anderen Load Balancer registriert (diese Rolle gehört zur gleichnamigen Eigenschaft auf TsgcWebSocketServer). Backend-TsgcWebSocketServer-Instanzen registrieren sich, indem sie ihr eigenes LoadBalancer.Enabled aktivieren und LoadBalancer.Host/LoadBalancer.Port auf diese Komponente zeigen lassen; Registrierungsdaten werden intern in ServerList verfolgt.
Untereigenschaften:
LoadBalancing — Verteilungsalgorithmus, der verwendet wird, um ein Backend auszuwählen, wenn ein neuer Downstream-Client verbindet:
lbRandom (Standard) gibt ein zufälliges registriertes Backend zurück.lbConnections gibt das Backend mit den derzeit wenigsten verbundenen Clients zurück (Least Connections).Protocols.WebSocket — wenn True, werden WebSocket-Verbindungen vom Load Balancer behandelt.Protocols.HTTP — wenn True, werden einfache HTTP-Anfragen an ein Backend weitergeleitet (verwenden Sie die Ereignisse OnLoadBalancerHTTPRequest/OnLoadBalancerHTTPResponse, um das Request-/Response-Paar zu überprüfen oder zu verändern).Das Binding, das an einen neuen Downstream-Client zurückgegeben wird, ist dasjenige, das das gewählte Backend über sein eigenes LoadBalancer.Bindings beworben hat; das OnBeforeSendServerBinding-Ereignis ermöglicht es Ihnen, die Auswahl unmittelbar vor dem Senden zu überschreiben.
oServer := TsgcWebSocketLoadBalancerServer.Create(nil);
oServer.Port := 80;
oServer.LoadBalancer.LoadBalancing := lbConnections;
oServer.LoadBalancer.Protocols.WebSocket := true;
oServer.LoadBalancer.Protocols.HTTP := true;
oServer.Active := true;