I'm migrating from a large JBoss AS 4.2.3 / httpd mod_balancer deployment to JBoss AS 7 and mod_cluster.
We have multiple data centers, each containing a JBoss cluster and httpd proxy, and rely DNS round-robin to split traffic between sites.
The httpd mod_balancer proxy servers are cross-connected to all JBoss servers in all data centers (some are LAN, others are WAN), and use stickysession (to keep sessions latched to one JBoss node), and lbset to prioritise which cluster will receive new or stateless sessions. In other words if a browser starts a session at one data center, and DNS refreshes so the next connection goes to another data center, the httpd there will proxy over WAN to the original JBoss node. OTOH, stateless traffic (SOAP, etc.) will arrive at a random datacenter and httdp will proxy to the local JBoss cluster rather than go across WAN. Outages are handled nicely (entire data center can be down and proxies will try next cluster in lbset order).
So I'm looking for a way to keep this robust arrangement and local network bias.
There is no lbset with mod_cluster.
The following are some thoughts about how this *could* work. Please advise me if there's some possiblity out there I've missed.
- The AS 7 mod_cluster subsystem has parameters load-balancing-group (>= 7.1.2) or domain (< 7.1.2) which look intriging, too bad there's no mod_cluster directive to map affinity based on this setting. As documented in https://community.jboss.org/wiki/Mod-Clusternodebalancer lbset field still exists but is unused, perhaps I could hack together a mod_cluster directive that would set this value to -1 on any member that matches the nodes load-balancing-group, provided the selection algorithm still looks at the field.
- It'd be great if the subsystem configuration was split into a nested parameters per-proxy (opposed to current schema: flat parameters being applied to each proxy-list substring the same).
- Could it be possible to instantiate a second mod_cluster subsystem in each AS7 configuration? The first would assign proxy-list to the nearest proxy, the second subsystem would enumerate the WAN proxies and have arbitrarily higher load metrics.
- Perhaps a load metric plugin could be written that does RoundTripTime to the proxy host, but only if it's possible for it track different values for each proxy. This would be great because unlike my old environment, where NYC to LAX is arbitrarily assigned lbset 2, and NYC to ATL lbset 3, etc., the secondary clusters would be chosen by lowest network latency.