Difference between revisions of "Load balancer (Networking)"

From wikieduonline
Jump to navigation Jump to search
 
(62 intermediate revisions by 6 users not shown)
Line 1: Line 1:
Load balancing across multiple application instances is a commonly used technique for optimizing resource utilization, maximizing throughput, reducing latency, and ensuring fault‑tolerant configurations.
+
[[wikipedia:Load balancing (computing)|Load balancing]] across multiple application instances is a commonly used technique for optimizing resource utilization, maximizing throughput, reducing latency, and ensuring fault‑tolerant configurations.
  
  
  
Load balancing in [[Nginx]] is configured using <code>[[upstream]]</code> directive.<ref>https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/#overview</ref>
+
Load balancing in [[Nginx]] is configured using <code>[[upstream]]</code> directive.<ref>https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/#overview</ref>.
 +
* Supported load balancing algorithms: [[Round Robin]], [[Least Connections]], [[IP Hash]], [[Generic Hash]], [[Least Time]] ([[Nginx Plus]]), [[Random]]
 +
* Sticky methods ([[NGINX Plus]]): Sticky cookie, Sticky route ([[NGINX Plus]]), Sticky learn 
 +
 
 +
Network load balancer can provide service for different protocols, such as [[TCP]], [[UDP]], [[HTTP]] or [[HTTPS]].
 +
 
 +
 
 +
 
 +
== Configuration options ==
 +
* Listening port
 +
* [[FQDN]]
 +
* [[Protocol]]: [[TCP]], [[UDP]], [[HTTP]], [[HTTPS]], [[WebSockets]]
 +
* Destination servers and destination port
 +
* Load Balancing algorithm: [[WRR]], [[weighted least connection]], [[source IP hash]]
 +
* [[Sticky]] [[session]] (session affinity)
 +
 
 +
== Nginx configuration example ==
 +
<pre>
 +
upstream backend {
 +
    # no load balancing method is specified for Round Robin. Other options: least_conn, ip_hash, least_time header, random two least_time=last_byte
 +
    server backend1.example.com slow_start=30s;
 +
    server backend2.example.com max_conns=3;
 +
    server backend3.example.com weight=5;
 +
    server backend4.example.com;
 +
    #server backend5.example.com:443;    (if you are connecting to an https backend. Additional configuration is required)
 +
    server 192.0.0.1 backup;
 +
    #queue 100 timeout=70;  (option if using max_conns directive)
 +
}
 +
</pre>
 +
 
 +
 
 +
== HTTPS termination ==
 +
[[HTTPS]] termination is at least supported on [[Nginx]], [[Amazon ELB]]<ref>https://aws.amazon.com/elasticloadbalancing/faqs/</ref> and [[OpenStack]] <ref>https://docs.openstack.org/octavia/latest/user/guides/basic-cookbook.html#deploy-a-load-balancer-with-backend-re-encryption</ref>
 +
 
 +
== Activities ==
 +
* Read NGINX how to secure HTTP Traffic to Upstream Servers https://docs.nginx.com/nginx/admin-guide/security-controls/securing-http-traffic-upstream/
 +
 
 +
== Related terms ==
 +
* [[Amazon Load Balancers]]
 +
* [[Security groups for your Application Load Balancer (ALB)]]
 +
* [[Security groups for your Network Load Balancer (NLB)]] (do not have)
 +
* [[ALB]]
 +
* [[Amazon Elastic Load Balancer (ELB)]]
 +
* [[Application Load Balancer (ALB)]]: [[AWS Application Load Balancer (ALB)]]
 +
* [[Google Cloud Load Balancing]]
 +
* [[Load Balancer as a Service (LBaaS)]]
 +
* <code>[[openstack loadbalancer create]]</code>
 +
* [[Envoy Proxy]]
 +
* [[Oracle Cloud Load Balancer]]
 +
* [[Kubernetes load balancers]]
 +
* [[IncompatibleProtocols]]
 +
* [[MetalLB]] ([[Kubernetes]])
 +
* [[Emerald Dshackle]]
 +
* [[Outlier detection]] ([[Envoy]])
 +
* [[Round-robin]]
 +
 
 +
== See also ==
 +
* {{HTTPS}}
 +
* {{Proxy}}
 +
* {{ALB}}
 +
* {{LB}}
 +
 
 +
[[Category:web]]

Latest revision as of 15:01, 14 October 2024

Load balancing across multiple application instances is a commonly used technique for optimizing resource utilization, maximizing throughput, reducing latency, and ensuring fault‑tolerant configurations.


Load balancing in Nginx is configured using upstream directive.[1].

Network load balancer can provide service for different protocols, such as TCP, UDP, HTTP or HTTPS.


Configuration options[edit]

Nginx configuration example[edit]

upstream backend {
    # no load balancing method is specified for Round Robin. Other options: least_conn, ip_hash, least_time header, random two least_time=last_byte
    server backend1.example.com slow_start=30s;
    server backend2.example.com max_conns=3;
    server backend3.example.com weight=5;
    server backend4.example.com;
    #server backend5.example.com:443;    (if you are connecting to an https backend. Additional configuration is required)
    server 192.0.0.1 backup;
    #queue 100 timeout=70;  (option if using max_conns directive)
}


HTTPS termination[edit]

HTTPS termination is at least supported on Nginx, Amazon ELB[2] and OpenStack [3]

Activities[edit]

Related terms[edit]

See also[edit]

  • https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/#overview
  • https://aws.amazon.com/elasticloadbalancing/faqs/
  • https://docs.openstack.org/octavia/latest/user/guides/basic-cookbook.html#deploy-a-load-balancer-with-backend-re-encryption
  • Advertising: