[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [xmlblaster] Re: cluster configuration



Bertrand-Raphael.Maquel at ses-astra.com wrote:

Hi Marcel,

Thanks for your advice !

Salut Brome,

the configuration i sent you i have tried on my machine and it worked
fine as expected.
Do you use the latest cvs snapshot?

cvs update -d -P
build.sh delete
build.sh all

(or build.bat on other OS which name i can't remember).

But I still can't get it to work. Here are several things I've noticed :

- if I start server A using parameter '-call[core] true', clients can't
subscribe using this server : I get a NullPointerException.

Strange, please send me the stack trace (if you use the newest cvs code).
(Please add the OS and JDK version and command line invoked to get an idea)

- if I start server A without this parameter, the subscription works fine.
But when a publisher publishes on port 7600, only the server connected to
port 7600 gets the message. Same thing if a publisher publishes on port
7601 : only the client connected to 7601 gets the message.

Strange again, you should see log output when B connects to A.


A little question about the property file of server A : don't we need to tell server A how to find server B ?

In this configuration A is master and does not care about his slaves.
B is the first slave (you could add any number of C, D, ...) and the
slave connects to A.
A would only connect to B if B is master of some other messages.

Note that you could switch dirty reads on to increase performance
if many clients are connected to slave B.
(see http://www.xmlblaster.org/xmlBlaster/doc/requirements/cluster.dirtyRead.html)


One final idea:
-----------------
Try to run the cluster specific testsuite:

 cd xmlBlaster/testsuite/org/xmlBlaster/clustertest

java -Djava.compiler= junit.swingui.TestRunner -noloading clustertest.AllTests

(you need to have xmlBlaster.jar in the CLASSPATH).

hopefully this helps,

regards,

Marcel

Bertrand-Raphael.Maquel at ses-astra.com wrote:



Hi,

I'm currently trying to use 2 XMLBlaster clusters to make clients
communicate between 2 different geographical places. Actually, I'm just
testing a prototype of this configuration on a single PC, but you get the
idea.

Like this :


Cluster A ====================(non reliable connection)================== Cluster B / \ / \ / \ / \ client 1 client 2 client 3 client 4

So, basically, what I need is to have all messages transmitted to all
clients whatever the domain is, so that each client at any place can
receive any message.

What would be the best configuration for the servers ? Should I try
something with acceptDefault ? Or declare both clusters as masters for all
kinds of domain ?

So far, the only thing I managed to do was send from client 1 to all
clients of cluster B, or from client 1 to all clients of cluster A. But I
can't get the message sent to all the clients at once.

Do anyone see a simple configuration pattern I could use for this ?



Mirroring is not explicitly implemented yet (as nobody needed it up to now)
but you can simulate it like this:

Save the two attached files to your harddisk, they configure
two xmlBlaster nodes.

1. Start the servers:
-----------------------

java -jar ~/xmlBlaster/lib/xmlBlaster.jar -propertyFile A.properties
-call[core] true
java -jar ~/xmlBlaster/lib/xmlBlaster.jar -propertyFile B.properties

The first node 'A' is configured as master and listens on port 7600
The other node 'B' is slave for everything and listens on port 7601

2. Start two subscribers, one for A and one for B:
--------------------------------------------------------

java org.xmlBlaster.client.reader.SubscribeMessage -xpath
"/xmlBlaster/key[starts-with( at oid,'HelloFrom')]" -port 7600
java org.xmlBlaster.client.reader.SubscribeMessage -xpath
"/xmlBlaster/key[starts-with( at oid,'HelloFrom')]" -port 7601

You can see that they connect to the different xmlBlaster nodes
subscribing the same
messages.

3. Start two publishers, one for A and one for B:
------------------------------------------------------

java org.xmlBlaster.client.feeder.PublishFile -xmlKey "<key
oid='HelloFromA'/>" -port 7600
java org.xmlBlaster.client.feeder.PublishFile -xmlKey "<key
oid='HelloFromB'/>" -port 7601

Here it is: both publisher publish a message and these are received
by both subscribers.


Note: ------ I have added support for domain="*" configuration so you don't need to play around with domains in your messages. You need to checkout the newest from cvs that the above works! (or if you don't want to you need to use explicit domains or filtering with XPATH for cluster setup).


regards,

Marcel




Thanks,
--
Brome



--
DISCLAIMER:
This e-mail contains proprietary information some or all of which may be
legally privileged. It is for the intended recipient only. If an


addressing


or transmission error has misdirected this e-mail, please notify the


author


by replying to this e-mail. If you are not the intended recipient you must
not use, disclose, distribute, copy, print, or rely on this e-mail.









#------------------------------------------------------------------------------

# Configures an xmlBlaster node with the name "A"
#
# Change the hostname='' setting if A is running on another IP,
# for example to hostname='192.168.1.2'
#
# INVOKE: java org.xmlBlaster.Main -propertyFile A.properties
#------------------------------------------------------------------------------



# Switch on CORBA driver only, listens on port 7600:
Protocol.Drivers=IOR:org.xmlBlaster.protocol.corba.CorbaDriver
Protocol.CallbackDrivers=IOR:org.xmlBlaster.protocol.corba.CallbackCorbaDriver

jacorb.verbosity=0
ns=false
port=7600

# Configuer cluster - the A node:
cluster=true

cluster.node.id=A
#------------------------------------------------------------------------------

# Configures an xmlBlaster node with the name "B"
#
# Change the hostname='' setting if A is running on another IP,
# for example to hostname='192.168.1.2'
#
# INVOKE: java org.xmlBlaster.Main -propertyFile B.properties
#------------------------------------------------------------------------------



# Switch on CORBA driver only, listens on port 7601:
Protocol.Drivers=IOR:org.xmlBlaster.protocol.corba.CorbaDriver
Protocol.CallbackDrivers=IOR:org.xmlBlaster.protocol.corba.CallbackCorbaDriver

jacorb.verbosity=0
ns=false
port=7601

# Switch off telnet access, we don't need it
admin.remoteconsole.port=-1

# Example to switch on SOCKET driver only:
#Protocol.Drivers=SOCKET:org.xmlBlaster.protocol.socket.SocketDriver
#Protocol.CallbackDrivers=SOCKET:org.xmlBlaster.protocol.socket.CallbackSocketDriver

#socket.port 7501

# Configuer cluster - the B node:
cluster=true

cluster.node.id=B

cluster.node.master[B]=\
  <clusternode id='B'>\
     <master type='DomainToMaster' acceptDefault='false'/>\
  </clusternode>


# Configure cluster - how to find A: cluster.node[A]=\ <clusternode id='A'>\ <info>\ <address type='IOR' hostname='' port='7600'/>\ </info>\ <master type='DomainToMaster'>\ <key queryType='DOMAIN' domain='*'/>\ </master>\ </clusternode>







--
DISCLAIMER:
This e-mail contains proprietary information some or all of which may be
legally privileged. It is for the intended recipient only. If an addressing
or transmission error has misdirected this e-mail, please notify the author
by replying to this e-mail. If you are not the intended recipient you must
not use, disclose, distribute, copy, print, or rely on this e-mail.