SlideShare a Scribd company logo
1 of 44
Advanced Reverse Proxy
Load Balancing in Apache
    HTTP Server 2.2
          Jim Jagielski
    http://www.jimjag.com/
      jim@jaguNET.com
Whew
• That’s a mouthful




                      2
About me
• Longtime active contributor (July/Aug
  1995)
• Been giving mod_proxy much TLC
• ASF Co-founder
• Other ASF titles as well
• Chief Architect at Springsource
• Husband, father, all around nice guy


                                   3
mod_proxy? Wazzat?
•   An Apache module
•   Implements core proxy capability
•   Both forward and reverse proxy
•   In general, most people use it for
    reverse proxy (gateway) functionality




                                     4
Forward Proxy
• Intent is to “protect” internal clients




             Forward Proxy




                                       5
Reverse Proxy
• Intent is to “protect” internal Servers

                                Firewall




                Reverse Proxy




                                           Internal Servers




                                                              6
How did we get here?
• A stroll down mod_proxy lane
  – First available in Apache 1.1
     • “Experimental Caching Proxy Server”
  – In Apache 1.2, pretty stable, but just
    HTTP/1.0
  – In Apache 1.3, much improved with
    added support for HTTP/1.1
  – In Apache 2.0, break out cache and
    proxy


                                             7
What’s new/improved in 2.2
•   Large file support
•   Graceful stop
•   mod_dbd
•   mod_filter
•   Better Debugging and info
•   Caching
•   Event MPM
•   Authn/Authz
• Proxy
                                8
Goal for mod_proxy in 2.2
• Suck less ass




                         9
Proxy Improvements
• Becoming a robust but generic proxy
  implementation
• Support various protocols
  – HTTP, HTTPS, CONNECT, FTP
  – AJP, FastCGI (coming “soonish”)
• Load balancing
• Clustering, failover


                                      10
AJP? Really?
• Yep, Apache can now talk AJP with
  Tomcat directly
• mod_proxy_ajp is the magic mojo
• Other proxy improvements make this
  even more exciting
• mod_jk alternative




                                11
But I like mod_jk
• That’s fine, but...
  – Now the config is much easier and more
    consistent
     • ProxyPass /servlets   ajp://tc.example.com:8089

  – Easier when Apache needs to proxy both
    HTTP and AJP
  – Leverage improvements in proxy module




                                                         12
mod_proxy Directives
•   ProxyPass
•   ProxyPassReverse
•   <Proxy ... >
•   ProxySet
•   But NOT ProxyRequests




                              13
Huh??
• Yep, you do not set ProxyRequests to On
  – This is just for forward proxies
  – You don’t need this for Reverse Proxy
    functionality
  – Setting it to On will make you very, very sad




                                         14
Simple Rev Proxy
• All requests for /images to a backend
  server
  – ProxyPass /images http://images.example.com/

• Useful, but limited
• What if:
  – images.example.com dies?
  – traffic for /images increases



                                                   15
Baby got back
• We need more backend servers
• And balance the load between them
• Before 2.2, mod_rewrite was your only
  option
• Some people would prefer spending an
  evening with an Life Insurance salesman
  rather than deal with mod_rewrite


                                  16
Load Balancer
• mod_proxy_balancer.so
• mod_proxy can do native load balancing
  – weight by actual requests
  – weight by traffic
  – weight by busyness
  – lbfactors
• LB algo’s are impl as providers
  – easy to add
  – no core code changes required
                                    17
Providers? Wazzat?
•   New feature of Apache 2.x
•   Originally used mostly in mod_dav
•   Then in caching
•   Now in other places too
    – authn / authz
    – mod_proxy




                                   18
Providers... so what
• Think of providers as providing
  services
• modules implement providers and
  register them
• Other modules can then use those
  providers to implement that “service”




                                   19
Why cool for mod_proxy?
• We mentioned that right now, we
  balance by traffic, requests and
  busyness
• But what if you want some other
  method (eg: ByPhaseOfTheMoon)
• You can add that capability with no
  core code changes to Apache.
• Very flexible

                                   20
Load Balancer
• Backend connection pooling
  – Available for named workers:
    • eg: ProxyPass   /foo http://bar.example.com

  – Reusable connection to origin
  – For threaded MPMs, can adjust size of
    pool (min, max, smax)
  – For prefork: singleton
• Shared data held in scoreboard


                                              21
Pooling example
<Proxy balancer://foo>
  BalancerMember http://www1.example.com:80/   loadfactor=1
  BalancerMember http://www3.example.com:80/   loadfactor=1
  BalancerMember http://www2.example.com:80/   loadfactor=4 status=+h
  ProxySet lbmethod=bytraffic
</Proxy>

 proxy:   grabbed scoreboard slot 0 in child 371 for worker http://www1.example.com/
 proxy:   initialized single connection worker 0 in child 371 for (www1.example.com)
 proxy:   grabbed scoreboard slot 0 in child 369 for worker http://www1.example.com/
 proxy:   worker http://www1.example.com/ already initialized
 proxy:   grabbed scoreboard slot 0 in child 372 for worker http://www1.example.com/
 proxy:   worker http://www1.example.com/ already initialized
 proxy:   grabbed scoreboard slot 2 in child 371 for worker http://www3.example.com/
 proxy:   initialized single connection worker 2 in child 371 for (www3.example.com)
 proxy:   initialized single connection worker 0 in child 369 for (www1.example.com)
 proxy:   grabbed scoreboard slot 2 in child 369 for worker http://www3.example.com/
 ...
 proxy:   grabbed scoreboard slot 6 in child 369 for worker proxy:reverse
 proxy:   initialized single connection worker 6 in child 369 for (*)
 proxy:   grabbed scoreboard slot 6 in child 372 for worker proxy:reverse
 proxy:   worker proxy:reverse already initialized
 proxy:   grabbed scoreboard slot 1 in child 369 for worker http://www1.example.com/
 proxy:   initialized single connection worker 6 in child 372 for (*)



                                                                        22
Workers and worker
• Don’t get too confused
• Both the worker MPM and the proxy
  balancer use the term “worker”




                                23
Load Balancer
• Sticky session support
  – aka “session affinity”
  – Cookie based
     • stickysession=PHPSESSID
     • stickysession=JSESSIONID
  – Natively easy with Tomcat
  – May require more setup for “simple”
    HTTP proxying
  – Do you really want/need it?

                                      24
Load Balancer
• Cluster set with failover
  – Lump backend servers as numbered
    sets
  – balancer will try lower-valued sets first
  – If no workers are available, will try next
    set
• Hot standby



                                          25
Example
<Proxy balancer://foo>
  BalancerMember http://php1:8080/    loadfactor=1
  BalancerMember http://php2:8080/    loadfactor=4
  BalancerMember http://phpbkup:8080/ loadfactor=4 status=+h

 BalancerMember http://offsite1:8080/ lbset=1
 BalancerMember http://offsite2:8080/ lbset=1

  ProxySet lbmethod=bytraffic
</Proxy>

ProxyPass /apps/ balancer://foo/




                                                   26
Embedded Admin
• Allows for real-time
  – Monitoring of stats for each worker
  – Adjustment of worker params
     •   lbset
     •   load factor
     •   route
     •   enabled / disabled
     •   ...




                                          27
Easy setup


<Location /balancer-manager>
  SetHandler balancer-manager
  Order Deny,Allow
  Deny from all
  Allow from 192.168.2.22
</Location>




                                28
Admin




        29
Some tuning params
• For workers:
  – loadfactor
     • normalized load for worker [1]
  – lbset
     • worker cluster number [0]
  – retry
     • retry timeout, in seconds, for non-ready
       workers [60]




                                              30
Some tuning params
• For workers - connection pool:
  – min
     • Initial number of connections [0]
  – max
     • Hard maximum number of connections [1|
       TPC]
  – smax:
     • soft max - keep this number available [max]




                                            31
Some tuning params
• For workers - connection pool:
  – disablereuser:
      • bypass the connection pool
  – ttl
      • time to live for connections above smax




                                             32
Some tuning params
• For workers (cont):
  – connectiontimeout/timout
     • Connection timeouts on backend
       [ProxyTimeout]
  – flushpackets *
     • Does proxy need to flush data with each
       chunk of data?
        – on : Yes | off : No | auto : wait and see
  – flushwait *
     • ms to wait for data before flushing

                                                      33
Some tuning params
• For workers (cont):
  – ping *
     • Ping backend to check for availability; value
       is time to wait for response
  – status (+/-)
     •   D : disabled
     •   S : Stopped
     •   I : Ignore errors
     •   H : Hot standby
     •   E : Error

                                              34
Some tuning params
• For balancers:
  – lbmethod
    • load balancing algo to use [byrequests]
  – stickysession
    • sticky session name (eg: PHPSESSIONID)
  – maxattempts
    • failover tries before we bail




                                            35
Some tuning params
• For balancers:
  – nofailover
     • pretty freakin obvious
• For both:
  – ProxySet
     • Alternate method to set various params

 ProxySet balancer://foo timeout=10
   ...
 ProxyPass / balancer://foo timeout=10



                                            36
Oh yeah
• ProxyPassMatch
  – ProxyPass can now take regex’s instead
    of just “paths”
       • ProxyPassMatch ^(/.*.gif)$ http://backend.example.com$1

  – JkMount migration
• Shhhh
  –   ProxyPass ~ ^(/.*.gif)$ http://backend.example.com$1


• mod_rewrite is balancer aware


                                                          37
Neat
• ProxyPassReverse is NOW balancer
  aware! (as of 2.2.9)
• The below will work:

  <Proxy balancer://foo>
    BalancerMember http://php1:8080/       loadfactor=1
    BalancerMember http://php2:8080/       loadfactor=4
  </Proxy>

  ProxyPass /apps/ balancer://foo/

  ProxyPassReverse /apps balancer://foo/



                                                     38
Workaround for <=2.2.8
• Instead, do this

  <Proxy balancer://foo>
    BalancerMember http://php1:8080/   loadfactor=1
    BalancerMember http://php2:8080/   loadfactor=4
  </Proxy>

  ProxyPass /apps/ balancer://foo/

  ProxyPassReverse /apps http://php1:8080/
  ProxyPassReverse /apps http://php2:8080/




                                                 39
Useful Envars
•   BALANCER_SESSION_STICKY
     – This is assigned the stickysession value used in the
       current request. It is the cookie or parameter name used
       for sticky sessions
•   BALANCER_SESSION_ROUTE
     – This is assigned the route parsed from the current
       request.
•   BALANCER_NAME
     – This is assigned the name of the balancer used for the
       current request. The value is something like
       balancer://foo.




                                                        40
Useful Envars
•   BALANCER_WORKER_NAME
     – This is assigned the name of the worker used for the current
       request. The value is something like
                    http://hostA:1234.

•   BALANCER_WORKER_ROUTE
     – This is assigned the route of the worker that will be used for
       the current request.
•   BALANCER_ROUTE_CHANGED
     – This is set to 1 if the session route does not match the
       worker route (BALANCER_SESSION_ROUTE !=
       BALANCER_WORKER_ROUTE) or the session does not
       yet have an established route. This can be used to
       determine when/if the client needs to be sent an updated
       route when sticky sessions are used.

                                                             41
Putting it all together
<Proxy balancer://foo>
  BalancerMember http://php1:8080/     loadfactor=1
  BalancerMember http://php2:8080/     loadfactor=4
  BalancerMember http://phpbkup:8080/ loadfactor=4 status=+h
  BalancerMember http://phpexp:8080/   lbset=1
  ProxySet lbmethod=bytraffic
</Proxy>
<Proxy balancer://javaapps>
  BalancerMember ajp://tc1:8089/     loadfactor=1
  BalancerMember ajp://tc2:8089/     loadfactor=4
  ProxySet lbmethod=byrequests
</Proxy>

ProxyPass /apps/ balancer://foo/
ProxyPass /serv/ balancer://javaapps/

ProxyPass /images/ http://images:8080/


                                                  42
What’s on the horizon?
• Some additional potential backports
    – FastCGI proxy module
    – HTTP “ping” (OPTIONS *)
•   More LB methods
•   Enhancing ProxyPassReverse
•   Even Better RFC compliance
•   Improving AJP


                                  43
Thanks!
• Q&A
• Resources:
  – http://httpd.apache.org/
  – dev@httpd.apache.org
  – A certain Open Source support provider




                                     44

More Related Content

What's hot

青云CoreOS虚拟机部署kubernetes
青云CoreOS虚拟机部署kubernetes 青云CoreOS虚拟机部署kubernetes
青云CoreOS虚拟机部署kubernetes Zhichao Liang
 
Nginx Internals
Nginx InternalsNginx Internals
Nginx InternalsJoshua Zhu
 
Kubernetes internals (Kubernetes 해부하기)
Kubernetes internals (Kubernetes 해부하기)Kubernetes internals (Kubernetes 해부하기)
Kubernetes internals (Kubernetes 해부하기)DongHyeon Kim
 
Introduction to Haproxy
Introduction to HaproxyIntroduction to Haproxy
Introduction to HaproxyShaopeng He
 
Extending functionality in nginx, with modules!
Extending functionality in nginx, with modules!Extending functionality in nginx, with modules!
Extending functionality in nginx, with modules!Trygve Vea
 
Load Balancing Applications with NGINX in a CoreOS Cluster
Load Balancing Applications with NGINX in a CoreOS ClusterLoad Balancing Applications with NGINX in a CoreOS Cluster
Load Balancing Applications with NGINX in a CoreOS ClusterKevin Jones
 
Commication Framework in OpenStack
Commication Framework in OpenStackCommication Framework in OpenStack
Commication Framework in OpenStackSean Chang
 
Content Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusContent Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusKevin Jones
 
KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...
KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...
KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...KubeAcademy
 
How To Set Up SQL Load Balancing with HAProxy - Slides
How To Set Up SQL Load Balancing with HAProxy - SlidesHow To Set Up SQL Load Balancing with HAProxy - Slides
How To Set Up SQL Load Balancing with HAProxy - SlidesSeveralnines
 
OpenStack networking
OpenStack networkingOpenStack networking
OpenStack networkingSim Janghoon
 
NGINX: High Performance Load Balancing
NGINX: High Performance Load BalancingNGINX: High Performance Load Balancing
NGINX: High Performance Load BalancingNGINX, Inc.
 
Load Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - SlidesLoad Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - SlidesSeveralnines
 
Usenix LISA 2012 - Choosing a Proxy
Usenix LISA 2012 - Choosing a ProxyUsenix LISA 2012 - Choosing a Proxy
Usenix LISA 2012 - Choosing a ProxyLeif Hedstrom
 
Openstack Networking Internals - first part
Openstack Networking Internals - first partOpenstack Networking Internals - first part
Openstack Networking Internals - first partlilliput12
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기Ji-Woong Choi
 
NginX - good practices, tips and advanced techniques
NginX - good practices, tips and advanced techniquesNginX - good practices, tips and advanced techniques
NginX - good practices, tips and advanced techniquesClaudio Borges
 
HAProxy scale out using open source
HAProxy scale out using open sourceHAProxy scale out using open source
HAProxy scale out using open sourceIngo Walz
 

What's hot (19)

青云CoreOS虚拟机部署kubernetes
青云CoreOS虚拟机部署kubernetes 青云CoreOS虚拟机部署kubernetes
青云CoreOS虚拟机部署kubernetes
 
Nginx Internals
Nginx InternalsNginx Internals
Nginx Internals
 
Kubernetes internals (Kubernetes 해부하기)
Kubernetes internals (Kubernetes 해부하기)Kubernetes internals (Kubernetes 해부하기)
Kubernetes internals (Kubernetes 해부하기)
 
Introduction to Haproxy
Introduction to HaproxyIntroduction to Haproxy
Introduction to Haproxy
 
Extending functionality in nginx, with modules!
Extending functionality in nginx, with modules!Extending functionality in nginx, with modules!
Extending functionality in nginx, with modules!
 
Load Balancing Applications with NGINX in a CoreOS Cluster
Load Balancing Applications with NGINX in a CoreOS ClusterLoad Balancing Applications with NGINX in a CoreOS Cluster
Load Balancing Applications with NGINX in a CoreOS Cluster
 
Commication Framework in OpenStack
Commication Framework in OpenStackCommication Framework in OpenStack
Commication Framework in OpenStack
 
Content Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusContent Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX Plus
 
KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...
KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...
KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes ...
 
How To Set Up SQL Load Balancing with HAProxy - Slides
How To Set Up SQL Load Balancing with HAProxy - SlidesHow To Set Up SQL Load Balancing with HAProxy - Slides
How To Set Up SQL Load Balancing with HAProxy - Slides
 
OpenStack networking
OpenStack networkingOpenStack networking
OpenStack networking
 
NGINX: High Performance Load Balancing
NGINX: High Performance Load BalancingNGINX: High Performance Load Balancing
NGINX: High Performance Load Balancing
 
Load Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - SlidesLoad Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - Slides
 
Usenix LISA 2012 - Choosing a Proxy
Usenix LISA 2012 - Choosing a ProxyUsenix LISA 2012 - Choosing a Proxy
Usenix LISA 2012 - Choosing a Proxy
 
Openstack Networking Internals - first part
Openstack Networking Internals - first partOpenstack Networking Internals - first part
Openstack Networking Internals - first part
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
 
Squid Server
Squid ServerSquid Server
Squid Server
 
NginX - good practices, tips and advanced techniques
NginX - good practices, tips and advanced techniquesNginX - good practices, tips and advanced techniques
NginX - good practices, tips and advanced techniques
 
HAProxy scale out using open source
HAProxy scale out using open sourceHAProxy scale out using open source
HAProxy scale out using open source
 

Viewers also liked

Creating community - The Apache Way
Creating community - The Apache WayCreating community - The Apache Way
Creating community - The Apache WayJim Jagielski
 
Running Successful Open Source Projects
Running Successful Open Source ProjectsRunning Successful Open Source Projects
Running Successful Open Source ProjectsJim Jagielski
 
Acus08 State Of The Feather
Acus08 State Of The FeatherAcus08 State Of The Feather
Acus08 State Of The FeatherJim Jagielski
 
Acus08 ASF Sponsorship
Acus08 ASF SponsorshipAcus08 ASF Sponsorship
Acus08 ASF SponsorshipJim Jagielski
 
Apache State of the Feather 2010
Apache State of the Feather 2010Apache State of the Feather 2010
Apache State of the Feather 2010Jim Jagielski
 
Three Is a Magic Number
Three Is a Magic NumberThree Is a Magic Number
Three Is a Magic NumberJim Jagielski
 
Open Source - Not just for IT anymore
Open Source - Not just for IT anymoreOpen Source - Not just for IT anymore
Open Source - Not just for IT anymoreJim Jagielski
 
Open Source Management
Open Source ManagementOpen Source Management
Open Source ManagementJim Jagielski
 
Three Shall Be The Number
Three Shall Be The NumberThree Shall Be The Number
Three Shall Be The NumberJim Jagielski
 
Understanding Open Source Licenses
Understanding Open Source LicensesUnderstanding Open Source Licenses
Understanding Open Source LicensesJim Jagielski
 
Apache httpd-2.4 : Watch out cloud!
Apache httpd-2.4 : Watch out cloud!Apache httpd-2.4 : Watch out cloud!
Apache httpd-2.4 : Watch out cloud!Jim Jagielski
 
Apache State Of the Feather 2011
Apache State Of the Feather 2011Apache State Of the Feather 2011
Apache State Of the Feather 2011Jim Jagielski
 
ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4Jim Jagielski
 
What is "Open Source"
What is "Open Source"What is "Open Source"
What is "Open Source"Jim Jagielski
 
Governance and Communities
Governance and CommunitiesGovernance and Communities
Governance and CommunitiesJim Jagielski
 
ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4Jim Jagielski
 
Drupal Camp Balto 2015
Drupal Camp Balto 2015Drupal Camp Balto 2015
Drupal Camp Balto 2015Jim Jagielski
 
Code, Community, and Open Source
Code, Community, and Open SourceCode, Community, and Open Source
Code, Community, and Open SourceJim Jagielski
 
Open source101 licenses
Open source101 licensesOpen source101 licenses
Open source101 licensesJim Jagielski
 
Keynote from the Open Source 101 Conference
Keynote from the Open Source 101 ConferenceKeynote from the Open Source 101 Conference
Keynote from the Open Source 101 ConferenceJim Jagielski
 

Viewers also liked (20)

Creating community - The Apache Way
Creating community - The Apache WayCreating community - The Apache Way
Creating community - The Apache Way
 
Running Successful Open Source Projects
Running Successful Open Source ProjectsRunning Successful Open Source Projects
Running Successful Open Source Projects
 
Acus08 State Of The Feather
Acus08 State Of The FeatherAcus08 State Of The Feather
Acus08 State Of The Feather
 
Acus08 ASF Sponsorship
Acus08 ASF SponsorshipAcus08 ASF Sponsorship
Acus08 ASF Sponsorship
 
Apache State of the Feather 2010
Apache State of the Feather 2010Apache State of the Feather 2010
Apache State of the Feather 2010
 
Three Is a Magic Number
Three Is a Magic NumberThree Is a Magic Number
Three Is a Magic Number
 
Open Source - Not just for IT anymore
Open Source - Not just for IT anymoreOpen Source - Not just for IT anymore
Open Source - Not just for IT anymore
 
Open Source Management
Open Source ManagementOpen Source Management
Open Source Management
 
Three Shall Be The Number
Three Shall Be The NumberThree Shall Be The Number
Three Shall Be The Number
 
Understanding Open Source Licenses
Understanding Open Source LicensesUnderstanding Open Source Licenses
Understanding Open Source Licenses
 
Apache httpd-2.4 : Watch out cloud!
Apache httpd-2.4 : Watch out cloud!Apache httpd-2.4 : Watch out cloud!
Apache httpd-2.4 : Watch out cloud!
 
Apache State Of the Feather 2011
Apache State Of the Feather 2011Apache State Of the Feather 2011
Apache State Of the Feather 2011
 
ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4ApacheConNA 2015: What's new in Apache httpd 2.4
ApacheConNA 2015: What's new in Apache httpd 2.4
 
What is "Open Source"
What is "Open Source"What is "Open Source"
What is "Open Source"
 
Governance and Communities
Governance and CommunitiesGovernance and Communities
Governance and Communities
 
ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4
 
Drupal Camp Balto 2015
Drupal Camp Balto 2015Drupal Camp Balto 2015
Drupal Camp Balto 2015
 
Code, Community, and Open Source
Code, Community, and Open SourceCode, Community, and Open Source
Code, Community, and Open Source
 
Open source101 licenses
Open source101 licensesOpen source101 licenses
Open source101 licenses
 
Keynote from the Open Source 101 Conference
Keynote from the Open Source 101 ConferenceKeynote from the Open Source 101 Conference
Keynote from the Open Source 101 Conference
 

Similar to Acus08 Advanced Load Balancing Apache2.2

WordPress Performance & Scalability
WordPress Performance & ScalabilityWordPress Performance & Scalability
WordPress Performance & ScalabilityJoseph Scott
 
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019Viktor Todorov
 
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyJim Jagielski
 
Deploying And Monitoring Rails
Deploying And Monitoring RailsDeploying And Monitoring Rails
Deploying And Monitoring RailsJonathan Weiss
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindSam Keen
 
Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Wim Godden
 
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Hiroshi Ono
 
DevoxxUK: Optimizating Application Performance on Kubernetes
DevoxxUK: Optimizating Application Performance on KubernetesDevoxxUK: Optimizating Application Performance on Kubernetes
DevoxxUK: Optimizating Application Performance on KubernetesDinakar Guniguntala
 
Converting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - CascadiaConverting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - CascadiaDana Luther
 
Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]Dana Luther
 
Scale Apache with Nginx
Scale Apache with NginxScale Apache with Nginx
Scale Apache with NginxBud Siddhisena
 
Zendcon scaling magento
Zendcon scaling magentoZendcon scaling magento
Zendcon scaling magentoMathew Beane
 
Distributed Queue System using Gearman
Distributed Queue System using GearmanDistributed Queue System using Gearman
Distributed Queue System using GearmanEric Cho
 
Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!Jeff Jones
 
The Current State of Asynchronous Processing With Ruby
The Current State of Asynchronous Processing With RubyThe Current State of Asynchronous Processing With Ruby
The Current State of Asynchronous Processing With Rubymattmatt
 
php & performance
 php & performance php & performance
php & performancesimon8410
 
Docker for mac & local developer environment optimization
Docker for mac & local developer environment optimizationDocker for mac & local developer environment optimization
Docker for mac & local developer environment optimizationRadek Baczynski
 
Messaging With ActiveMQ
Messaging With ActiveMQMessaging With ActiveMQ
Messaging With ActiveMQBruce Snyder
 

Similar to Acus08 Advanced Load Balancing Apache2.2 (20)

WordPress Performance & Scalability
WordPress Performance & ScalabilityWordPress Performance & Scalability
WordPress Performance & Scalability
 
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019
The Recording HTTP Proxy: Not Yet Another Messiah - Bulgaria PHP 2019
 
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
 
Http Status Report
Http Status ReportHttp Status Report
Http Status Report
 
re7jweiss
re7jweissre7jweiss
re7jweiss
 
Deploying And Monitoring Rails
Deploying And Monitoring RailsDeploying And Monitoring Rails
Deploying And Monitoring Rails
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / Webgrind
 
Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012
 
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009
 
DevoxxUK: Optimizating Application Performance on Kubernetes
DevoxxUK: Optimizating Application Performance on KubernetesDevoxxUK: Optimizating Application Performance on Kubernetes
DevoxxUK: Optimizating Application Performance on Kubernetes
 
Converting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - CascadiaConverting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - Cascadia
 
Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]
 
Scale Apache with Nginx
Scale Apache with NginxScale Apache with Nginx
Scale Apache with Nginx
 
Zendcon scaling magento
Zendcon scaling magentoZendcon scaling magento
Zendcon scaling magento
 
Distributed Queue System using Gearman
Distributed Queue System using GearmanDistributed Queue System using Gearman
Distributed Queue System using Gearman
 
Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!
 
The Current State of Asynchronous Processing With Ruby
The Current State of Asynchronous Processing With RubyThe Current State of Asynchronous Processing With Ruby
The Current State of Asynchronous Processing With Ruby
 
php & performance
 php & performance php & performance
php & performance
 
Docker for mac & local developer environment optimization
Docker for mac & local developer environment optimizationDocker for mac & local developer environment optimization
Docker for mac & local developer environment optimization
 
Messaging With ActiveMQ
Messaging With ActiveMQMessaging With ActiveMQ
Messaging With ActiveMQ
 

More from Jim Jagielski

OSPOS: AllThingsOpen 2023
OSPOS: AllThingsOpen 2023OSPOS: AllThingsOpen 2023
OSPOS: AllThingsOpen 2023Jim Jagielski
 
Open Source Licenses and IP Overview
Open Source Licenses and IP OverviewOpen Source Licenses and IP Overview
Open Source Licenses and IP OverviewJim Jagielski
 
The History of The Apache Software Foundation
The History of The Apache Software FoundationThe History of The Apache Software Foundation
The History of The Apache Software FoundationJim Jagielski
 
Apache httpd 2.4 overview
Apache httpd 2.4 overviewApache httpd 2.4 overview
Apache httpd 2.4 overviewJim Jagielski
 
Not your daddy's web server
Not your daddy's web serverNot your daddy's web server
Not your daddy's web serverJim Jagielski
 
Apache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and TomcatApache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and TomcatJim Jagielski
 
Starting an Open Source Program Office
Starting an Open Source Program OfficeStarting an Open Source Program Office
Starting an Open Source Program OfficeJim Jagielski
 
InnerSource 101 for FinTech and FinServ
InnerSource 101 for FinTech and FinServInnerSource 101 for FinTech and FinServ
InnerSource 101 for FinTech and FinServJim Jagielski
 
All Things Open 2017: Open Source Licensing
All Things Open 2017: Open Source LicensingAll Things Open 2017: Open Source Licensing
All Things Open 2017: Open Source LicensingJim Jagielski
 
All Things Open 2017: The Apache Software Foundation 101
All Things Open 2017: The Apache Software Foundation 101All Things Open 2017: The Apache Software Foundation 101
All Things Open 2017: The Apache Software Foundation 101Jim Jagielski
 
All Things Open 2017: Foundations of Inner Source
All Things Open 2017: Foundations of Inner SourceAll Things Open 2017: Foundations of Inner Source
All Things Open 2017: Foundations of Inner SourceJim Jagielski
 
ApacheCon 2017: What's new in httpd 2.4
ApacheCon 2017: What's new in httpd 2.4ApacheCon 2017: What's new in httpd 2.4
ApacheCon 2017: What's new in httpd 2.4Jim Jagielski
 
ApacheCon 2017: InnerSource and The Apache Way
ApacheCon 2017: InnerSource and The Apache WayApacheCon 2017: InnerSource and The Apache Way
ApacheCon 2017: InnerSource and The Apache WayJim Jagielski
 
Open Source Licensing 101
Open Source Licensing 101Open Source Licensing 101
Open Source Licensing 101Jim Jagielski
 
InnerSource 101 and The Apache Way
InnerSource 101 and The Apache WayInnerSource 101 and The Apache Way
InnerSource 101 and The Apache WayJim Jagielski
 
InnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open SourceInnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open SourceJim Jagielski
 
Apache httpd 2.4 Reverse Proxy: The Hidden Gem
Apache httpd 2.4 Reverse Proxy: The Hidden GemApache httpd 2.4 Reverse Proxy: The Hidden Gem
Apache httpd 2.4 Reverse Proxy: The Hidden GemJim Jagielski
 
ApacheCon EU 2016 State of the Feather
ApacheCon EU 2016 State of the FeatherApacheCon EU 2016 State of the Feather
ApacheCon EU 2016 State of the FeatherJim Jagielski
 

More from Jim Jagielski (20)

OSPOS: AllThingsOpen 2023
OSPOS: AllThingsOpen 2023OSPOS: AllThingsOpen 2023
OSPOS: AllThingsOpen 2023
 
Open Source Licenses and IP Overview
Open Source Licenses and IP OverviewOpen Source Licenses and IP Overview
Open Source Licenses and IP Overview
 
The History of The Apache Software Foundation
The History of The Apache Software FoundationThe History of The Apache Software Foundation
The History of The Apache Software Foundation
 
Reverse proxy magic
Reverse proxy magicReverse proxy magic
Reverse proxy magic
 
Apache httpd 2.4 overview
Apache httpd 2.4 overviewApache httpd 2.4 overview
Apache httpd 2.4 overview
 
The Apache Way
The Apache WayThe Apache Way
The Apache Way
 
Not your daddy's web server
Not your daddy's web serverNot your daddy's web server
Not your daddy's web server
 
Apache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and TomcatApache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and Tomcat
 
Starting an Open Source Program Office
Starting an Open Source Program OfficeStarting an Open Source Program Office
Starting an Open Source Program Office
 
InnerSource 101 for FinTech and FinServ
InnerSource 101 for FinTech and FinServInnerSource 101 for FinTech and FinServ
InnerSource 101 for FinTech and FinServ
 
All Things Open 2017: Open Source Licensing
All Things Open 2017: Open Source LicensingAll Things Open 2017: Open Source Licensing
All Things Open 2017: Open Source Licensing
 
All Things Open 2017: The Apache Software Foundation 101
All Things Open 2017: The Apache Software Foundation 101All Things Open 2017: The Apache Software Foundation 101
All Things Open 2017: The Apache Software Foundation 101
 
All Things Open 2017: Foundations of Inner Source
All Things Open 2017: Foundations of Inner SourceAll Things Open 2017: Foundations of Inner Source
All Things Open 2017: Foundations of Inner Source
 
ApacheCon 2017: What's new in httpd 2.4
ApacheCon 2017: What's new in httpd 2.4ApacheCon 2017: What's new in httpd 2.4
ApacheCon 2017: What's new in httpd 2.4
 
ApacheCon 2017: InnerSource and The Apache Way
ApacheCon 2017: InnerSource and The Apache WayApacheCon 2017: InnerSource and The Apache Way
ApacheCon 2017: InnerSource and The Apache Way
 
Open Source Licensing 101
Open Source Licensing 101Open Source Licensing 101
Open Source Licensing 101
 
InnerSource 101 and The Apache Way
InnerSource 101 and The Apache WayInnerSource 101 and The Apache Way
InnerSource 101 and The Apache Way
 
InnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open SourceInnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open Source
 
Apache httpd 2.4 Reverse Proxy: The Hidden Gem
Apache httpd 2.4 Reverse Proxy: The Hidden GemApache httpd 2.4 Reverse Proxy: The Hidden Gem
Apache httpd 2.4 Reverse Proxy: The Hidden Gem
 
ApacheCon EU 2016 State of the Feather
ApacheCon EU 2016 State of the FeatherApacheCon EU 2016 State of the Feather
ApacheCon EU 2016 State of the Feather
 

Recently uploaded

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 

Acus08 Advanced Load Balancing Apache2.2

  • 1. Advanced Reverse Proxy Load Balancing in Apache HTTP Server 2.2 Jim Jagielski http://www.jimjag.com/ jim@jaguNET.com
  • 2. Whew • That’s a mouthful 2
  • 3. About me • Longtime active contributor (July/Aug 1995) • Been giving mod_proxy much TLC • ASF Co-founder • Other ASF titles as well • Chief Architect at Springsource • Husband, father, all around nice guy 3
  • 4. mod_proxy? Wazzat? • An Apache module • Implements core proxy capability • Both forward and reverse proxy • In general, most people use it for reverse proxy (gateway) functionality 4
  • 5. Forward Proxy • Intent is to “protect” internal clients Forward Proxy 5
  • 6. Reverse Proxy • Intent is to “protect” internal Servers Firewall Reverse Proxy Internal Servers 6
  • 7. How did we get here? • A stroll down mod_proxy lane – First available in Apache 1.1 • “Experimental Caching Proxy Server” – In Apache 1.2, pretty stable, but just HTTP/1.0 – In Apache 1.3, much improved with added support for HTTP/1.1 – In Apache 2.0, break out cache and proxy 7
  • 8. What’s new/improved in 2.2 • Large file support • Graceful stop • mod_dbd • mod_filter • Better Debugging and info • Caching • Event MPM • Authn/Authz • Proxy 8
  • 9. Goal for mod_proxy in 2.2 • Suck less ass 9
  • 10. Proxy Improvements • Becoming a robust but generic proxy implementation • Support various protocols – HTTP, HTTPS, CONNECT, FTP – AJP, FastCGI (coming “soonish”) • Load balancing • Clustering, failover 10
  • 11. AJP? Really? • Yep, Apache can now talk AJP with Tomcat directly • mod_proxy_ajp is the magic mojo • Other proxy improvements make this even more exciting • mod_jk alternative 11
  • 12. But I like mod_jk • That’s fine, but... – Now the config is much easier and more consistent • ProxyPass /servlets ajp://tc.example.com:8089 – Easier when Apache needs to proxy both HTTP and AJP – Leverage improvements in proxy module 12
  • 13. mod_proxy Directives • ProxyPass • ProxyPassReverse • <Proxy ... > • ProxySet • But NOT ProxyRequests 13
  • 14. Huh?? • Yep, you do not set ProxyRequests to On – This is just for forward proxies – You don’t need this for Reverse Proxy functionality – Setting it to On will make you very, very sad 14
  • 15. Simple Rev Proxy • All requests for /images to a backend server – ProxyPass /images http://images.example.com/ • Useful, but limited • What if: – images.example.com dies? – traffic for /images increases 15
  • 16. Baby got back • We need more backend servers • And balance the load between them • Before 2.2, mod_rewrite was your only option • Some people would prefer spending an evening with an Life Insurance salesman rather than deal with mod_rewrite 16
  • 17. Load Balancer • mod_proxy_balancer.so • mod_proxy can do native load balancing – weight by actual requests – weight by traffic – weight by busyness – lbfactors • LB algo’s are impl as providers – easy to add – no core code changes required 17
  • 18. Providers? Wazzat? • New feature of Apache 2.x • Originally used mostly in mod_dav • Then in caching • Now in other places too – authn / authz – mod_proxy 18
  • 19. Providers... so what • Think of providers as providing services • modules implement providers and register them • Other modules can then use those providers to implement that “service” 19
  • 20. Why cool for mod_proxy? • We mentioned that right now, we balance by traffic, requests and busyness • But what if you want some other method (eg: ByPhaseOfTheMoon) • You can add that capability with no core code changes to Apache. • Very flexible 20
  • 21. Load Balancer • Backend connection pooling – Available for named workers: • eg: ProxyPass /foo http://bar.example.com – Reusable connection to origin – For threaded MPMs, can adjust size of pool (min, max, smax) – For prefork: singleton • Shared data held in scoreboard 21
  • 22. Pooling example <Proxy balancer://foo> BalancerMember http://www1.example.com:80/ loadfactor=1 BalancerMember http://www3.example.com:80/ loadfactor=1 BalancerMember http://www2.example.com:80/ loadfactor=4 status=+h ProxySet lbmethod=bytraffic </Proxy> proxy: grabbed scoreboard slot 0 in child 371 for worker http://www1.example.com/ proxy: initialized single connection worker 0 in child 371 for (www1.example.com) proxy: grabbed scoreboard slot 0 in child 369 for worker http://www1.example.com/ proxy: worker http://www1.example.com/ already initialized proxy: grabbed scoreboard slot 0 in child 372 for worker http://www1.example.com/ proxy: worker http://www1.example.com/ already initialized proxy: grabbed scoreboard slot 2 in child 371 for worker http://www3.example.com/ proxy: initialized single connection worker 2 in child 371 for (www3.example.com) proxy: initialized single connection worker 0 in child 369 for (www1.example.com) proxy: grabbed scoreboard slot 2 in child 369 for worker http://www3.example.com/ ... proxy: grabbed scoreboard slot 6 in child 369 for worker proxy:reverse proxy: initialized single connection worker 6 in child 369 for (*) proxy: grabbed scoreboard slot 6 in child 372 for worker proxy:reverse proxy: worker proxy:reverse already initialized proxy: grabbed scoreboard slot 1 in child 369 for worker http://www1.example.com/ proxy: initialized single connection worker 6 in child 372 for (*) 22
  • 23. Workers and worker • Don’t get too confused • Both the worker MPM and the proxy balancer use the term “worker” 23
  • 24. Load Balancer • Sticky session support – aka “session affinity” – Cookie based • stickysession=PHPSESSID • stickysession=JSESSIONID – Natively easy with Tomcat – May require more setup for “simple” HTTP proxying – Do you really want/need it? 24
  • 25. Load Balancer • Cluster set with failover – Lump backend servers as numbered sets – balancer will try lower-valued sets first – If no workers are available, will try next set • Hot standby 25
  • 26. Example <Proxy balancer://foo> BalancerMember http://php1:8080/ loadfactor=1 BalancerMember http://php2:8080/ loadfactor=4 BalancerMember http://phpbkup:8080/ loadfactor=4 status=+h BalancerMember http://offsite1:8080/ lbset=1 BalancerMember http://offsite2:8080/ lbset=1 ProxySet lbmethod=bytraffic </Proxy> ProxyPass /apps/ balancer://foo/ 26
  • 27. Embedded Admin • Allows for real-time – Monitoring of stats for each worker – Adjustment of worker params • lbset • load factor • route • enabled / disabled • ... 27
  • 28. Easy setup <Location /balancer-manager> SetHandler balancer-manager Order Deny,Allow Deny from all Allow from 192.168.2.22 </Location> 28
  • 29. Admin 29
  • 30. Some tuning params • For workers: – loadfactor • normalized load for worker [1] – lbset • worker cluster number [0] – retry • retry timeout, in seconds, for non-ready workers [60] 30
  • 31. Some tuning params • For workers - connection pool: – min • Initial number of connections [0] – max • Hard maximum number of connections [1| TPC] – smax: • soft max - keep this number available [max] 31
  • 32. Some tuning params • For workers - connection pool: – disablereuser: • bypass the connection pool – ttl • time to live for connections above smax 32
  • 33. Some tuning params • For workers (cont): – connectiontimeout/timout • Connection timeouts on backend [ProxyTimeout] – flushpackets * • Does proxy need to flush data with each chunk of data? – on : Yes | off : No | auto : wait and see – flushwait * • ms to wait for data before flushing 33
  • 34. Some tuning params • For workers (cont): – ping * • Ping backend to check for availability; value is time to wait for response – status (+/-) • D : disabled • S : Stopped • I : Ignore errors • H : Hot standby • E : Error 34
  • 35. Some tuning params • For balancers: – lbmethod • load balancing algo to use [byrequests] – stickysession • sticky session name (eg: PHPSESSIONID) – maxattempts • failover tries before we bail 35
  • 36. Some tuning params • For balancers: – nofailover • pretty freakin obvious • For both: – ProxySet • Alternate method to set various params ProxySet balancer://foo timeout=10 ... ProxyPass / balancer://foo timeout=10 36
  • 37. Oh yeah • ProxyPassMatch – ProxyPass can now take regex’s instead of just “paths” • ProxyPassMatch ^(/.*.gif)$ http://backend.example.com$1 – JkMount migration • Shhhh – ProxyPass ~ ^(/.*.gif)$ http://backend.example.com$1 • mod_rewrite is balancer aware 37
  • 38. Neat • ProxyPassReverse is NOW balancer aware! (as of 2.2.9) • The below will work: <Proxy balancer://foo> BalancerMember http://php1:8080/ loadfactor=1 BalancerMember http://php2:8080/ loadfactor=4 </Proxy> ProxyPass /apps/ balancer://foo/ ProxyPassReverse /apps balancer://foo/ 38
  • 39. Workaround for <=2.2.8 • Instead, do this <Proxy balancer://foo> BalancerMember http://php1:8080/ loadfactor=1 BalancerMember http://php2:8080/ loadfactor=4 </Proxy> ProxyPass /apps/ balancer://foo/ ProxyPassReverse /apps http://php1:8080/ ProxyPassReverse /apps http://php2:8080/ 39
  • 40. Useful Envars • BALANCER_SESSION_STICKY – This is assigned the stickysession value used in the current request. It is the cookie or parameter name used for sticky sessions • BALANCER_SESSION_ROUTE – This is assigned the route parsed from the current request. • BALANCER_NAME – This is assigned the name of the balancer used for the current request. The value is something like balancer://foo. 40
  • 41. Useful Envars • BALANCER_WORKER_NAME – This is assigned the name of the worker used for the current request. The value is something like http://hostA:1234. • BALANCER_WORKER_ROUTE – This is assigned the route of the worker that will be used for the current request. • BALANCER_ROUTE_CHANGED – This is set to 1 if the session route does not match the worker route (BALANCER_SESSION_ROUTE != BALANCER_WORKER_ROUTE) or the session does not yet have an established route. This can be used to determine when/if the client needs to be sent an updated route when sticky sessions are used. 41
  • 42. Putting it all together <Proxy balancer://foo> BalancerMember http://php1:8080/ loadfactor=1 BalancerMember http://php2:8080/ loadfactor=4 BalancerMember http://phpbkup:8080/ loadfactor=4 status=+h BalancerMember http://phpexp:8080/ lbset=1 ProxySet lbmethod=bytraffic </Proxy> <Proxy balancer://javaapps> BalancerMember ajp://tc1:8089/ loadfactor=1 BalancerMember ajp://tc2:8089/ loadfactor=4 ProxySet lbmethod=byrequests </Proxy> ProxyPass /apps/ balancer://foo/ ProxyPass /serv/ balancer://javaapps/ ProxyPass /images/ http://images:8080/ 42
  • 43. What’s on the horizon? • Some additional potential backports – FastCGI proxy module – HTTP “ping” (OPTIONS *) • More LB methods • Enhancing ProxyPassReverse • Even Better RFC compliance • Improving AJP 43
  • 44. Thanks! • Q&A • Resources: – http://httpd.apache.org/ – dev@httpd.apache.org – A certain Open Source support provider 44