mod proxy
Download
Skip this Video
Download Presentation
mod_proxy

Loading in 2 Seconds...

play fullscreen
1 / 38

Mod_proxy - PowerPoint PPT Presentation


  • 577 Views
  • Uploaded on

mod_proxy. Clustering and load balancing with Apache 2.2 mod_proxy. Agenda. Proxy architecture Proxy protocols Load balancing Dynamic runtime management. Proxy architecture. Worker concept Forward worker Reverse worker Named reverse workers Balancer workers. Forward worker.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Mod_proxy' - Thomas


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
mod proxy

mod_proxy

Clustering and load balancingwith Apache 2.2 mod_proxy

agenda
Agenda
  • Proxy architecture
  • Proxy protocols
  • Load balancing
  • Dynamic runtime management
proxy architecture
Proxy architecture
  • Worker concept
    • Forward worker
    • Reverse worker
    • Named reverse workers
    • Balancer workers
forward worker
Forward worker
  • Standard mod_proxy forward proxying
  • Enabled globally or per vhost withProxyRequests On
  • Fixed connection pool size
    • Single on prefork_mpm
    • ThreadsPerChild on worker_mpm
reverse worker
Reverse worker
  • Single global worker
  • Enabled by default
  • Fixed connection pool size
    • Single on prefork_mpm
    • ThreadsPerChild on worker_mpm
  • Used for unknown reverse proxy requestsfrom mod_rewrite
named reverse workers
Named reverse workers
  • Created for each uniquehostname:port ProxyPass directive
  • Created for each uniquehostname:port BalancerMember directive
  • Dynamic connection pool size forthreaded mpm’s.
    • Defaults to ThreadsPerChild
balancer workers
Balancer workers
  • Virtual worker
  • Contain 1…n real protocol workers

LoadModule balancer_module

modules/mod_proxy_balancer.so

<Proxy balancer://cluster>

BalancerMember http://remote:port

</Proxy>

proxy architecture8
Proxy architecture
  • Shared memory runtime data

Scoreboard

Listener Socket

Childprocess

Parent process

  • Worker #1
  • status
  • elected
  • read
  • transferred

Worker #1

Worker #2

Worker #n

Child process

Worker #2

Worker #1

User

Worker #n

Worker #2

Worker #n

proxy architecture9
Proxy architecture

JSESSIONID=XXX.A

  • Session affinity

Tomcat/host1

jvmRoute=“A”

AJP/1.3

ajp://host1:8009 route=A

AJP13

Tomcat/host2

jvmRoute=“B”

AJP/1.3

ajp://host1:8009 route=B

AJP13

<Proxy balancer://cluster> BalancerMember ajp://host1:8009 route=A

BalancerMember ajp://host2:8009 route=B</Proxy>

proxy architecture10
Proxy architecture
  • Sticky sessions
proxy protocols
Proxy Protocols
  • http/https
  • connect
  • ftp
  • ajp
  • balancer
ajp protocol
AJP Protocol
  • Apache Java Protocol
    • Current version 1.3 (AJP13)
    • Binary http protocol
    • No need to marshal/unmarshal http request
    • Reusable connections
    • Supported by most Java app servers
      • Tomcat
      • Jetty

http://jakarta.apache.org/tomcat/connectors-doc/common/ajpv13a.html

ajp 1 4 protocol
AJP 1.4 Protocol
  • Next generation AJP protocol
    • Encryption
    • Compression
    • Feedback from remote node
      • Too busy
      • Going to shutdown
      • Change dynamic config
      • Update load balancer factor
  • Q4 2005
load balancing
Load Balancing
  • mod_proxy_balancer.so
  • Protocol independent
  • Multiple strategy
    • Request
    • Traffic
  • Session affinity
  • Failover
load balancing15
Load Balancing
  • BalancerMember
    • Protocol worker to remote
    • Multiple protocols
    • Session affinity (Sticky sessions)
    • Preferred failover node
balancer parameters
Balancer Parameters

<Proxy balancer://cluster param=value .. >

</Proxy>

..

ProxySet balancer://cluster param=value

stickysession
stickysession
  • Check for session mark at the end of session identifier.
  • Configurable session identifier name
    • stickysession=JSESSIONID
    • stickysession=PHPSESSIONID

JSESSIONID=827BFE8CB4E01BCEAE41D02042485F05.SESSIONMARK

nofailover
nofailover
  • Failover by default
    • nofailover=On
      • Disables failover
  • Bound to remote until expired
    • Enables removing nodes from cluster
lbmethod
lbmethod
  • Defines balancer strategy
    • lbmethod=Request
      • Default strategy
      • Counts number of requests to remote
    • lbmethod=Traffic
      • Default strategy
      • Counts number of bytes read/transferred
timeout
timeout
  • Maximum time to wait for a free connection in seconds
    • All workers are in error state
    • All workers are busy
    • Only for threaded mpm’s.
    • Limiting the number of opened connection to remote
maxattempts
maxattempts
  • Maximum number of failover attempts
    • Defaults to number of members
    • maxattempts=1
      • No failover
worker parameters
Worker Parameters

ProxyPass http://host param=value ..

BalancerMember ajp://host param=value ..

..

ProxySet http://cluster param=value

loadfactor
loadfactor
  • loadfactor=1
    • Normalized load factor
    • Used with BalancerMember

loadfactor=1

loadfactor=2

Same as:

loadfactor=3

loadfactor=6

retry
retry
  • Number of seconds to retry the worker
  • Default is 60 seconds.
connection pool tuning
Connection pool tuning
  • min
    • Initial number of connections to remote
  • max
    • Maximum number of connections to remote
  • smax
    • connections to remote that will not be destroyed
  • ttl
    • destroy all the connections that exceed the smax
keepalive
keepalive
  • keepalive=On
    • Send SO_KEEPALIVE
    • Useful if remote is behind firewall
timeout27
timeout
  • Connection timeout in seconds
    • Defaults to ServerTimeout
route
route
  • Session route name
    • Match with jvmRoute in Tomcat

route=someName

..

<Engine .. jvmRoute=“someName” />

redirect
redirect
  • Preferred failover
    • If session route worker is in error state

BalancerMember .. route=A redirect=B

..

BalancerMember .. route=B

dynamic runtime management
Dynamic runtime management
  • Runtime status
    • Hook for status_module
  • Balancer manager
    • Web page management
runtime status
Runtime status

LoadModule status_module ..

..

<Location /server-status>

SetHandler server-status

Order deny,allow

Deny from all

Allow from localhost

</Location>

..

ProxyStatus On

balancer manager
Balancer Manager
  • Dynamic management of balancer
  • Management of balancer members
balancer manager34
Balancer Manager

LoadModule proxy_balancer_module ..

..

<Location /manager>

SetHandler balancer-manager

Order deny,allow

Deny from all

Allow from localhost

</Location>

ad