users@glassfish.java.net

Re: question on simple ha

From: <glassfish_at_javadesktop.org>
Date: Fri, 07 Aug 2009 23:54:45 PDT

Hello Shreedhar,

Thank you very much for your very detailed explanation. Let me tell you briefly what configuration I have in mind. Before, I want to say that what I need at the first place is high availability not load balancing e.g. performance and by high availability I mean %99.9 at most. So, to simply say it, I want to be able quickly recover (in some minutes) from a failed software or hardware.

I have (will have actually) more than one entry level servers from Sun each of which have 2 multicore cpus and plenty of ram. In order to decrease the cost, I do not want to use SAS drives, so it is a SATA based server. My first question is, how critical to have a redundant power supply on a single server in a multi server ha installation. The servers will stay in a datacenter, so I assume the electrical power system will deliver clean power signals. I still do not have an exact idea if redundant power supplies for a single server is a need here. I understand it is the most failed part in such computer systems, but in an overall view, I do not know if it is really a major factor decreasing ha if I go by a single power supply server.

The SATA drives on the server will run in RAID-1 and I plan to install a hypervisor (e.g. vmware esxi) on them before installing any OS. Also, since each hardware server has multiple NICs, I will use NIC teaming as you have mentioned.

Now suppose I have 2 hardware, which I call host1 and host2. Each host may have following vms:

host1:
lb1
app1
app3
primary_db (with mirroring to secondary_db)

host2:
lb2
app2
app4
secondary_db (read_only, failover instance)

apps are glassfish instances configured as a cluster using in-memory replication. Since I do not have a shared storage I cannot install a real cluster for databases so I think mirroring is the best way to go.

The actual unclear point I have is about load balancers. (Again remembering my need is to have high availability not load balancing for performance) The idea is to monitor app server instances and forward the requests to available ones. I think there is no other way to make this possible without using load balancers (web servers with plugins). One question is if it is possible to monitor glassfish availability from a different system ? I guess I read it but I do not remember now what heartbeat consists of. Is it a layer-4 packet or an URL that is checked periodically ?

Since the frontend will be load balancers, failover among load balancers is a must. However, as far as I understand, DNS failover is slow due to DNS entry caching etc. So, since each balancer has different IP addresses (for straightforward thinking), how can I forward requests for a hostname (dns name more correctly) to multiple load balancers while checking for load balancer heartbeat ? I understand there are hardware solutions for this, but even in this case, I think I need to have redundant such hardwares. So I hope I explained the question I have, I did not get a clear termination criteria for such an architecture. Only thing I found is windows NLB, which assigns multiple hosts a virtual IP and NLB checks the health of each host. I am sure I am missing something here.

Thanks.

Mete
[Message sent by forum member 'metebalci' (metebalci)]

http://forums.java.net/jive/thread.jspa?messageID=359551