10 Load Balancer, Reverse Proxy (Web Server) PDF
Document Details
Uploaded by DecisiveGreatWallOfChina1467
Tags
Related
- Chapter 7 - 09 - Discuss Importance of Load Balancing in Network Security - 01_ocred.pdf
- Chapter 7 - 09 - Discuss Importance of Load Balancing in Network Security - 02_ocred.pdf
- Chapter 7 - 09 - Discuss Importance of Load Balancing in Network Security - 01_ocred_fax_ocred.pdf
- Load Balancer, Reverse Proxy (Web Server) PDF
- Lecture Note 11 - Load Balancing Concepts PDF
- API Gateway & Reverse Proxy Questions PDF
Summary
This document provides an overview of load balancers and reverse proxies, including diagrams and explanations of how they work. It covers various aspects, including benefits, disadvantages, different types, and how they are used in system design.
Full Transcript
10 Load Balancer, Reverse Proxy (Web Server) (GitHub System Design Primer) **~ Load balancer ~** ** Diagram** … ** Intro ** Load balancers ** distribute ** ** incoming client requests to ** **...
10 Load Balancer, Reverse Proxy (Web Server) (GitHub System Design Primer) **~ Load balancer ~** ** Diagram** … ** Intro ** Load balancers ** distribute ** ** incoming client requests to ** ** computing resources such as ** ** application servers and ** ** databases. ** In each case, the load balancer ** returns the response ** from the computing resource to the ** appropriate client. ** Load balancers are ** effective at: ** Preventing requests from going to ~~ unhealthy servers ~~ Preventing ~~ overloading resources ~~ Helping to eliminate a ~~ single point of failure ~~ ⠀ Load balancers can be implemented with ** hardware (expensive) or with ** ** software such as ** ** HAProxy. ** ** Additional benefits include: ** ** SSL termination - ** ** Decrypt incoming requests and ** ** encrypt server responses so ** ** backend servers ** do not have to perform these potentially ~~ expensive operations ~~ Removes the need to ~~ install X.509 certificates on each server [ ]() ~~ ** Session persistence - ** ** Issue cookies and ** ** route a specific client's requests to same instance ** if the web apps do not keep track of sessions ⠀ ** To protect against failures, it's common to set up ** ** multiple load balancers, either in ** [** active-passive or **]() [** active-active mode. **]() ** ** Load balancers can ** route traffic based on various ** ** metrics, including: ** ** Random ** ** Least loaded ** ** Session/cookies ** [** Round robin or weighted round robin ** ** **]() [** Layer 4 **]() [** Layer 7 **]() **~ Layer 4 load balancing ~** Layer 4 load balancers look at info at the [** transport layer **]() to decide how to distribute requests. Generally, this involves the ** source, ** ** destination IP ** ** addresses, and ** ** ports in the header, ** but not the ~~ contents of the packet. ~~ Layer 4 load balancers ** forward network packets ** to and from the ** upstream server, ** performing [** Network Address Translation (NAT). **]() **~ Layer 7 load balancing ~** Layer 7 load balancers look at the [** application layer **]() to decide how to distribute requests. This can involve contents of the ** header, ** ** message, and ** ** cookies. ** Layer 7 load balancers ** terminate network traffic, ** ** reads the message, ** ** makes a load-balancing decision, ** then ** opens a connection to the selected server. ** * For example, a layer 7 load balancer can * ** direct video traffic to ** ** servers that host videos ** while directing more ** sensitive user billing traffic to ** ** security-hardened servers. ** At the ** cost of flexibility, ** ** layer 4 load balancing ** requires ** less time and ** ** computing resources ** ** than Layer 7, ** although the performance ** impact can be minimal on ** ** modern commodity hardware. ** **~ Horizontal scaling ~** Load balancers can also help with ** horizontal scaling, ** ** improving performance and ** ** availability. ** ** Scaling out using commodity machines is more ** ** cost efficient and results in ** ** higher availability ** (than scaling up a ** single server ** on more ** expensive hardware, ** called Vertical Scaling). ** ** It is also easier to hire for talent working on ** ** ** commodity hardware ** than it is for ** specialized enterprise systems. ** == Disadvantage(s): horizontal scaling == Scaling horizontally introduces ** complexity and involves ** ** cloning servers ** ** Servers should be ** ** stateless: ** they should not contain any ~~ user-related data like ~~ ~~ sessions or ~~ ~~ profile pictures ~~ ** Sessions can be stored in a ** ** centralized data store such as a ** [** database **]() (SQL, ** ** ** NoSQL) or a ** ** persistent cache [ ]()** (Redis, Memcached) ** ** ** ** ** Downstream servers such as ** ** caches and ** ** databases need to handle more ** ** simultaneous connections as ** ** upstream servers ** scale out ** == Disadvantage(s): load balancer == ** The load balancer can become a ** ** ** performance bottleneck ** if it does not have enough ** resources ** or if it is ** not configured properly. ** Introducing a load balancer to help eliminate a single point of failure results in increased ** complexity. ** A ** single load balancer is a ** ** single point of failure, ** configuring ** multiple load balancers further increases ** ** complexity. ** ⠀ Source(s) and further reading [ NGINX architecture ]() [ HAProxy architecture guide ]() [ Scalability ]() [ Wikipedia ]() [ Layer 4 load balancing ]() [ Layer 7 load balancing ]() [ ELB listener config ]() ⠀ **~ Reverse proxy (web server) ~** *[ Source: Wikipedia ]()* A reverse proxy is a ** ** ** web server that ** ** centralizes internal services and provides ** ** unified interfaces to the public. ** ** Requests from clients are ** ** forwarded to a server that can fulfill it ** before the reverse proxy ** returns the server's response to the client. ** ** Additional benefits include: ** ** Increased security - ** ** Hide information about backend servers, ** ** blacklist IPs, ** ** limit number of connections per client ** ** Increased scalability and flexibility - ** ** Clients only see the reverse proxy's IP, ** allowing you to ** scale servers or change their configuration ** ** SSL termination - ** ** Decrypt incoming requests and ** ** encrypt server responses ** so backend servers do not have to perform these potentially expensive operations Removes the need to ~~ install X.509 certificates on each server [ ]() ~~ ** Compression - ** ** Compress server responses ** ** Caching - ** Return the ** response for cached requests ** ** Static content - ** Serve static content directly HTML/CSS/JS Photos Videos Etc ⠀ Load balancer vs reverse proxy Deploying a load balancer is useful when you have ** multiple servers. ** Often, load balancers route traffic to a set of servers serving the ** same function. ** Reverse proxies can be useful even with just ** one web server or ** ** application server, ** opening up the benefits described in the previous section. Solutions such as ** NGINX and ** ** HAProxy can support both ** ** layer 7 reverse proxying and ** ** load balancing. ** ⠀ Disadvantage(s): reverse proxy Introducing a reverse proxy results in increased ** complexity. ** A ** single reverse proxy is a ** ** single point of failure, configuring ** ** multiple reverse proxies ** (ie a failover) further increases [** **]() ** complexity. ** ⠀ Source(s) and further reading [ Reverse proxy vs load balancer ]() [ NGINX architecture ]() [ HAProxy architecture guide ]() [ Wikipedia ]()