> -----Original Message----- > From: Jon Brisbin [mailto:jon.bris...@npcinternational.com] > On May 7, 2010, at 1:16 PM, Smith, Mark wrote: > > Is there a way to tell mod_jk that it has a new worker on a new > > hostname without having to reload Apache? Similarly, to remove an > > existing worker that has gone away, or just to change the hostname of a > > worker. I'm picturing an API on the status worker, or something > > similar. > > > > I don't want to just rewrite workers.properties and do a reload > > because we have several long uploads happening at any given time that > > get interrupted. Reload/graceful works most of the time, but > > occasionally locks up the entire Apache instance, which is no good. > > > > I can't imagine we're the first to run into this problem, but I've > > done a lot of looking and can't find anything other than "rewrite > > workers.properties and reload Apache." > > Reconfig/reload is essentially what I'm doing too, though I use > mod_proxy_ajp rather than mod_jk. > > But the annoying thing is that you're absolutely right you're not the > first and it's frustrating knowing it'll be a while until enough > developers have a handle on cloud architectures to make meaningful > contributions to projects to address these fundamental problems.
Ok, so the silver lining here is that I'm not a complete buffoon who just doesn't know how to use Google to find the solution; there are, in fact, others with the same problem. That's a plus... :-) > [...] To be honest, I'm seriously looking at using > ipchains or something to do NAT on the box and cut out Apache entirely. I thought about this. The problem is that you want DNAT to change the destination of your outgoing packets, but DNAT is only a valid target in PREROUTING which only gets hit when receiving packets. SNAT is valid in POSTROUTING on the outgoing side, but doesn't help you with this problem. I have this at the top of all my IPTables files; feel free to use it. ----- snip! ----- ############# # For Reference ############# # Packets traversal through netfilter: # #in -> (nat ) -> [routing ] -> (FORWARDING) -> (nat ) -> out # (PREROUTING) [decision] (POSTROUTING) # || /\ # \/ || # (INPUT) (nat OUTPUT) # || /\ # \/ || # [local ] -----------------> (OUTPUT) # [process] ----- snip! ----- Another option is to configure mod_jk for static hostnames then use either /etc/hosts or an actual DNS cluster to change the mappings. This relies on the application in question honoring DNS TTLs (hint: Java doesn't by default). The good news is, it appears that mod_proxy_balancer at least honors /etc/hosts. This is actually my current favorite option, but it just seems like a grand hack, and it doesn't allow me to _ADD_ hosts to the config, only change them. So I'm likely to configure a large number of workers who will not be running most of the time, let the auto-scaling system make the workers work or not-work as it brings instances up and down, and accept the restart of Apache when I have to increase the max number of workers. It's not pretty, but it looks like it'll work. > Or even writing my own proxy server from scratch. I hate that I keep > coming back to that so often lately. I just get frustrated, throw up my > hands, and resign myself to simply doing it myself. I lamented on this > very topic yesterday to The 451 Group when we talked about cloud > architectures etc... I guess that's why we all like Open Source: Code doesn't do what you want it to? Make it do it! ;-) I've considered modifying mod_jk or mod_proxy_balancer to add this functionality, but don't have the resources to do that just yet. -Mark --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org