When you place a node into service, there is a set of information that you must provide which will be unique to each and every node. The application development team may or may not have provided defaults for some or all of these values, so you should check with them to see exactly what you need to override.
This information can be provided to the application in two different ways. One is by using JE API calls. Typically you will pass the information to those calls using command line parameters. Again, how you do this is specific to your application.
In addition, you can provide this information to the application
using the je.properties
file. Note that the
information provided in this file is handled as if it is a
default setting. Therefore, if you also
provide conflicting information using the JE APIs (again,
usually passed to a production application using command line
parameters), then the information provided directly to the APIs
takes priority over whatever might be found in the
je.properties
file.
No matter how it is done, there are three pieces of information that you must provide every JE replicated application:
Group Name
This is the replication's group name. This value must be the same for every node in a given replication group. This name must be made up of alpha numeric characters and must not be zero length.
JE developers can provide this information to the
application using the
ReplicationConfig.GROUP_NAME
field. In the je.properties
file,
it is defined using the
je.rep.group.name
parameter.
Node Name
This is the name of the node. This name must be unique within the group. This name combined with the group name uniquely identifies the node.
JE developers can provide this information to the
application using the
ReplicationConfig.NODE_NAME
field. In the je.properties
file,
it is defined using the
je.rep.node.name
parameter.
Node Host
This is the hostname and port pair that is used by other nodes in the replication group to communicate with this node. The node uses this property to establish a TCP/IP socket for communication with other members of the group.
The string that you provide to this property takes the form:
hostname[:port]
The hostname provided to this property must be reachable by the other nodes in the replication group.
The port number is optional for this property because a
default port can be defined using the
je.properties
file (you use the
je.rep.defaultPort
property to do
this). However, if a port is provided explicitly to this
property, then je.rep.defaultPort
is
ignored.
Be careful to ensure that the port you identify for the node does not conflict with ports used by other applications (including other nodes, if any) currently running on the local machine.
Note that monitor nodes will use the socket identified by this property so that they can be kept informed of the results of elections, and so they can keep track of changes in group composition.
Electable nodes use this socket to:
Hold elections
Supply commit acknowledgements
Both electable and secondary nodes use this socket to:
Establish replication streams between the Master and its Replicas
Support network-based JE HA utility services, such as JE's network restore utility. (See Restoring Log Files for details on this utility.)
You can change the hostname and/or port number for an existing electable or monitor node using the DbGroupAdmin.updateAddress() or ReplicationGroupAdmin.updateAddress() methods. Hostnames and port numbers for secondary nodes can be changed by restarting the nodes with the desired values.
The properties discussed here are simply the bare-bones minimum properties required to configure a JE node. For a complete description of all the replication properties available to a JE application, see the ReplicationConfig and ReplicationMutableConfig class descriptions.