SlideShare une entreprise Scribd logo
1  sur  46
Apache httpd v2.4:
The Cloud Killer App
    (but we still wuv you NOC people as well)




            Jim Jagielski
About me
➡   Jim Jagielski
    ➡   Hacker and developer
        ➡   Wearer o’ many hats at the ASF

        ➡   Director: OSI

        ➡   Director and Secretary: Outercurve

        ➡   Council member: MARSEC-XL


    ➡   Consulting Engineer with Red Hat


    ➡   @jimjag
                    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
What we will cover
➡   QUICK Overview of Apache httpd 2.4
    ➡   General improvements
    ➡   Reverse proxy improvements
➡   How the Cloud is a game-changer for web (ie: what is a killer-
    app for the cloud?)
➡   Performance related enhancements
➡   Cloud specific enhancements




                  This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4
➡   Currently at version 2.4.4 (2.4.1 went GA Feb 21, 2012)
➡   Significant Improvements
    ➡   high-performance
    ➡   cloud suitability




                     This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4 - design drivers
➡   Support for async I/O w/o dropping support for older systems
➡   Larger selection of usable MPMs: added Event, Simple, etc...
➡   Leverage higher-performant versions of APR
➡   Increase performance
➡   Reduce memory utilization
➡   The Cloud




                  This work is licensed under a Creative Commons Attribution 3.0 Unported License.
What’s New: Apache httpd 2.4
➡   Bandwidth control now standard
    ➡   mod_ratelimit
➡   Finer control of timeouts, esp. during requests
    ➡   mod_reqtimeout
    ➡   KeepAliveTimout down to the millisecond
➡   Finer control over logging
    ➡   per module/per directory
    ➡   new logging levels (TRACE[1-8])
➡   <If> supports per-request conditions
➡   slot-based shared memory capability

                   This work is licensed under a Creative Commons Attribution 3.0 Unported License.
What’s New: Apache httpd 2.4
➡   Controllable buffering of I/O
    ➡   mod_buffer
➡   Support for Lua (still experimental as of 2.4.4)
➡   Loadable MPMs
➡   Event MPM
➡   Async I/O
➡   Config file variables
➡   Cache improvements
➡   Proxy improvements (‘natch)


                      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
httpd is sooo old school                                                                                     (aka fud)


➡   Apache doesn’t scale (its SLOW)
    ➡    http://www.youtube.com/watch?v=bzkRVzciAZg


➡   Apache is too generalized
                                                                                        vs




➡   Apache is too complex (config file)
                                                                            It’s Squagels!!
                                                                             It’s Squagels
    ➡    really?
➡   Apache is too old
    (yeah, just like Linux)


                          This work is licensed under a Creative Commons Attribution 3.0 Unported License.
What makes a cloud killer-app?
  ➡   Stability
  ➡   Flexibility
  ➡   Performance
  ➡   Dynamic configuration
  ➡   Resource sensitive




                    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Cloud and Performance
➡   The Cloud is a game changer for web servers
    ➡   Horizontal scalability is no longer as painful
    ➡   Concurrency is no longer the sole consideration
    ➡   ... or maybe even the primary one
    ➡   What’s important now? Transaction Time! (because it CAN be)
        ➡    Low latency
        ➡    Fast req/resp turnover
    ➡   Does density still matter? Of course!
    ➡   Are there environs where super-mega concurrency is the
        bugaboo? You betcha! (but the cloud makes these more and more rare, and
        you’re likely using a bad architecture anyway)



                       This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd vs nginx
➡   Why nginx? Everyone asks about it...
➡   Benchmark: local and reverse proxy transaction times
    ➡   Apache httpd 2.4.4-dev, nginx 1.2.6
    ➡   CentOS5, Dual Xeon 2.28GHz
    ➡   4GB memory
    ➡   localhost loopback and external (no firewall)
    ➡   Double checked results: OSX, Fedora 16




                    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Setup

                                                  loopback
        Setup 1:




           Setup 2:                                                    Setup 3:

           Setup 3:




         This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Considerations
➡   Multiple benchmarking systems:
    ➡   flood (50/250/5/2, 50/100/5/2, 50/5/5/2)
    ➡   httperf (num-conns=100->20000, numcalls=3,10)
➡   Full URL requests (www.example.com/index.html)
➡   Static local requests
➡   Static reverse proxy requests
➡   All Apache httpd MPMs
➡   No significant “tuning” efforts (mostly out of the box configs)



                      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
nginx vs Event                                                       (typical)




  Increasing concurrency                                                                        Increasing concurrency




                           This work is licensed under a Creative Commons Attribution 3.0 Unported License.
nginx vs Worker (typical)




   Increasing concurrency                                                                        Increasing concurrency




                            This work is licensed under a Creative Commons Attribution 3.0 Unported License.
nginx vs Prefork (typical)




   Increasing concurrency                                                                        Increasing concurrency




                            This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Focus on open()




                                 Increasing concurrency




       This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Focus on write()




                                 Increasing concurrency




       This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Focus on read()




                                 Increasing concurrency




       This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Total req/resp time




                                 Increasing concurrency




       This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Resp to Req. Bursts - httperf




                                  Increasing concurrency




        This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Independent benchmark




                                    Source: Ryosuke Matsumoto : http://blog.matsumoto-r.jp/?p=1812




      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Benchmark Conclusions
➡   Events, polling and fork/spawn creates overhead: good for
    “more bang for buck” system, bad for performance for that
    request
➡   For concurrency, Event & Worker on par with nginx*
➡   For transaction speed, prefork shines
➡   Let’s work on leaner MPM (more streamlined)
➡   *Main Caveats:
    ➡   Apache is never resource starved
    ➡   If memory is a scarce resource, nginx still better (for now ;) )
    ➡   More work can (and should) be done


                     This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Cloud and Dynamics
➡   The Cloud is a game changer for web servers
    ➡   The cloud is a dynamic place
    ➡   automated reconfiguration
    ➡   horizontal, not vertical scaling
    ➡   self-aware environments



                                                              OK, maybe not THAT self-aware




                    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Why Dynamic Proxy Matters
➡   Apache httpd still the most frequently used front-end
➡   Proxy capabilities must be cloud friendly
➡   Front-end must be dynamic friendly




                  This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Proxy Design Drivers
➡   Becoming a robust but generic proxy implementation
➡   Support various protocols
    ➡   HTTP, HTTPS, CONNECT, FTP
    ➡   AJP, FastCGI, SCGI, WSGI
    ➡   Load balancing
➡   Clustering, failover
➡   Performance




                   This work is licensed under a Creative Commons Attribution 3.0 Unported License.
What’s New: Apache httpd 2.4 proxy
➡   Reverse Proxy Improvements
    ➡   Supports FastCGI, SCGI in balancer
    ➡   Additional load balancing mechanisms
    ➡   Runtime changing of clusters w/o restarts
    ➡   Support for dynamic configuration
    ➡   mod_proxy_express
    ➡   mod_proxy_html
    ➡   mod_fcgid




                    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Load Balancer
➡   mod_proxy_balancer.so
➡   mod_proxy can do native load balancing
    ➡   weight by actual requests
    ➡   weight by traffic
    ➡   weight by busyness
    ➡   lbfactors




                     This work is licensed under a Creative Commons Attribution 3.0 Unported License.
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 shared memory




                    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
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




                    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Load Balancer
➡   Cluster set with failover
➡   Group backend servers as numbered sets
    ➡   balancer will try lower-valued sets first
    ➡   If no workers are available, will try next set
➡   Hot standby




                     This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Putting it all together
    <Proxy balancer://foo>

     BalancerMember http://php1:8080/                                 loadfactor=1

     BalancerMember http://php2:8080/                                 loadfactor=4

     BalancerMember http://phpbkup:8080/                              loadfactor=1 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/

    ProxyPassReverse /apps/ balancer://foo/

    ProxyPass /serv/ balancer://javaapps/

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



               This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Mass Reverse Proxy
➡   We front-end a LOT of reverse proxies
    ➡    What a httpd.conf disaster!
    ➡    Slow and bloated
    ➡    mod_rewrite doesn’t help
        <VirtualHost www1.example.com>
           ProxyPass / http://192.168.002.2:8080
           ProxyPassReverse / http://192.168.002.2:8080
        </VirtualHost>

        <VirtualHost www2.example.com>
           ProxyPass / http://192.168.002.12:8088
           ProxyPassReverse / http://192.168.002.12:8088
        </VirtualHost>

        <VirtualHost www3.example.com>
           ProxyPass / http://192.168.002.10
           ProxyPassReverse / http://192.168.002.10
        </VirtualHost>
         ...
        <VirtualHost www6341.example.com>
           ProxyPass / http://192.168.211.26
           ProxyPassReverse / http://192.168.211.26
        </VirtualHost>



                         This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Mass Reverse Proxy
➡   Use the new mod_proxy_express module
    ➡   ProxyPass mapping obtained via db file
    ➡   Fast and efficient
    ➡   Still dynamic, with no config changes required

        ProxyExpress map file
        ##
        ##express-map.db:
        ##

        www1.example.com                        http://192.168.002.2:8080
        www2.example.com                        http://192.168.002.12:8080
        Www3.example.com                        http://102.168.002.15:8080
         ...
        www6341.example.com                     http://192.168.211.26


                    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
HeartBeat / HeartMonitor
➡   New LB (load balance) method
    ➡   Uses multicast between gateway and reverse proxies
    ➡   Provides heartbeat (are you there?) capability
    ➡   Also provides basic load info
    ➡   This info stored in shm, and used for balancing
➡   Multicast can be an issue
➡   Use mod_header with %l, %i, %b (loadavg, idle, busy)
    ➡   but no LBmethod currently uses this :(
➡   We need a universal “load” measure



                    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
balancer-manager
➡   Embedded proxy admin web interface
➡   Allows for real-time
    ➡   Monitoring of stats for each worker
    ➡   Adjustment of worker params
        ➡   lbset
        ➡   load factor
        ➡   route
        ➡   enabled / disabled
        ➡   ...




                     This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Embedded Admin
➡   Allows for real-time
        ➡   Addition of new workers/nodes
        ➡   Change of LB methods
        ➡   Can be persistent!
        ➡   More RESTful
        ➡   Can be CLI-driven




                    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Easy setup
<Location /balancer-manager>
  SetHandler balancer-manager
  Require 192.168.2.22
</Location>




              This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Admin




                                                                       Click here
                                                                       Click here




        This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Admin




                                                                           Click here
                                                                           Click here




        This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Admin




        This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Admin




                                                                     Changing the
                                                                     Changing the
                                                                     LBmethod
                                                                     LBmethod


                                                                         Adding new
                                                                         Adding new
                                                                         worker
                                                                         worker




        This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Admin




                                                                            Wow!
                                                                            Wow!




                                                                                    Wow!
                                                                                    Wow!




        This work is licensed under a Creative Commons Attribution 3.0 Unported License.
What’s on the horizon?
➡   Extend mod_proxy_express
➡   Improving AJP
➡   Adding additional protocols
➡   More dynamic configuration
    ➡   Adding balancers!
➡   Even more optimized Event MPM
    ➡   (and re-look @ serf)




                   This work is licensed under a Creative Commons Attribution 3.0 Unported License.
In conclusion...
➡   Performance of Apache httpd 2.4 still in the big leagues (and on
    par with the “big boys” and the fanboi webserver du jure)
➡   For cloud environs, the performance and dynamic control of
    Apache httpd 2.4 in reverse proxies is just what the Dr. ordered
    (and flexibility remains a big strength)
➡   Architecture of Apache httpd 2.4 allows a lot of room for growth
    and additional functionality (both for the cloud and not)
➡   There’s still a category of “edge cases” that require nginx,
    lighttpd, G-WAN, Apache Traffic Server, etc... If that’s you, don’t
    try to use Apache httpd (but if you do, provide patches!)
➡   lies, damned lies and benchmarks (sorry, statistics).

                   This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Thanks!
➡   Contact Info:
                                                   ➡       Jim Jagielski
              ➡     jim@jaguNET.com | jim@apache.org | jimjag@redhat.com
                                 ➡       @jimjag                      www.jimjag.com
                                     ➡       www.slideshare.net/jimjag




                            This work is licensed under a Creative Commons Attribution 3.0 Unported License.

Contenu connexe

Tendances

Tendances (20)

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
 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014
 
Nginx Internals
Nginx InternalsNginx Internals
Nginx Internals
 
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
 
Usenix LISA 2012 - Choosing a Proxy
Usenix LISA 2012 - Choosing a ProxyUsenix LISA 2012 - Choosing a Proxy
Usenix LISA 2012 - Choosing a Proxy
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
 
Varnish Configuration Step by Step
Varnish Configuration Step by StepVarnish Configuration Step by Step
Varnish Configuration Step by Step
 
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
 
Integrated Cache on Netscaler
Integrated Cache on NetscalerIntegrated Cache on Netscaler
Integrated Cache on Netscaler
 
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
 
Learn nginx in 90mins
Learn nginx in 90minsLearn nginx in 90mins
Learn nginx in 90mins
 
Load Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - SlidesLoad Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - Slides
 
NGINX: High Performance Load Balancing
NGINX: High Performance Load BalancingNGINX: High Performance Load Balancing
NGINX: High Performance Load Balancing
 
Australian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackAustralian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStack
 
Nginx A High Performance Load Balancer, Web Server & Reverse Proxy
Nginx A High Performance Load Balancer, Web Server & Reverse ProxyNginx A High Performance Load Balancer, Web Server & Reverse Proxy
Nginx A High Performance Load Balancer, Web Server & Reverse Proxy
 
Extending functionality in nginx, with modules!
Extending functionality in nginx, with modules!Extending functionality in nginx, with modules!
Extending functionality in nginx, with modules!
 
Apache Traffic Server & Lua
Apache Traffic Server & LuaApache Traffic Server & Lua
Apache Traffic Server & Lua
 
5 things you didn't know nginx could do
5 things you didn't know nginx could do5 things you didn't know nginx could do
5 things you didn't know nginx could do
 
Kubernetes #4 volume &amp; stateful set
Kubernetes #4   volume &amp; stateful setKubernetes #4   volume &amp; stateful set
Kubernetes #4 volume &amp; stateful set
 
DEVIEW - 오픈소스를 활용한 분산아키텍처 구현기술
DEVIEW - 오픈소스를 활용한 분산아키텍처 구현기술DEVIEW - 오픈소스를 활용한 분산아키텍처 구현기술
DEVIEW - 오픈소스를 활용한 분산아키텍처 구현기술
 

En vedette

En vedette (20)

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
 
What is "Open Source"
What is "Open Source"What is "Open Source"
What is "Open Source"
 
Creating community - The Apache Way
Creating community - The Apache WayCreating community - The Apache Way
Creating community - The Apache Way
 
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
 
Understanding Open Source Licenses
Understanding Open Source LicensesUnderstanding Open Source Licenses
Understanding Open Source Licenses
 
Apache State of the Feather 2010
Apache State of the Feather 2010Apache State of the Feather 2010
Apache State of the Feather 2010
 
Governance and Communities
Governance and CommunitiesGovernance and Communities
Governance and Communities
 
Acus08 State Of The Feather
Acus08 State Of The FeatherAcus08 State Of The Feather
Acus08 State Of The Feather
 
Three Shall Be The Number
Three Shall Be The NumberThree Shall Be The Number
Three Shall Be The Number
 
Open Source Management
Open Source ManagementOpen Source Management
Open Source Management
 
Three Is a Magic Number
Three Is a Magic NumberThree Is a Magic Number
Three Is a Magic Number
 
Apache State Of the Feather 2011
Apache State Of the Feather 2011Apache State Of the Feather 2011
Apache State Of the Feather 2011
 
Running Successful Open Source Projects
Running Successful Open Source ProjectsRunning Successful Open Source Projects
Running Successful Open Source Projects
 
Acus08 ASF Sponsorship
Acus08 ASF SponsorshipAcus08 ASF Sponsorship
Acus08 ASF Sponsorship
 
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
 
Apache httpd 2.4 Reverse Proxy
Apache httpd 2.4 Reverse ProxyApache httpd 2.4 Reverse Proxy
Apache httpd 2.4 Reverse Proxy
 
InnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open SourceInnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open Source
 

Similaire à Apache httpd 2.4: The Cloud Killer App

Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011
Tatsuhiko Miyagawa
 
Plack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and serversPlack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and servers
Tatsuhiko Miyagawa
 
WE18_Performance_Up.ppt
WE18_Performance_Up.pptWE18_Performance_Up.ppt
WE18_Performance_Up.ppt
webhostingguy
 

Similaire à Apache httpd 2.4: The Cloud Killer App (20)

What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24What's New and Newer in Apache httpd-24
What's New and Newer in Apache httpd-24
 
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
 
Apache httpd v2.4
Apache httpd v2.4Apache httpd v2.4
Apache httpd v2.4
 
Apache HTTPD 2.4 - GWO2016
Apache HTTPD 2.4 - GWO2016Apache HTTPD 2.4 - GWO2016
Apache HTTPD 2.4 - GWO2016
 
Apache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and TomcatApache httpd Reverse Proxy and Tomcat
Apache httpd Reverse Proxy and Tomcat
 
Reverse proxy magic
Reverse proxy magicReverse proxy magic
Reverse proxy magic
 
Scale Apache with Nginx
Scale Apache with NginxScale Apache with Nginx
Scale Apache with Nginx
 
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 2.4 overview
Apache httpd 2.4 overviewApache httpd 2.4 overview
Apache httpd 2.4 overview
 
Ganeti Web Manager: Cluster Management Made Simple
Ganeti Web Manager: Cluster Management Made SimpleGaneti Web Manager: Cluster Management Made Simple
Ganeti Web Manager: Cluster Management Made Simple
 
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
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011
 
slides (PPT)
slides (PPT)slides (PPT)
slides (PPT)
 
Using aphace-as-proxy-server
Using aphace-as-proxy-serverUsing aphace-as-proxy-server
Using aphace-as-proxy-server
 
Plack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and serversPlack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and servers
 
Web Performance Part 3 "Server-side tips"
Web Performance Part 3  "Server-side tips"Web Performance Part 3  "Server-side tips"
Web Performance Part 3 "Server-side tips"
 
WE18_Performance_Up.ppt
WE18_Performance_Up.pptWE18_Performance_Up.ppt
WE18_Performance_Up.ppt
 
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
 
Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018Developing cacheable PHP applications - PHPLimburgBE 2018
Developing cacheable PHP applications - PHPLimburgBE 2018
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in Kubernetes
 

Plus de Jim Jagielski

Plus de Jim Jagielski (19)

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
 
The Apache Way
The Apache WayThe Apache Way
The Apache Way
 
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: 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
 
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
 
Open Source Licensing and Governance
Open Source Licensing and GovernanceOpen Source Licensing and Governance
Open Source Licensing and Governance
 
Inner Source: Enterprise Lessons from the Open Source Community.
Inner Source: Enterprise Lessons from the Open Source Community.Inner Source: Enterprise Lessons from the Open Source Community.
Inner Source: Enterprise Lessons from the Open Source Community.
 
The Apache Way: Why we do what we do
The Apache Way: Why we do what we doThe Apache Way: Why we do what we do
The Apache Way: Why we do what we do
 
Why Community Matters
Why Community MattersWhy Community Matters
Why Community Matters
 
Inner Source 101 - GWO2016
Inner Source 101 - GWO2016Inner Source 101 - GWO2016
Inner Source 101 - GWO2016
 
Open Source 101 - GWO2016
Open Source 101 - GWO2016Open Source 101 - GWO2016
Open Source 101 - GWO2016
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Dernier (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

Apache httpd 2.4: The Cloud Killer App

  • 1. Apache httpd v2.4: The Cloud Killer App (but we still wuv you NOC people as well) Jim Jagielski
  • 2. About me ➡ Jim Jagielski ➡ Hacker and developer ➡ Wearer o’ many hats at the ASF ➡ Director: OSI ➡ Director and Secretary: Outercurve ➡ Council member: MARSEC-XL ➡ Consulting Engineer with Red Hat ➡ @jimjag This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 3. What we will cover ➡ QUICK Overview of Apache httpd 2.4 ➡ General improvements ➡ Reverse proxy improvements ➡ How the Cloud is a game-changer for web (ie: what is a killer- app for the cloud?) ➡ Performance related enhancements ➡ Cloud specific enhancements This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 4. Apache httpd 2.4 ➡ Currently at version 2.4.4 (2.4.1 went GA Feb 21, 2012) ➡ Significant Improvements ➡ high-performance ➡ cloud suitability This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 5. Apache httpd 2.4 - design drivers ➡ Support for async I/O w/o dropping support for older systems ➡ Larger selection of usable MPMs: added Event, Simple, etc... ➡ Leverage higher-performant versions of APR ➡ Increase performance ➡ Reduce memory utilization ➡ The Cloud This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 6. What’s New: Apache httpd 2.4 ➡ Bandwidth control now standard ➡ mod_ratelimit ➡ Finer control of timeouts, esp. during requests ➡ mod_reqtimeout ➡ KeepAliveTimout down to the millisecond ➡ Finer control over logging ➡ per module/per directory ➡ new logging levels (TRACE[1-8]) ➡ <If> supports per-request conditions ➡ slot-based shared memory capability This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 7. What’s New: Apache httpd 2.4 ➡ Controllable buffering of I/O ➡ mod_buffer ➡ Support for Lua (still experimental as of 2.4.4) ➡ Loadable MPMs ➡ Event MPM ➡ Async I/O ➡ Config file variables ➡ Cache improvements ➡ Proxy improvements (‘natch) This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 8. httpd is sooo old school (aka fud) ➡ Apache doesn’t scale (its SLOW) ➡ http://www.youtube.com/watch?v=bzkRVzciAZg ➡ Apache is too generalized vs ➡ Apache is too complex (config file) It’s Squagels!! It’s Squagels ➡ really? ➡ Apache is too old (yeah, just like Linux) This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 9. What makes a cloud killer-app? ➡ Stability ➡ Flexibility ➡ Performance ➡ Dynamic configuration ➡ Resource sensitive This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 10. Cloud and Performance ➡ The Cloud is a game changer for web servers ➡ Horizontal scalability is no longer as painful ➡ Concurrency is no longer the sole consideration ➡ ... or maybe even the primary one ➡ What’s important now? Transaction Time! (because it CAN be) ➡ Low latency ➡ Fast req/resp turnover ➡ Does density still matter? Of course! ➡ Are there environs where super-mega concurrency is the bugaboo? You betcha! (but the cloud makes these more and more rare, and you’re likely using a bad architecture anyway) This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 11. Apache httpd vs nginx ➡ Why nginx? Everyone asks about it... ➡ Benchmark: local and reverse proxy transaction times ➡ Apache httpd 2.4.4-dev, nginx 1.2.6 ➡ CentOS5, Dual Xeon 2.28GHz ➡ 4GB memory ➡ localhost loopback and external (no firewall) ➡ Double checked results: OSX, Fedora 16 This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 12. Setup loopback Setup 1: Setup 2: Setup 3: Setup 3: This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 13. Considerations ➡ Multiple benchmarking systems: ➡ flood (50/250/5/2, 50/100/5/2, 50/5/5/2) ➡ httperf (num-conns=100->20000, numcalls=3,10) ➡ Full URL requests (www.example.com/index.html) ➡ Static local requests ➡ Static reverse proxy requests ➡ All Apache httpd MPMs ➡ No significant “tuning” efforts (mostly out of the box configs) This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 14. nginx vs Event (typical) Increasing concurrency Increasing concurrency This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 15. nginx vs Worker (typical) Increasing concurrency Increasing concurrency This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 16. nginx vs Prefork (typical) Increasing concurrency Increasing concurrency This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 17. Focus on open() Increasing concurrency This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 18. Focus on write() Increasing concurrency This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 19. Focus on read() Increasing concurrency This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 20. Total req/resp time Increasing concurrency This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 21. Resp to Req. Bursts - httperf Increasing concurrency This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 22. Independent benchmark Source: Ryosuke Matsumoto : http://blog.matsumoto-r.jp/?p=1812 This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 23. Benchmark Conclusions ➡ Events, polling and fork/spawn creates overhead: good for “more bang for buck” system, bad for performance for that request ➡ For concurrency, Event & Worker on par with nginx* ➡ For transaction speed, prefork shines ➡ Let’s work on leaner MPM (more streamlined) ➡ *Main Caveats: ➡ Apache is never resource starved ➡ If memory is a scarce resource, nginx still better (for now ;) ) ➡ More work can (and should) be done This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 24. Cloud and Dynamics ➡ The Cloud is a game changer for web servers ➡ The cloud is a dynamic place ➡ automated reconfiguration ➡ horizontal, not vertical scaling ➡ self-aware environments OK, maybe not THAT self-aware This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 25. Why Dynamic Proxy Matters ➡ Apache httpd still the most frequently used front-end ➡ Proxy capabilities must be cloud friendly ➡ Front-end must be dynamic friendly This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 26. Proxy Design Drivers ➡ Becoming a robust but generic proxy implementation ➡ Support various protocols ➡ HTTP, HTTPS, CONNECT, FTP ➡ AJP, FastCGI, SCGI, WSGI ➡ Load balancing ➡ Clustering, failover ➡ Performance This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 27. What’s New: Apache httpd 2.4 proxy ➡ Reverse Proxy Improvements ➡ Supports FastCGI, SCGI in balancer ➡ Additional load balancing mechanisms ➡ Runtime changing of clusters w/o restarts ➡ Support for dynamic configuration ➡ mod_proxy_express ➡ mod_proxy_html ➡ mod_fcgid This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 28. Load Balancer ➡ mod_proxy_balancer.so ➡ mod_proxy can do native load balancing ➡ weight by actual requests ➡ weight by traffic ➡ weight by busyness ➡ lbfactors This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 29. 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 shared memory This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 30. 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 This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 31. Load Balancer ➡ Cluster set with failover ➡ Group backend servers as numbered sets ➡ balancer will try lower-valued sets first ➡ If no workers are available, will try next set ➡ Hot standby This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 32. Putting it all together <Proxy balancer://foo> BalancerMember http://php1:8080/ loadfactor=1 BalancerMember http://php2:8080/ loadfactor=4 BalancerMember http://phpbkup:8080/ loadfactor=1 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/ ProxyPassReverse /apps/ balancer://foo/ ProxyPass /serv/ balancer://javaapps/ ProxyPass /images/ http://images:8080/ This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 33. Mass Reverse Proxy ➡ We front-end a LOT of reverse proxies ➡ What a httpd.conf disaster! ➡ Slow and bloated ➡ mod_rewrite doesn’t help <VirtualHost www1.example.com> ProxyPass / http://192.168.002.2:8080 ProxyPassReverse / http://192.168.002.2:8080 </VirtualHost> <VirtualHost www2.example.com> ProxyPass / http://192.168.002.12:8088 ProxyPassReverse / http://192.168.002.12:8088 </VirtualHost> <VirtualHost www3.example.com> ProxyPass / http://192.168.002.10 ProxyPassReverse / http://192.168.002.10 </VirtualHost> ... <VirtualHost www6341.example.com> ProxyPass / http://192.168.211.26 ProxyPassReverse / http://192.168.211.26 </VirtualHost> This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 34. Mass Reverse Proxy ➡ Use the new mod_proxy_express module ➡ ProxyPass mapping obtained via db file ➡ Fast and efficient ➡ Still dynamic, with no config changes required ProxyExpress map file ## ##express-map.db: ## www1.example.com http://192.168.002.2:8080 www2.example.com http://192.168.002.12:8080 Www3.example.com http://102.168.002.15:8080 ... www6341.example.com http://192.168.211.26 This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 35. HeartBeat / HeartMonitor ➡ New LB (load balance) method ➡ Uses multicast between gateway and reverse proxies ➡ Provides heartbeat (are you there?) capability ➡ Also provides basic load info ➡ This info stored in shm, and used for balancing ➡ Multicast can be an issue ➡ Use mod_header with %l, %i, %b (loadavg, idle, busy) ➡ but no LBmethod currently uses this :( ➡ We need a universal “load” measure This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 36. balancer-manager ➡ Embedded proxy admin web interface ➡ Allows for real-time ➡ Monitoring of stats for each worker ➡ Adjustment of worker params ➡ lbset ➡ load factor ➡ route ➡ enabled / disabled ➡ ... This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 37. Embedded Admin ➡ Allows for real-time ➡ Addition of new workers/nodes ➡ Change of LB methods ➡ Can be persistent! ➡ More RESTful ➡ Can be CLI-driven This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 38. Easy setup <Location /balancer-manager> SetHandler balancer-manager Require 192.168.2.22 </Location> This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 39. Admin Click here Click here This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 40. Admin Click here Click here This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 41. Admin This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 42. Admin Changing the Changing the LBmethod LBmethod Adding new Adding new worker worker This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 43. Admin Wow! Wow! Wow! Wow! This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 44. What’s on the horizon? ➡ Extend mod_proxy_express ➡ Improving AJP ➡ Adding additional protocols ➡ More dynamic configuration ➡ Adding balancers! ➡ Even more optimized Event MPM ➡ (and re-look @ serf) This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 45. In conclusion... ➡ Performance of Apache httpd 2.4 still in the big leagues (and on par with the “big boys” and the fanboi webserver du jure) ➡ For cloud environs, the performance and dynamic control of Apache httpd 2.4 in reverse proxies is just what the Dr. ordered (and flexibility remains a big strength) ➡ Architecture of Apache httpd 2.4 allows a lot of room for growth and additional functionality (both for the cloud and not) ➡ There’s still a category of “edge cases” that require nginx, lighttpd, G-WAN, Apache Traffic Server, etc... If that’s you, don’t try to use Apache httpd (but if you do, provide patches!) ➡ lies, damned lies and benchmarks (sorry, statistics). This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  • 46. Thanks! ➡ Contact Info: ➡ Jim Jagielski ➡ jim@jaguNET.com | jim@apache.org | jimjag@redhat.com ➡ @jimjag www.jimjag.com ➡ www.slideshare.net/jimjag This work is licensed under a Creative Commons Attribution 3.0 Unported License.