Load Balancing


  • Reverse Proxy: A server that sits in front of application (web, database, etc.) servers and forwards connections from clients to them such that clients do not make direct connections to them. Use cases:
    • Load balancing
    • Reduced attack surface
    • Caching
    • SSL Termination to alleviate load on the individual application servers
  • (Forward) Proxy Server: A server that sits in front of clients intercepting the requests to other hosts/Internet servers and routes them to their ultimate destinations. Can be used to restrict access to certain Internet sites. Can cache content locally to save on bandwith for users connecting to the same sites. Can also obscure the identity of client machines.

Basic types

  • Smart Client: Offloading some of the decision making and processing to the client to determine to which specific endpoint that it makes a request. This utilizes the available memory and processing power of each of the clients to distribute the workload of a centralized system. This can be very tricky to get correct and relies on developing code/libraries that must work on multiple user’s systems.
    • Links
      • https://people.eecs.berkeley.edu/~culler/papers/usenix97.pdf
  • Hardware/Appliances: Typically expensive but are fast and reliable
  • Software Load Balancers: NGINX, HAProxy and others

Load Balancing Algorithms

  • Least Connection
  • Least Response Time
  • Round Robin
  • IP Hash

Reverse Proxy