What is a skipped load balancer? How is it different from proxy load balancing?
Google Cloud Network Load Balancing is an end-to-end load balancer, not proxy load balancing. ( https://cloud.google.com/compute/docs/load-balancing/network/ ).
I can't find any resources at all when going through LB. Both HAProxy and Nginx appear to be LB proxies. My guess is that LB transmission will redirect clients directly to the servers. In what scenarios would this be useful?
Is there any other type of load balancer besides pass and proxy?
source to share
It is difficult to find resources to balance the end-to-end load because everyone has come up with a different way to call it: pass-though, direct server return (DSR), direct routing, ...
We'll call this end-to-end.
Let me try to explain the following:
-
IP packets are forwarded unmodified to the VM, no address or port translation.
-
The VM considers the load balancer's IP to be one of its IPs.
In the specific case of Compute Engine Network load balancing https://cloud.google.com/compute/docs/load-balancing/ : for Linux, this is done by adding a route to that IP address in the "local" routing table, Windows by adding a secondary IP address to the network interface.
-
The routing logic must ensure that packets for a TCP or UDP "connection" connection are always sent to the same virtual machine.
For GCE LB Network see here https://cloud.google.com/compute/docs/load-balancing/network/target-pools#sessionaffinity
With regard to other types of load balancing, there can be no definitive list, here are some examples:
-
NAT. An example with iptables is given here https://tipstricks.itmatrix.eu/use-iptables-to-load-balance-web-trafic/ .
-
TCP proxy. On Google Cloud Platform you can use TCP Proxy Load Balancing https://cloud.google.com/compute/docs/load-balancing/tcp-ssl/tcp-proxy
-
HTTP proxy. In Google Cloud Platform you can use HTTP load balancing https://cloud.google.com/compute/docs/load-balancing/http/
-
DNS called "DNS forwarder". For example: dnsmasq http://www.thekelleys.org.uk/dnsmasq/doc.html or bind in forwarding mode https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a -caching-or-forwarding-dns-server-on-ubuntu-14-04
-
Database communication protocols. For example the MySQL protocol from https://github.com/mysql/mysql-proxy
-
SIP protocol. Large list of implementations here https://www.voip-info.org/wiki/view/Open+Source+VOIP+Software#SIPProxies
As for the benefits of end-to-end transmission over other methods:
-
Some applications will not work or need to be adapted if addresses in IP packets change, such as SIP. See Wikipedia for more details on applications that don't play well with NAT https://en.wikipedia.org/wiki/Network_address_translation#NAT_and_TCP/UDP .
The advantage here is that it doesn't change the source and destination IP addresses.
Note that for a load balancer running at a higher level, there is a trick for maintaining IP addresses: the load balancer spoofs the client's IP address when connecting to back-end servers. At the time of this writing, the load balancer product does not use this method in the compute unit.
-
If you need more control over the TCP connection from the client, for example to tune TCP parameters. This is the advantage of end-to-end or NAT over TCP proxy (or higher).
source to share