users@glassfish.java.net

Re: question on simple ha

From: Shreedhar Ganapathy <Shreedhar.Ganapathy_at_Sun.COM>
Date: Fri, 07 Aug 2009 16:43:54 -0700

Hi Mete
Good questions and thanks for sharing your high level HA deployment
architecture. Hope the following is helpful to you in your deployment
achitecture design.
You can certainly achieve a lost cost clustering solution with GlassFish
in the mix given that its support costs are very competitive and low.

For starters, the architecture you described may be the way to go.
But here are some points worth considering that are intended to help you
bear in mind while you are looking to lower overall Total Cost of
Operation/Ownership (TCO) and trading off for longer term resilience and
scalability.

While Virtual Machines are the way to go to abstract physical hardware,
running two virtual hosts one on physical server limits your horizontal
scalability and importantly, the redundancy you set out to achieve with
clustering, as the physical machine is a single point of failure (Think
about power failure, disc failures, network card failure, etc)

At the basic level you need at least redundant physical disc partitions,
in addition to continual power supply arrangements. You also need
redundant network cards( NICs ) with Nic level round robin capability
helping keep the load on the physical networking link scalable and
performant.

One configuration to go for, if you cannot go for multiple physical
machines, and must go with two Virtual Machine instances on a physical
machine, is to find out if the hypervisor supports what is called IP
Hashing whereby through a consistent hashing algorithm the VMWare
instances detect multiple nics and auto-assign each send/receive message
combo to one or the other nic thereby giving you NIC level LB under the
VMs. I have heard of a VMWare product supporting this but am not sure
if VirtualBox or Xen support it.

At a higher level though, multiple physical machines, and redundant
software processes are essential to achieve a level of availability that
can protect you from failure points and build fault tolerance.

It all depends on how critical this environment is to your business. If
its customer facing and the lifeline of your business, the cost of
building redundancy is actually an investment and not an expenditure so
a cheap solution is a relative term :-) Here you are using your
investment as a weapon and as a competitive advantage. If on the other
hand, this is a limited load internal deployment for non critical apps,
then your described approach may work well for that purpose with the
occassional service outage not having a major impact in the day-to-day
running of your business.

For a business critical deployment, I'd recommend investing in at least
a couple of physical machines (preferably multicore) with multiple nics
configured (if you are on a gigabit ethernet switch then get NICs that
are gigabit network supported). The nic addresses can also be bonded
together through a virtual IP address to which your GlassFish processes
would bind into (not sure about IP aggregation solutions in Windows but
if on Linux then look for IP Bonding, if Solaris, look for ip
multipathing or link aggregation).

Going further, consider having the LB on a couple of Web Servers for
redundancy at the fronting layer to achieve better fault tolerant
deployment. With this, you can use DNS round robin or a hardware load
balancer to alternate between the two LBs who in turn will balance the
load and provide failover support fronting the GlassFish cluster. Turn
on session replication to achieve high availability of conversational
state in addition to the mirroring of Databases for business data
persistence. If you are using a hosting provider and dont have control
over functioning of DNS servers, then you may ask the hosting provider
to add the Ip addresses of the LB servers in your domain's A record.
While that may not provide you round robin, it will provide you with a
DNS level failover to your LBs.
 
Hope this is helpful.

Please let us know how we can help you with your GlassFish support
requirements as well to ensure timely support and addressing of any
issues that may arise while running in production in addition to regular
patch releases. Some reading material here :
http://blogs.sun.com/GlassFishForBusiness/

--Shreedhar


glassfish_at_javadesktop.org wrote:
> Hello,
>
> I am trying to figure out how to establish an HA system as cheap as possible. By cheap I mean there is no shared storage. Supposing there exists 2 servers (running more than one hosts with virtual machines) only, it seems to me like the simplest and cheapest way is to have MS SQL running in high safe mirroring mode on 2 servers, having 2 glassfish instances in cluster configuration, and having load balancer plugins installed on IIS running on windows which are connected with NLB for load balancing/fail over. Can you comment on this architecture ? Does anything looks strange ?
>
> Thank you.
>
> Mete
> [Message sent by forum member 'metebalci' (metebalci)]
>
> http://forums.java.net/jive/thread.jspa?messageID=359532
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_glassfish.dev.java.net
> For additional commands, e-mail: users-help_at_glassfish.dev.java.net
>
>