ERJGroupsSynchronizer is a multicast synchronizer built on top of the JGroups library. It is a much more robust implementation than the default synchronizer used by
ERXObjectStoreCoordinatorSynchronizer. An excellent introductory resource is Mike Schrag's Project Wonder in Depth screencast from WOWODC West 2009.
ERJGroupsSynchronizer.framework on Amazon EC2
The problem here is simple: EC2 does not support multicast communication between hosts (even on VPC), and multicast is the default mode of operation for JGroups.
The jgroups-aws project from meltmedia "provides auto discovery for other cluster members on AWS using both tag matching and filters. It is a drop in replacement for TCPPING, allowing you to remove the definition of your initial members from your configuration file."
If you're using Maven, include the following dependency in your POM:
<dependency> <groupId>com.meltmedia.jgroups</groupId> <artifactId>jgroups-aws</artifactId> <version>1.4.1</version> </dependency>
AWS_PING.javaand include it somewhere appropriate.
AWS_PINGsections in your JGroups XML configuration file.
Include these properties:
er.extensions.ERXObjectStoreCoordinatorPool.maxCoordinators=1 er.extensions.remoteSynchronizer.enabled=true er.extensions.remoteSynchronizer=er.jgroups.ERJGroupsSynchronizer
AWS_PINGconfiguration. That is, it would seem to be the case that you need to apply at least one arbitrary tag to your instances, and
AWS_PINGthen picks up all instances where the nominated tag has the same value.
The details above are not comprehensive. If anyone has an interest in getting this set up, but finds the overview on this page insufficient, by all means contact me.