Configuring basic domaining settings

To configure domaining, you edit the config/rhino-config.xml in each Rhino node directory. The domain definitions in those files look like this:

<domain name="domain-name" nodes="101,102,...,n">
  ... resources associated with the domain ...
</domain>

Domainable resources

Inside each domain configuration block, each resource is defined using the following format and resource names:

Persistence resources Activity Handler resources

Format

Inside a memdb-resource section:

<memdb-resource>
  ...memory database name...
</memdb-resource>

Inside an ah-resource section:

<ah-resource>
  ...activity handler name...
</ah-resource>

Name

Same as the jndi-name used in its declaration in rhino-config.xml:

<memdb>
  <jndi-name>DomainedMemoryDatabase</jndi-name>
  <message-id>10005</message-id>
  <group-name>rhino-db</group-name>
  <committed-size>100M</committed-size>
  <resync-rate>100000</resync-rate>
</memdb>

Same as its group-name in rhino-config.xml:

<activity-handler>
  <group-name>rhino-ah</group-name>
  <message-id>10000</message-id>
  <resync-rate>100000</resync-rate>
</activity-handler>
Warning

It is extremely important that the domaining configuration section of rhino-config.xml is identical between all cluster nodes and does not change for the lifetime of the cluster. Any changes to the domaining configuration must be made while the cluster is offline.

Some persistence resources are not domainable as they contain data which either makes no sense to domain, or which must be global to the entire cluster. The current undomainable persistence resources are ReplicatedMemoryDatabase, LocalMemoryDatabase, and ManagementDatabase.

Example configuration

rhino-config.xml includes the following sample domaining configuration, commented out by default. It configures an 8-node cluster into 4 domains, with each domain containing 2 nodes — specifying that replication of SBB and RA shared state only happens between each pair of nodes.

<!--
  Example replication domain configuration.

  This example splits the cluster into several 2-node domain pairs for the purposes of
  service state replication. This example does not cover replication domaining for writeable
  profiles.
-->
<domain name="domain-1" nodes="101,102">
  <memdb-resource>DomainedMemoryDatabase</memdb-resource>
  <ah-resource>rhino-ah</ah-resource>
</domain>
<domain name="domain-2" nodes="201,202">
  <memdb-resource>DomainedMemoryDatabase</memdb-resource>
  <ah-resource>rhino-ah</ah-resource>
</domain>
<domain name="domain-3" nodes="301,302">
  <memdb-resource>DomainedMemoryDatabase</memdb-resource>
  <ah-resource>rhino-ah</ah-resource>
</domain>
<domain name="domain-4" nodes="401,402">
  <memdb-resource>DomainedMemoryDatabase</memdb-resource>
  <ah-resource>rhino-ah</ah-resource>
</domain>
Warning This example contains node IDs which start with the same number as their corresponding domain. While it’s not required, OpenCloud recommends this naming scheme as it clarifies which nodes are associated with a particular domain.

Default domain

The default domain (named domain-0) is not configurable and contains all replicated resources which are not explicitly domained as part of the configuration in rhino-config.xml. If a node is booted into the cluster, and does not have an associated domain configuration associated with it, it will use the default domain for all persistence resources. If no domains are configured at all, all resources will belong to the default domain.

Advanced configuration

It is possible, though less usual, to configure overlapping domains with different resources. The only constraint on the domaining configuration is that for each domainable resource, it may only occur in a single domain for any given node. For example, the following configuration is valid, despite multiple nodes containing the same NodeIDs.

Note This example builds on the basic example, adding two more domains (domain-profiles-1 and domain-profiles-2). These additional domains allow replication of writeable profiles (backed by MyWriteableProfileDatabase) across a larger set of nodes than the domains used for service replication.
<domain name="domain-profiles-1" nodes="101,102,201,202">
  <memdb-resource>MyWriteableProfileDatabase</memdb-resource>
</domain>
<domain name="domain-profiles-2" nodes="301,302,401,402">
  <memdb-resource>MyWriteableProfileDatabase</memdb-resource>
</domain>

<domain name="domain-services-1" nodes="101,102">
  <memdb-resource>DomainedMemoryDatabase</memdb-resource>
  <ah-resource>rhino-ah</ah-resource>
</domain>
<domain name="domain-services-2" nodes="201,202">
  <memdb-resource>DomainedMemoryDatabase</memdb-resource>
  <ah-resource>rhino-ah</ah-resource>
</domain>
<domain name="domain-services-3" nodes="301,302">
  <memdb-resource>DomainedMemoryDatabase</memdb-resource>
  <ah-resource>rhino-ah</ah-resource>
</domain>
<domain name="domain-services-4" nodes="401,402">
  <memdb-resource>DomainedMemoryDatabase</memdb-resource>
  <ah-resource>rhino-ah</ah-resource>
</domain>
Warning The configuration and setup of the memory database for use with writeable profiles is beyond the scope of this documentation.
Previous page Next page
Rhino Version 2.6.0