SlideShare a Scribd company logo
1 of 40
Download to read offline
Apache httpd v2.4:
Reverse Proxy(The “Hidden” Gem)
Jim Jagielski
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
About me
➡ Jim Jagielski
Hacker and developer
Wearer o’ many hats at the ASF

Director and President: Outercurve

Council member: MARSEC-XL
Consulting Engineer with Red Hat
@jimjag
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Apache httpd 2.4
➡ Currently at version 2.4.12 (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 and Reverse Proxy
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





➡ Apache is too complex (config file)
really?
➡ Apache is too old

(yeah, just like Linux)
vs
It’s Squagels!
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.
Reverse Proxy
Internet
Firewall Firewall
Cloud
Reverse Proxy Server
Transactional
Servers
Browser
➡ Operates at the server end of the transaction
➡ Completely transparent to the Web Browser – thinks the
Reverse Proxy Server is the real server
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Features of Reverse Proxy Server
➡ Security
Uniform security policy can be administered
The real transactional servers are behind the firewall
➡ Delegation, Specialization, Load Balancing
➡ Caching
➡ Performance, HA
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.
Apache httpd 2.4 proxy
➡ Reverse Proxy Improvements
Supports FastCGI, SCGI, Websockets in balancer
Additional load balancing mechanisms
Runtime changing of clusters w/o restarts
Support for dynamic configuration
mod_proxy_express
mod_fcgid and fcgistarter
Brand New: Support for Unix Domain Sockets
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Configuring Reverse Proxy
➡ Set ProxyRequests Off
➡ Apply ProxyPass, ProxyPassReverse and possibly RewriteRule
directives
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Reverse Proxy Directives:

ProxyPass
➡ Allows remote server to be mapped into the space of the local
(Reverse Proxy) server
➡ There is also ProxyPassMatch which takes a regex
➡ Example:
ProxyPass  /secure/  http://secureserver/

Presumably “secureserver” is inaccessible directly from the internet

ProxyPassMatch  ^/(.*.js)$  http://js-­storage.example.com/bar/$1
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Reverse Proxy Directives:

ProxyPassReverse
➡ Used to specify that redirects issued by the remote server are to
be translated to use the proxy before being returned to the
client.
➡ Syntax is identical to ProxyPass; used in conjunction with it
➡ Example:
➡ProxyPass /secure/ http://secureserver/
➡ProxyPassReverse /secure/ http://secureserver/
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Simple Rev Proxy
➡ All requests for /images to a backend server
ProxyPass /images http://images.example.com/
ProxyPass <path> <scheme>://<full url>
➡ Useful, but limited
➡ What if:
images.example.com dies?
traffic for /images increases
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Load Balancing
➡ 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.
Create a balancer “cluster”
➡ Create a balancer which contains several host nodes
➡ Apache httpd will then direct to each node as specified
<Proxy  balancer://foo>  
    BalancerMember  http://www1.example.com:80/    loadfactor=1  
    BalancerMember  http://www2.example.com:80/    loadfactor=1  
    BalancerMember  http://www3.example.com:80/    loadfactor=4  status=+h  
    ProxySet  lbmethod=bytraffic  
</Proxy>
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some config params
➡ For BalancerMembers:
loadfactor  
normalized load for worker [1]
lbset  
worker cluster number [0]
retry  
retry timeout, in seconds, for non-ready workers [60]
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some config params
➡ For BalancerMembers (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
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some config params
➡ For BalancerMembers (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
N: Drain
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some config params
➡ For Balancers:
lbmethod  
load balancing algo to use [byrequests]
stickysession  
sticky session name (eg: PHPSESSIONID)
maxattempts  
# failover tries before we bail
growth  
Extra BalancerMember slots to allow for
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some config 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
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Connection Pooling
➡ 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.
Some config params
➡ For BalancerMembers - connection pool:
min  
Initial number of connections [0]
max  
Hard maximum number of connections [1|TPC]
smax:
soft max - keep this number available [max]
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Some config params
➡ For BalancerMembers - connection pool:
disablereuser/enablereuse:
bypass/enable the connection pool (firewalls)
ttl  
time to live for connections above smax
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Sessions
➡ Sticky session support
aka “session affinity”
➡ Cookie based
stickysession=PHPSESSID
stickysession=JSESSIONID
➡ Natively easy with Tomcat
➡ May require more setup for “simple” HTTP proxying
➡ Use of mod_session helps
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Failover control
➡ 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=10  
    BalancerMember  ajp://tc2:8089/          loadfactor=40  
    ProxySet  lbmethod=byrequests  
</Proxy>  
ProxyPass                /apps/                  balancer://foo/  
ProxyPassReverse  /apps/                  balancer://foo/  
ProxyPass                /serv/                  balancer://javaapps/  
ProxyPass                /images/              http://images:8080/  
ProxyPass                /foo                      unix:/home/www.socket|http://localhost/bar/
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:8088

www3.example.com          http://192.168.002.10  
  ...  
www6341.example.com    http://192.168.211.26
httpd.conf file
ProxyExpressEnable  On  
ProxyExpressDBMFile  express-­map.db
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
HeartBeat / HeartMonitor
➡ Experimental 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
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
server-status aware
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Performance
➡ From Bryan Call’s 2014 ApacheCon preso
•  Squid&used&the&most&
CPU&again&
•  NGiNX&had&latency&
issues&
•  ATS&most&throughput& 0&
500&
1000&
1500&
2000&
2500&
ATS& NGiNX& Squid& Varnish& hBpd&
RPS$/$CPU$Usage$
0&
5000&
10000&
15000&
20000&
25000&
30000&
ATS& NGiNX& Squid& Varnish& hBpd&
Requests$Per$Second$
0&
5&
10&
15&
20&
25&
30&
35&
40&
ATS& NGiNX& Squid& Varnish& hBpd&
Latency$
Median&
95th&
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
What’s on the horizon?
➡ Extend mod_proxy_express
➡ Adding additional protocols
➡ More dynamic configuration
Adding balancers!
➡ Extend/improve caching
➡ Performance, of course!
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
In conclusion...
➡ For cloud environs and other, 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)
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Thanks
Twitter: @jimjag
Emails:

jim@jaguNET.com

jjagielski@outercurve.org

jim@apache.org

jimjag@redhat.com
http://www.slideshare.net/jimjag/

More Related Content

What's hot

Web frameworks don't matter
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matter
Tomas Doran
 
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
 
Pushing the web — WebSockets
Pushing the web — WebSocketsPushing the web — WebSockets
Pushing the web — WebSockets
Roland M
 
Interactive web. O rly?
Interactive web. O rly?Interactive web. O rly?
Interactive web. O rly?
timbc
 

What's hot (20)

Not your daddy's web server
Not your daddy's web serverNot your daddy's web server
Not your daddy's web server
 
The HTML5 WebSocket API
The HTML5 WebSocket APIThe HTML5 WebSocket API
The HTML5 WebSocket API
 
Building your own CDN using Amazon EC2
Building your own CDN using Amazon EC2Building your own CDN using Amazon EC2
Building your own CDN using Amazon EC2
 
Web frameworks don't matter
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matter
 
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSockets
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011
 
Usenix LISA 2012 - Choosing a Proxy
Usenix LISA 2012 - Choosing a ProxyUsenix LISA 2012 - Choosing a Proxy
Usenix LISA 2012 - Choosing a Proxy
 
Websocket protocol overview
Websocket protocol overviewWebsocket protocol overview
Websocket protocol overview
 
Acus08 Advanced Load Balancing Apache2.2
Acus08 Advanced Load Balancing Apache2.2Acus08 Advanced Load Balancing Apache2.2
Acus08 Advanced Load Balancing Apache2.2
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA Testers
 
Pushing the web — WebSockets
Pushing the web — WebSocketsPushing the web — WebSockets
Pushing the web — WebSockets
 
Installation Openstack Swift
Installation Openstack SwiftInstallation Openstack Swift
Installation Openstack Swift
 
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
 
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Servicesewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
 
Interactive web. O rly?
Interactive web. O rly?Interactive web. O rly?
Interactive web. O rly?
 
Web sockets in Java
Web sockets in JavaWeb sockets in Java
Web sockets in Java
 
cache concepts and varnish-cache
cache concepts and varnish-cachecache concepts and varnish-cache
cache concepts and varnish-cache
 
HTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the WebHTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the Web
 
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
 
Tips for going fast in a slow world: Michael May at OSCON 2015
Tips for going fast in a slow world: Michael May at OSCON 2015Tips for going fast in a slow world: Michael May at OSCON 2015
Tips for going fast in a slow world: Michael May at OSCON 2015
 

Viewers also liked

httpd — Apache Web Server
httpd — Apache Web Serverhttpd — Apache Web Server
httpd — Apache Web Server
webhostingguy
 
Apache Web Server Administration
Apache Web Server AdministrationApache Web Server Administration
Apache Web Server Administration
webhostingguy
 

Viewers also liked (20)

Apache httpd 2.4 Reverse Proxy
Apache httpd 2.4 Reverse ProxyApache httpd 2.4 Reverse Proxy
Apache httpd 2.4 Reverse Proxy
 
Open source101 licenses
Open source101 licensesOpen source101 licenses
Open source101 licenses
 
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!
 
Apache HTTPd Server 2.2 Presentation
Apache HTTPd Server 2.2 PresentationApache HTTPd Server 2.2 Presentation
Apache HTTPd Server 2.2 Presentation
 
httpd — Apache Web Server
httpd — Apache Web Serverhttpd — Apache Web Server
httpd — Apache Web Server
 
Apache Web Server Administration
Apache Web Server AdministrationApache Web Server Administration
Apache Web Server Administration
 
Learn how to develop for Android, beyond the Hello World android app - Cape T...
Learn how to develop for Android, beyond the Hello World android app - Cape T...Learn how to develop for Android, beyond the Hello World android app - Cape T...
Learn how to develop for Android, beyond the Hello World android app - Cape T...
 
Apache
ApacheApache
Apache
 
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
 
Creating community - The Apache Way
Creating community - The Apache WayCreating community - The Apache Way
Creating community - The Apache Way
 
What is "Open Source"
What is "Open Source"What is "Open Source"
What is "Open Source"
 
Running Successful Open Source Projects
Running Successful Open Source ProjectsRunning Successful Open Source Projects
Running Successful Open Source Projects
 
Apache State Of the Feather 2011
Apache State Of the Feather 2011Apache State Of the Feather 2011
Apache State Of the Feather 2011
 
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!
 
Understanding Open Source Licenses
Understanding Open Source LicensesUnderstanding Open Source Licenses
Understanding Open Source Licenses
 
Open Source Management
Open Source ManagementOpen Source Management
Open Source Management
 
Acus08 ASF Sponsorship
Acus08 ASF SponsorshipAcus08 ASF Sponsorship
Acus08 ASF Sponsorship
 
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
 
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
 

Similar to ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy

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
 
Apache Web Services
Apache Web ServicesApache Web Services
Apache Web Services
lkurriger
 

Similar to ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy (20)

Apache httpd v2.4
Apache httpd v2.4Apache httpd v2.4
Apache httpd v2.4
 
Apache httpd 2.4 overview
Apache httpd 2.4 overviewApache httpd 2.4 overview
Apache httpd 2.4 overview
 
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
 
Using aphace-as-proxy-server
Using aphace-as-proxy-serverUsing aphace-as-proxy-server
Using aphace-as-proxy-server
 
Scale Apache with Nginx
Scale Apache with NginxScale Apache with Nginx
Scale Apache with Nginx
 
Web Server Load Balancer
Web Server Load BalancerWeb Server Load Balancer
Web Server Load Balancer
 
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
 
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
 
Profiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / WebgrindProfiling PHP with Xdebug / Webgrind
Profiling PHP with Xdebug / Webgrind
 
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
 
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
 
Oscon 2011 - ATS
Oscon 2011 - ATSOscon 2011 - ATS
Oscon 2011 - ATS
 
Apache Web Server Setup 3
Apache Web Server Setup 3Apache Web Server Setup 3
Apache Web Server Setup 3
 
5-WebServers.ppt
5-WebServers.ppt5-WebServers.ppt
5-WebServers.ppt
 
Caching the Uncacheable
Caching the UncacheableCaching the Uncacheable
Caching the Uncacheable
 
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]
 
Use Xdebug to profile PHP
Use Xdebug to profile PHPUse Xdebug to profile PHP
Use Xdebug to profile PHP
 
Apache Web Services
Apache Web ServicesApache Web Services
Apache Web Services
 
Deploying configurable frontend web application containers
Deploying configurable frontend web application containersDeploying configurable frontend web application containers
Deploying configurable frontend web application containers
 
are available here
are available hereare available here
are available here
 

More from Jim 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
 
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
 
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
 
InnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open SourceInnerSource: Enterprise Lessons from Open Source
InnerSource: Enterprise Lessons from Open Source
 
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
 

Recently uploaded

Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Monica Sydney
 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
JOHNBEBONYAP1
 
一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理
F
 
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
ayvbos
 
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
gajnagarg
 
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
pxcywzqs
 
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
ydyuyu
 
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsRussian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Monica Sydney
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
ayvbos
 

Recently uploaded (20)

Call girls Service in Ajman 0505086370 Ajman call girls
Call girls Service in Ajman 0505086370 Ajman call girlsCall girls Service in Ajman 0505086370 Ajman call girls
Call girls Service in Ajman 0505086370 Ajman call girls
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
 
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
 
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdfpdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
pdfcoffee.com_business-ethics-q3m7-pdf-free.pdf
 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
 
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime NagercoilNagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
 
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtReal Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirt
 
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
best call girls in Hyderabad Finest Escorts Service 📞 9352988975 📞 Available ...
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf
 
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasBest SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency Dallas
 
一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理一比一原版奥兹学院毕业证如何办理
一比一原版奥兹学院毕业证如何办理
 
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
call girls in Anand Vihar (delhi) call me [🔝9953056974🔝] escort service 24X7
 
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
一比一原版(Flinders毕业证书)弗林德斯大学毕业证原件一模一样
 
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Dindigul [ 7014168258 ] Call Me For Genuine Models ...
 
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
一比一原版(Offer)康考迪亚大学毕业证学位证靠谱定制
 
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
哪里办理美国迈阿密大学毕业证(本硕)umiami在读证明存档可查
 
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi EscortsRussian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
Russian Escort Abu Dhabi 0503464457 Abu DHabi Escorts
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
 
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
20240509 QFM015 Engineering Leadership Reading List April 2024.pdf
 
APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
 

ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy

  • 1. Apache httpd v2.4: Reverse Proxy(The “Hidden” Gem) Jim Jagielski
  • 2. This work is licensed under a Creative Commons Attribution 3.0 Unported License. About me ➡ Jim Jagielski Hacker and developer Wearer o’ many hats at the ASF
 Director and President: Outercurve
 Council member: MARSEC-XL Consulting Engineer with Red Hat @jimjag
  • 3. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Apache httpd 2.4 ➡ Currently at version 2.4.12 (2.4.1 went GA Feb 21, 2012) ➡ Significant Improvements high-performance cloud suitability
  • 4. 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 and Reverse Proxy
  • 5. 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
 
 
 ➡ Apache is too complex (config file) really? ➡ Apache is too old
 (yeah, just like Linux) vs It’s Squagels!
  • 6. 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
  • 7. 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
  • 8. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Reverse Proxy Internet Firewall Firewall Cloud Reverse Proxy Server Transactional Servers Browser ➡ Operates at the server end of the transaction ➡ Completely transparent to the Web Browser – thinks the Reverse Proxy Server is the real server
  • 9. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Features of Reverse Proxy Server ➡ Security Uniform security policy can be administered The real transactional servers are behind the firewall ➡ Delegation, Specialization, Load Balancing ➡ Caching ➡ Performance, HA
  • 10. 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
  • 11. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Apache httpd 2.4 proxy ➡ Reverse Proxy Improvements Supports FastCGI, SCGI, Websockets in balancer Additional load balancing mechanisms Runtime changing of clusters w/o restarts Support for dynamic configuration mod_proxy_express mod_fcgid and fcgistarter Brand New: Support for Unix Domain Sockets
  • 12. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Configuring Reverse Proxy ➡ Set ProxyRequests Off ➡ Apply ProxyPass, ProxyPassReverse and possibly RewriteRule directives
  • 13. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Reverse Proxy Directives:
 ProxyPass ➡ Allows remote server to be mapped into the space of the local (Reverse Proxy) server ➡ There is also ProxyPassMatch which takes a regex ➡ Example: ProxyPass  /secure/  http://secureserver/
 Presumably “secureserver” is inaccessible directly from the internet
 ProxyPassMatch  ^/(.*.js)$  http://js-­storage.example.com/bar/$1
  • 14. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Reverse Proxy Directives:
 ProxyPassReverse ➡ Used to specify that redirects issued by the remote server are to be translated to use the proxy before being returned to the client. ➡ Syntax is identical to ProxyPass; used in conjunction with it ➡ Example: ➡ProxyPass /secure/ http://secureserver/ ➡ProxyPassReverse /secure/ http://secureserver/
  • 15. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Simple Rev Proxy ➡ All requests for /images to a backend server ProxyPass /images http://images.example.com/ ProxyPass <path> <scheme>://<full url> ➡ Useful, but limited ➡ What if: images.example.com dies? traffic for /images increases
  • 16. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Load Balancing ➡ mod_proxy_balancer.so ➡ mod_proxy can do native load balancing weight by actual requests weight by traffic weight by busyness lbfactors
  • 17. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Create a balancer “cluster” ➡ Create a balancer which contains several host nodes ➡ Apache httpd will then direct to each node as specified <Proxy  balancer://foo>      BalancerMember  http://www1.example.com:80/    loadfactor=1      BalancerMember  http://www2.example.com:80/    loadfactor=1      BalancerMember  http://www3.example.com:80/    loadfactor=4  status=+h      ProxySet  lbmethod=bytraffic   </Proxy>
  • 18. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config params ➡ For BalancerMembers: loadfactor   normalized load for worker [1] lbset   worker cluster number [0] retry   retry timeout, in seconds, for non-ready workers [60]
  • 19. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config params ➡ For BalancerMembers (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
  • 20. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config params ➡ For BalancerMembers (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 N: Drain
  • 21. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config params ➡ For Balancers: lbmethod   load balancing algo to use [byrequests] stickysession   sticky session name (eg: PHPSESSIONID) maxattempts   # failover tries before we bail growth   Extra BalancerMember slots to allow for
  • 22. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config 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
  • 23. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Connection Pooling ➡ 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
  • 24. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config params ➡ For BalancerMembers - connection pool: min   Initial number of connections [0] max   Hard maximum number of connections [1|TPC] smax: soft max - keep this number available [max]
  • 25. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Some config params ➡ For BalancerMembers - connection pool: disablereuser/enablereuse: bypass/enable the connection pool (firewalls) ttl   time to live for connections above smax
  • 26. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Sessions ➡ Sticky session support aka “session affinity” ➡ Cookie based stickysession=PHPSESSID stickysession=JSESSIONID ➡ Natively easy with Tomcat ➡ May require more setup for “simple” HTTP proxying ➡ Use of mod_session helps
  • 27. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Failover control ➡ 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
  • 28. 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=10      BalancerMember  ajp://tc2:8089/          loadfactor=40      ProxySet  lbmethod=byrequests   </Proxy>   ProxyPass                /apps/                  balancer://foo/   ProxyPassReverse  /apps/                  balancer://foo/   ProxyPass                /serv/                  balancer://javaapps/   ProxyPass                /images/              http://images:8080/   ProxyPass                /foo                      unix:/home/www.socket|http://localhost/bar/
  • 29. 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>
  • 30. 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:8088
 www3.example.com          http://192.168.002.10    ...   www6341.example.com    http://192.168.211.26 httpd.conf file ProxyExpressEnable  On   ProxyExpressDBMFile  express-­map.db
  • 31. This work is licensed under a Creative Commons Attribution 3.0 Unported License. HeartBeat / HeartMonitor ➡ Experimental 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
  • 32. 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 ...
  • 33. 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
  • 34. 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>
  • 35. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Admin
  • 36. This work is licensed under a Creative Commons Attribution 3.0 Unported License. server-status aware
  • 37. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Performance ➡ From Bryan Call’s 2014 ApacheCon preso •  Squid&used&the&most& CPU&again& •  NGiNX&had&latency& issues& •  ATS&most&throughput& 0& 500& 1000& 1500& 2000& 2500& ATS& NGiNX& Squid& Varnish& hBpd& RPS$/$CPU$Usage$ 0& 5000& 10000& 15000& 20000& 25000& 30000& ATS& NGiNX& Squid& Varnish& hBpd& Requests$Per$Second$ 0& 5& 10& 15& 20& 25& 30& 35& 40& ATS& NGiNX& Squid& Varnish& hBpd& Latency$ Median& 95th&
  • 38. This work is licensed under a Creative Commons Attribution 3.0 Unported License. What’s on the horizon? ➡ Extend mod_proxy_express ➡ Adding additional protocols ➡ More dynamic configuration Adding balancers! ➡ Extend/improve caching ➡ Performance, of course!
  • 39. This work is licensed under a Creative Commons Attribution 3.0 Unported License. In conclusion... ➡ For cloud environs and other, 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)
  • 40. This work is licensed under a Creative Commons Attribution 3.0 Unported License. Thanks Twitter: @jimjag Emails:
 jim@jaguNET.com
 jjagielski@outercurve.org
 jim@apache.org
 jimjag@redhat.com http://www.slideshare.net/jimjag/