Hello
I have a lot of experience in large scale web applications using Java
and Websphere, but I now find myself needing to scale a web application
built on mod_perl, and I have some questions about best practices for
doing that since I don't have any sort of deployment manager or an
intelligent HTTP plugin.
I currently have an application set up in the standard 3 tiered model:
Apache web layer -> Apache/mod_perl app layer -> MySQL DB layer.
Right now I have one app layer node, but traffic is dictating that I
need to expand capacity there soon and I plan on adding more hosts to
that layer.
My first question relates to quality of service and load balancing:
I'm currently using mod_proxy on the web layer, and I know I can set
that up to load balance requests to multiple app layer nodes, but to the
best of my knowledge mod_proxy is not able to provide any quality of
service. So if a node in the app layer had a problem (or was shut down
for maintenance) mod_proxy would be unaware of that and would still send
requests to that node. How are situations like this normally handled?
Is there something I can use other than mod_proxy that is intelligent
enough to mark a host as down? I'd rather not use a hardware load
balancer here if I can avoid it.
My second question deals with management of multiple mod_perl nodes:
At some point, if you have enough app layer nodes, managing the code
deployments, apache configs and server restarts becomes very cumbersome
if you're doing it all manually. Are there any tools that can make
these tasks easier or give me one management view?
Again, I'm used to working in web applications with a full blown app
server. I love working with mod_perl, but I do find myself missing the
advantages an app server gives me sometimes. Hopefully someone can
offer me some suggestions here.
Thanks