Difference between revisions of "Load balancer (Networking)"

From wikieduonline
Jump to navigation Jump to search
Tags: Mobile web edit, Mobile edit
 
(35 intermediate revisions by 6 users not shown)
Line 3: Line 3:
  
  
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 balancer algorithms: [[Round Robin]], [[Least Connections]], [[IP Hash]], [[Generic Hash]]  
+
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]].
 
Network load balancer can provide service for different protocols, such as [[TCP]], [[UDP]], [[HTTP]] or [[HTTPS]].
Line 9: Line 11:
  
  
Typical options:
+
== Configuration options ==
 
* Listening port
 
* Listening port
 
* [[FQDN]]
 
* [[FQDN]]
* Protocol: [[TCP]], [[UDP]], [[HTTP]], [[HTTPS]], [[Websockets]]
+
* [[Protocol]]: [[TCP]], [[UDP]], [[HTTP]], [[HTTPS]], [[WebSockets]]
 
* Destination servers and destination port
 
* Destination servers and destination port
 
* Load Balancing algorithm: [[WRR]], [[weighted least connection]], [[source IP hash]]
 
* Load Balancing algorithm: [[WRR]], [[weighted least connection]], [[source IP hash]]
* [[Sticky]] [[session]]
+
* [[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 ==
 
== 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)]]
 
* [[Amazon Elastic Load Balancer (ELB)]]
 +
* [[Application Load Balancer (ALB)]]: [[AWS Application Load Balancer (ALB)]]
 +
* [[Google Cloud Load Balancing]]
 
* [[Load Balancer as a Service (LBaaS)]]
 
* [[Load Balancer as a Service (LBaaS)]]
 +
* <code>[[openstack loadbalancer create]]</code>
 +
* [[Envoy Proxy]]
 +
* [[Oracle Cloud Load Balancer]]
 +
* [[Kubernetes load balancers]]
 +
* [[IncompatibleProtocols]]
 +
* [[MetalLB]] ([[Kubernetes]])
  
 
== See also ==
 
== See also ==
 
* {{HTTPS}}
 
* {{HTTPS}}
 
* {{Proxy}}
 
* {{Proxy}}
* [[Traefik]]
+
* {{ALB}}
 +
* {{LB}}
  
 
[[Category:web]]
 
[[Category:web]]

Latest revision as of 12:59, 27 March 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: