No replies
8 Posts

Pinned topic My Extreme Scale Design Review (Spring based)

‏2012-09-25T14:21:56Z |
Hi All

I am trying to configure a Hashmap based grid cache, as a standalone side cache (no websphere AS) and no client side cache, and without replicas. I have 5 physical boxes (h1,h2,...,h5) to deploy my solution on. I am using "User’s Guide to WebSphere eXtreme Scale", Configuring the grid as a simple side cache on page 130 as a reference.

I plan for each machine to have both the catalog server and container server. I have only one grid that is spread across all the containers.

As the command for starting the catalog server is:
C:\<install_path>\ObjectGrid\bin>startOgServer.bat cat1
-catalogserviceendpoints cat1:wxs1:6600:6601,cat2:wxs2:6600:6601,...

I have translated this command into spring configuration for each catalog server as shown below for each catalog server:
First Server:
<objectgrid:server id="serverCat1" isCatalog="true"
tracespec="*=all=disabled" tracefile="" statspec="" name="cat1"
listenerPort="2809" />

Second Server:
<objectgrid:server id="serverCat2" isCatalog="true"
tracespec="*=all=disabled" tracefile="" statspec="" name="cat2"
listenerPort="2809" />
Common for all:
<objectgrid:catalogServerProperties id="catalogServerProperties" enableQuorum="true"
heartBeatFrequencyLevel="${HeartBeatFrequencyLevel}" domainName="${DomainName}">
name="cat1" host="h1" clientPort="6600" peerPort="6600" />
name="cat2" host="h2" clientPort="6600" peerPort="6600" />
... same for h3, h4, h5...
For the container servers, I use the following:

<objectgrid:server id="containerServerC1" isCatalog="false"
tracespec="${TraceSpec}" tracefile="${TraceFile}" statspec="">
<objectgrid:catalog host="h1" port="2809" />
<objectgrid:catalog host="h2" port="2809" />
<objectgrid:container id="containerC1"
objectgridxml="${ObjectGridXml}" deploymentxml="${DeploymentXml}"
server="containerServerC1" />

So, in summary, I have the following running using the above config:

h1(Client1, Cat1,Con1), h2(Client2, Cat2,Con2), h3(Client3, Cat3,Con3), h4(Client4, Cat4,Con4), h5(Client5, Cat5,Con5)

The Client{1...5} are JVMs that run the XS client, one on each box, imagine within tomcat, within a cluster.

My question is:

1) When a catalog server, say, Cat2 goes down, will Con3 be able to automatically switch to one of the other available Catagog servers?

2) If a Con1 goes down, since I don't have replication enabled, I don't expect the hashmap and cache entries to be available. But once Con1 is brought back up, it should start accepting new Map entries and start serving them.

3) The client (say Client4) should ideally connect to the catalog (Cat4) on the local host (h4). But what if the Catalog Server (Cat4) dies? Do I need to provide configuration for other catalog servers and hosts, within my client code, as backup catalogs, if the client is unable to connect to the catalog on local host?

4) I do have enableQuorum="true" Is this generally a sufficient for creating a high availability config?

Please feel free to comment on any other aspect you feel interested about.