Load balancer - bobbae/gcp GitHub Wiki
Cloud Load Balancing allows you to put your resources behind a single IP address that is externally accessible or internal to your Virtual Private Cloud (VPC) network.
Cloud Load Balancing can put your resources behind a single anycast IP and scale your resources up or down with intelligent autoscaling. Cloud Load Balancing comes in a variety of flavors and is integrated with Cloud CDN for optimal application and content delivery.
Google Cloud Load Balancing enables enterprises and cloud-native entities to deliver highly available, scalable, low-latency cloud services with a global footprint. Use Google Global Load Balancing to deliver global reach and scale and scale private services using Internal Load Balancing (ILB) for clients in Google Cloud or on-prem across Interconnect/VPN.
https://cloud.google.com/load-balancing/docs/features
https://cloud.google.com/load-balancing/docs/locations
https://cloud.google.com/load-balancing/docs/load-balancing-overview
https://cloud.google.com/load-balancing/docs/choosing-load-balancer
https://medium.com/@rubenszimbres/overview-of-google-cloud-load-balancers-d8b9c1ad9476
https://cloud.google.com/load-balancing/docs/https#load-balancer-mode
GCP Internal load balancing is architected using Andromeda, Google’s software-defined network virtualization platform. Internal load balancing also includes support for clients across VPNs.
https://cloud.google.com/load-balancing/docs/internal
https://cloud.google.com/load-balancing/docs/l7-internal/int-https-lb-tf-examples
https://cloud.google.com/load-balancing/docs/network
https://cloud.google.com/load-balancing/docs/network/setting-up-network-backend-service
https://cloud.google.com/load-balancing/docs/https
https://cloud.google.com/load-balancing/docs/https#load-balancer-mode
https://cloud.google.com/load-balancing/docs/https/setup-global-ext-https-compute
https://cloud.google.com/load-balancing/docs/https/ext-http-lb-tf-module-examples
https://cloud.google.com/load-balancing/docs/https/setting-up-reg-ext-https-lb
https://cloud.google.com/load-balancing/docs/ssl
https://cloud.google.com/load-balancing/docs/tcp
https://cloud.google.com/load-balancing/docs/tcp/ext-tcp-proxy-lb-tf-examples
https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts
https://cloud.google.com/load-balancing/docs/enabling-connection-draining
https://cloud.google.com/load-balancing/docs/health-check-concepts
https://cloud.google.com/load-balancing/docs/firewall-rules
https://cloud.google.com/load-balancing/docs/negs
https://cloud.google.com/load-balancing/docs/url-map-concepts
https://cloud.google.com/load-balancing/docs/dns-names
https://cloud.google.com/compute/docs/internal-dns
https://cloud.google.com/load-balancing/docs/ssl-certificates
https://cloud.google.com/load-balancing/docs/ssl-certificates/self-managed-certs
https://cloud.google.com/load-balancing/docs/ssl-certificates/google-managed-certs
https://cloud.google.com/load-balancing/docs/backend-service
https://cloud.google.com/load-balancing/docs/features#backends
https://cloud.google.com/load-balancing/docs/ssl-certificates/encryption-to-the-backends
https://cloud.google.com/compute/docs/regions-zones#zones_and_clusters
https://cloud.google.com/load-balancing/docs/backend-service#protocol_to_the_backends
https://cloud.google.com/load-balancing/docs/ssl-policies-concepts
https://medium.com/google-cloud/understand-cloud-load-balancer-like-a-senior-engineer-d4f55f3111fc
In GKE, an Ingress object defines rules for routing HTTP(S) traffic to applications running in a cluster. An Ingress object is associated with one or more Service objects, each of which is associated with a set of Pods. To learn more about how Ingress exposes applications using Services, see Service networking overview.
When you create an Ingress object, the GKE Ingress controller creates a Google Cloud HTTP(S) Load Balancer and configures it according to the information in the Ingress and its associated Services.
To use Ingress, you must have the HTTP load balancing add-on enabled. GKE clusters have HTTP load balancing enabled by default; you must not disable it.
- Round robin: The load balancer distributes connection requests to a pool of servers in a repeating loop, regardless of relative load or capacity. Server A, server B, server C, server A, server B, etc.
- Weighted round robin: This is like the standard round robin, except for the fact that certain back end servers can be assigned to a higher priority, receiving disproportionally more traffic/requests. Server A, server A, server B, server C, server A, server A, server B, server C, etc.
- Least connections: This algorithm is fairly self-explanatory; the load balancer sends a new request to the back end server with the least number of active connections.
- Weighted least connections: This algorithm is like least connections, but certain back end servers can be assigned a higher priority, receiving disproportionally more traffic/requests. In a scenario where some back end servers have a larger or more performant resource configuration, you would use WLC to route them a greater share of the traffic.
- Random: Requests are sent to back end servers in a completely random fashion. No considerations are made for load levels, connection count, etc.
https://cloud.google.com/kubernetes-engine/docs/concepts/container-native-load-balancing
https://cloud.google.com/kubernetes-engine/docs/how-to/standalone-neg
Instead of routing to the machine and then relying on iptables to route to the pod, Container native load balancing using NEGs allow the traffic straight to the pod. This leads to decreased latency and an increase in throughput when compared to traffic routed with non container native load balancers.
https://tech.groww.in/container-native-load-balancing-and-how-it-helped-us-1413d8d6decb
https://cloud.google.com/load-balancing/docs/negs/zonal-neg-concepts
Maglev is Google's network load balancer. It is a large distributed software system that runs on commodity Linux servers.
Andromeda is the network virtualization environment for Google Cloud Platform (GCP).
https://cloud.google.com/certificate-manager/docs
Certificate Manager lets you acquire and manage TLS (SSL) certificates for use with Cloud Load Balancing.
When the Service type is set to LoadBalancer, Kubernetes provides functionality equivalent to type equals ClusterIP to pods within the cluster and extends it by programming the (external to Kubernetes) load balancer with entries for the Kubernetes pods. The Kubernetes service controller automates the creation of the external load balancer, health checks (if needed), firewall rules (if needed) and retrieves the external IP allocated by the cloud provider and populates it in the service object.
https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
Also ClusterIP, Ingress, NodePort, Load Balancer are some of the ways to expose services.
MetalLB is a load-balancer implementation for bare metal Kubernetes clusters, using standard routing protocols.
In GKE, an Ingress object defines rules for routing HTTP(S) traffic to applications running in a cluster. An Ingress object is associated with one or more Service objects, each of which is associated with a set of Pods.
https://cloud.google.com/kubernetes-engine/docs/concepts/ingress
Nginx HTTP Load Balancer is widely used. Nginx offers highly scalable performance out of the box and can be extended with additional modules like Lua.
Traefik can load balance services. Traefik bills itself as the “cloud native edge router.” It’s a modern microservices-focused application load balancer and reverse proxy written in Golang. With its emphasis on support for several modern container orchestration platforms, batteries-included logging, and several popular metric formats, Traefik is a top choice for container-based microservices architectures.
HAProxy is another common name in the web ecosystem. HAProxy offers reverse proxying and load balancing of TCP and HTTP traffic. When you choose HAProxy, you’re choosing a high-performance, well-established solution.
Seesaw is another open-source load balancer written in Golang. It was originally created by Google SREs to provide a robust solution for load balancing internal Google infrastructure traffic.
Neutrino is a Scala-based software load balancer originally developed by eBay. Neutrino’s strength lies in the broad compatibility of its runtime environment, the JVM.
Github Load Balancer Director is a set of components that provide a scalable set of stateless Layer 4 load balancer servers capable of line rate packet processing in bare metal datacenter environments, and is used in production to serve all traffic from GitHub's datacenters.
https://www.nginx.com/resources/glossary/reverse-proxy-vs-load-balancer/
https://www.f5.com/services/resources/glossary/reverse-proxy
https://cloud.google.com/load-balancing/docs/internal/ilb-next-hop-overview
https://medium.com/@ozcosta/google-cloud-networking-ilb-as-next-hop-with-tags-ab5f30a0e0c3
A list of Load Balancers.
https://cloud.google.com/anthos/service-mesh
https://cloud.google.com/load-balancing/docs/https/setting-up-https-serverless#gcloud
https://codelabs.developers.google.com/codelabs/externalhttplb-adv
https://cloud.google.com/load-balancing/docs/https/ext-http-lb-tf-module-examples
https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-multi-ssl
https://github.com/terraform-google-modules/terraform-google-lb-http/tree/master/examples
https://cloud.google.com/load-balancing/docs/https/ext-load-balancer-backend-buckets
https://cloud.google.com/load-balancing/docs/https/setting-up-ext-https-hybrid
https://cloud.google.com/compute/docs/tutorials/high-availability-load-balancing
https://cloud.google.com/load-balancing/docs/https/setting-up-https
https://cloud.google.com/load-balancing/docs/internal/setting-up-internal-zonal-neg
https://codelabs.developers.google.com/cloudnet-l7-hybridneg#0