Replication configuration

Replication Configuration

This document explains how to configure JCR replication

1 Multicast Replication

Warning: TODO

2 Point-to-point replication configuration

Warning: Persistent Mode is not supported by eXo! You can use it at your own risk.

This document shows an example of a replication configuration on 3 nodes, using only point-to-point connections

2.1 Configuration for JCR 1.8

Default replication configuration to JCR 1.8:

<!-- for persistent mode --> 
  <component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> 
          <property name="bind-ip-address" value="192.168.0.15"/> 
          <property name="channel-config" value="TCP(oob_thread_pool.queue_max_size=100;thread_naming_pattern=cl;use_concurrent_stack=true;oob_thread_pool.rejection_policy=Run;discard_incompatible_packets=true;thread_pool.max_threads=40;oob_thread_pool.enabled=true;oob_thread_pool.max_threads=20;loopback=false;oob_thread_pool.keep_alive_time=5000;thread_pool.queue_enabled=false;oob_thread_pool.queue_enabled=false;max_bundle_size=64000;thread_pool.queue_max_size=100;thread_pool.enabled=true;enable_diagnostics=true;max_bundle_timeout=30;oob_thread_pool.min_threads=8;use_incoming_packet_handler=true;thread_pool.rejection_policy=Run;bind_addr=$bind-ip-address;thread_pool.min_threads=8;thread_pool.keep_alive_time=5000;enable_bundling=true):MPING(timeout=2000;num_initial_members=8;mcast_port=34526;mcast_addr=224.0.0.1):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;print_stability_history_on_failed_xmit=true;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=false)"/> 
      </properties-param> 
    </init-params> 
  </component>

It's required to change channel-config with

<property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;loopback=true):TCPPING(initial_hosts=192.168.0.254[24090];port_range=9;timeout=3500;num_initial_members=2):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=false)"/>

TCPPING config:

TCPPING(initial_hosts=192.168.0.15[24090],192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3)

The TCPPING configuration see http://www.jboss.org/community/wiki/JGroupsTCPPING

Configuration to three nodes cluster.

  • 1-first node
<component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> 
          <property name="bind-ip-address" value="192.168.0.15"/> 
          <property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;loopback=true):TCPPING(initial_hosts=192.168.0.15[24090];192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=false)"/>
      </properties-param> 
    </init-params> 
  </component>

  • 2-second node
<component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> 
          <property name="bind-ip-address" value="192.168.0.16"/> 
          <property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;loopback=true):TCPPING(initial_hosts=192.168.0.15[24090];192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=false)"/>
      </properties-param> 
    </init-params> 
  </component>

  • 3-third node
<component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> 
          <property name="bind-ip-address" value="192.168.0.17"/> 
          <property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;loopback=true):TCPPING(initial_hosts=192.168.0.15[24090];192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=false)"/>
      </properties-param> 
    </init-params> 
  </component>

2.2 Configuration for JCR 1.9

Default replication configuration to JCR 1.9

<!-- for persistent mode --> 
  <component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> 
          <property name="bind-ip-address" value="192.168.0.15"/> 
          <property name="channel-config" value="TCP(oob_thread_pool.queue_max_size=100;thread_naming_pattern=cl;use_concurrent_stack=true;oob_thread_pool.rejection_policy=Run;discard_incompatible_packets=true;thread_pool.max_threads=40;oob_thread_pool.enabled=true;oob_thread_pool.max_threads=20;loopback=false;oob_thread_pool.keep_alive_time=5000;thread_pool.queue_enabled=false;oob_thread_pool.queue_enabled=false;max_bundle_size=64000;thread_pool.queue_max_size=100;thread_pool.enabled=true;enable_diagnostics=true;max_bundle_timeout=30;oob_thread_pool.min_threads=8;use_incoming_packet_handler=true;thread_pool.rejection_policy=Run;bind_addr=$bind-ip-address;thread_pool.min_threads=8;thread_pool.keep_alive_time=5000;enable_bundling=true):MPING(timeout=2000;num_initial_members=8;mcast_port=34526;mcast_addr=224.0.0.1):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;print_stability_history_on_failed_xmit=true;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=false)"/>
          <property name="recovery-dir" value="../temp/replication/recovery"/>
          <property name="node-name" value="cluster_node2"/> 
          <property name="other-participants" value="cluster_node1;cluster_node3"/> 
          <property name="wait-confirmation" value="2000"/> 
      </properties-param> 
    </init-params> 
  </component>

It's required to change channel-config with

<property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;loopback=true):TCPPING(initial_hosts=192.168.0.254[24090];port_range=9;timeout=3500;num_initial_members=2):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=false)"/>

TCPPING config:

TCPPING(initial_hosts=192.168.0.15[24090],192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3)

The TCPPING configuration see http://www.jboss.org/community/wiki/JGroupsTCPPING

Configuration to three nodes cluster

  • 1-first node
<component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> 
          <property name="bind-ip-address" value="192.168.0.15"/> 
          <property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;loopback=true):TCPPING(initial_hosts=192.168.0.15[24090];192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=false)"/>
          <property name="recovery-dir" value="../temp/replication/recovery"/>
          <property name="node-name" value="cluster_node1"/> 
          <property name="other-participants" value="cluster_node2;cluster_node3"/> 
          <property name="wait-confirmation" value="2000"/>
      </properties-param> 
    </init-params> 
  </component>

  • 2-second node
<component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> 
          <property name="bind-ip-address" value="192.168.0.16"/> 
          <property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;loopback=true):TCPPING(initial_hosts=192.168.0.15[24090];192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=false)"/>
          <property name="recovery-dir" value="../temp/replication/recovery"/>
          <property name="node-name" value="cluster_node2"/> 
          <property name="other-participants" value="cluster_node1;cluster_node3"/> 
          <property name="wait-confirmation" value="2000"/>
      </properties-param> 
    </init-params> 
  </component>

  • 3-third node
<component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> 
          <property name="bind-ip-address" value="192.168.0.17"/> 
          <property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;loopback=true):TCPPING(initial_hosts=192.168.0.15[24090];192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=false)"/>
          <property name="recovery-dir" value="../temp/replication/recovery"/>
          <property name="node-name" value="cluster_node3"/> 
          <property name="other-participants" value="cluster_node1;cluster_node2"/> 
          <property name="wait-confirmation" value="2000"/>
      </properties-param> 
    </init-params> 
  </component>

2.3 Configuration to JCR 1.9.3.

Default replication configuration to JCR 1.9.3

<!-- for persistent mode --> 
  <component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> <!-- {persistent, proxy} -->
          <property name="bind-ip-address" value="192.168.0.15"/> 
          <property name="channel-config" value="TCP(oob_thread_pool.queue_max_size=100;thread_naming_pattern=cl;use_concurrent_stack=true;oob_thread_pool.rejection_policy=Run;discard_incompatible_packets=true;thread_pool.max_threads=40;oob_thread_pool.enabled=false;oob_thread_pool.max_threads=20;loopback=false;oob_thread_pool.keep_alive_time=5000;thread_pool.queue_enabled=false;oob_thread_pool.queue_enabled=false;max_bundle_size=64000;thread_pool.queue_max_size=100;thread_pool.enabled=false;enable_diagnostics=true;max_bundle_timeout=30;oob_thread_pool.min_threads=8;use_incoming_packet_handler=true;thread_pool.rejection_policy=Run;bind_addr=$bind-ip-address;thread_pool.min_threads=8;thread_pool.keep_alive_time=5000;enable_bundling=true):MPING(timeout=2000;num_initial_members=8;mcast_port=34526;mcast_addr=224.0.0.1):FD(timeout=2000;max_tries=5;shun=true):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;print_stability_history_on_failed_xmit=true;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=true;merge_leader=true;reject_join_from_existing_member=true)"/> 
          <property name="recovery-dir" value="../temp/replication/recovery"/> 
          <property name="node-name" value="cluster_node2"/> 
          <property name="other-participants" value="cluster_node1;cluster_node3"/> 

          <property name="wait-confirmation" value="2000"/> 
      </properties-param> 
      <properties-param>
        <name>replication-priority-properties</name>
          <property name="priority-type" value ="dynamic"/> <!-- {static, dynamic} --> 
          <property name="node-priority" value="100"/> <!-- max == 100 -->
      </properties-param>
    </init-params> 
  </component>

It's required to change channel-config with

<property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;oob_thread_pool.queue_max_size=100;thread_naming_pattern=cl;use_concurrent_stack=true;oob_thread_pool.rejection_policy=Run;discard_incompatible_packets=true;thread_pool.max_threads=40;oob_thread_pool.enabled=false;oob_thread_pool.max_threads=20;loopback=false;oob_thread_pool.keep_alive_time=5000;thread_pool.queue_enabled=false;oob_thread_pool.queue_enabled=false;max_bundle_size=64000;thread_pool.queue_max_size=100;thread_pool.enabled=false;enable_diagnostics=true;max_bundle_timeout=30;oob_thread_pool.min_threads=8;use_incoming_packet_handler=true;thread_pool.rejection_policy=Run;thread_pool.min_threads=8;thread_pool.keep_alive_time=5000;enable_bundling=true):TCPPING(initial_hosts=192.168.0.15[24090],192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD(timeout=2000;max_tries=5;shun=true):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;print_stability_history_on_failed_xmit=true;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=true;merge_leader=true;reject_join_from_existing_member=true)"/>

TCPPING config:

TCPPING(initial_hosts=192.168.0.15[24090],192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3)

The TCPPING configuration see http://www.jboss.org/community/wiki/JGroupsTCPPING

Configuration to three nodes cluster

  • 1-first node
<component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params>
      <value-param> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> <!-- {persistent, proxy} -->
          <property name="bind-ip-address" value="192.168.0.15"/> 
          <property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;oob_thread_pool.queue_max_size=100;thread_naming_pattern=cl;use_concurrent_stack=true;oob_thread_pool.rejection_policy=Run;discard_incompatible_packets=true;thread_pool.max_threads=40;oob_thread_pool.enabled=false;oob_thread_pool.max_threads=20;loopback=false;oob_thread_pool.keep_alive_time=5000;thread_pool.queue_enabled=false;oob_thread_pool.queue_enabled=false;max_bundle_size=64000;thread_pool.queue_max_size=100;thread_pool.enabled=false;enable_diagnostics=true;max_bundle_timeout=30;oob_thread_pool.min_threads=8;use_incoming_packet_handler=true;thread_pool.rejection_policy=Run;thread_pool.min_threads=8;thread_pool.keep_alive_time=5000;enable_bundling=true):TCPPING(initial_hosts=192.168.0.15[24090],192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD(timeout=2000;max_tries=5;shun=true):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;print_stability_history_on_failed_xmit=true;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=true;merge_leader=true;reject_join_from_existing_member=true)"/> 
          <property name="recovery-dir" value="../temp/replication/recovery"/> 
          <property name="node-name" value="cluster_node1"/> 
          <property name="other-participants" value="cluster_node2;cluster_node3"/> 
          <property name="wait-confirmation" value="2000"/> 
      </properties-param> 
      <properties-param>
        <name>replication-priority-properties</name>
          <property name="priority-type" value ="dynamic"/> <!-- {static, dynamic} --> 
          <property name="node-priority" value="100"/> <!-- max == 100 -->
      </properties-param>
    </init-params> 
  </component>

  • 2-second node
<component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> <!-- {persistent, proxy} -->
          <property name="bind-ip-address" value="192.168.0.16"/> 
          <property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;oob_thread_pool.queue_max_size=100;thread_naming_pattern=cl;use_concurrent_stack=true;oob_thread_pool.rejection_policy=Run;discard_incompatible_packets=true;thread_pool.max_threads=40;oob_thread_pool.enabled=false;oob_thread_pool.max_threads=20;loopback=false;oob_thread_pool.keep_alive_time=5000;thread_pool.queue_enabled=false;oob_thread_pool.queue_enabled=false;max_bundle_size=64000;thread_pool.queue_max_size=100;thread_pool.enabled=false;enable_diagnostics=true;max_bundle_timeout=30;oob_thread_pool.min_threads=8;use_incoming_packet_handler=true;thread_pool.rejection_policy=Run;thread_pool.min_threads=8;thread_pool.keep_alive_time=5000;enable_bundling=true):TCPPING(initial_hosts=192.168.0.15[24090],192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD(timeout=2000;max_tries=5;shun=true):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;print_stability_history_on_failed_xmit=true;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=true;merge_leader=true;reject_join_from_existing_member=true)"/> 
          <property name="recovery-dir" value="../temp/replication/recovery"/> 
          <property name="node-name" value="cluster_node2"/> 
          <property name="other-participants" value="cluster_node1;cluster_node3"/> 
          <property name="wait-confirmation" value="2000"/> 
      </properties-param> 
      <properties-param>
        <name>replication-priority-properties</name>
          <property name="priority-type" value ="dynamic"/> <!-- {static, dynamic} --> 
          <property name="node-priority" value="50"/> <!-- max == 100 -->
      </properties-param>
    </init-params> 
  </component>

  • 3-third node
<component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params>
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> <!-- {persistent, proxy} -->
          <property name="bind-ip-address" value="192.168.0.17"/> 
          <property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;oob_thread_pool.queue_max_size=100;thread_naming_pattern=cl;use_concurrent_stack=true;oob_thread_pool.rejection_policy=Run;discard_incompatible_packets=true;thread_pool.max_threads=40;oob_thread_pool.enabled=false;oob_thread_pool.max_threads=20;loopback=false;oob_thread_pool.keep_alive_time=5000;thread_pool.queue_enabled=false;oob_thread_pool.queue_enabled=false;max_bundle_size=64000;thread_pool.queue_max_size=100;thread_pool.enabled=false;enable_diagnostics=true;max_bundle_timeout=30;oob_thread_pool.min_threads=8;use_incoming_packet_handler=true;thread_pool.rejection_policy=Run;thread_pool.min_threads=8;thread_pool.keep_alive_time=5000;enable_bundling=true):TCPPING(initial_hosts=192.168.0.15[24090],192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD(timeout=2000;max_tries=5;shun=true):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;print_stability_history_on_failed_xmit=true;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=true;merge_leader=true;reject_join_from_existing_member=true)"/> 
          <property name="recovery-dir" value="../temp/replication/recovery"/> 
          <property name="node-name" value="cluster_node3"/> 
          <property name="other-participants" value="cluster_node1;cluster_node2"/> 
          <property name="wait-confirmation" value="2000"/> 
      </properties-param> 
      <properties-param>
        <name>replication-priority-properties</name>
          <property name="priority-type" value ="dynamic"/> <!-- {static, dynamic} --> 
          <property name="node-priority" value="30"/> <!-- max == 100 -->
      </properties-param>
    </init-params> 
  </component>

2.4 Configuration to JCR 1.10.1.

Default replication configuration to JCR 1.10.1

<!-- for persistent mode --> 
  <component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params>
      <value-param>
        <name>force-xml-configuration</name>
            <value>true</value>      
      </value-param> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> <!-- {persistent, proxy} -->
          <property name="bind-ip-address" value="192.168.0.15"/> 
          <property name="channel-config" value="TCP(oob_thread_pool.queue_max_size=100;thread_naming_pattern=cl;use_concurrent_stack=true;oob_thread_pool.rejection_policy=Run;discard_incompatible_packets=true;thread_pool.max_threads=40;oob_thread_pool.enabled=false;oob_thread_pool.max_threads=20;loopback=false;oob_thread_pool.keep_alive_time=5000;thread_pool.queue_enabled=false;oob_thread_pool.queue_enabled=false;max_bundle_size=64000;thread_pool.queue_max_size=100;thread_pool.enabled=false;enable_diagnostics=true;max_bundle_timeout=30;oob_thread_pool.min_threads=8;use_incoming_packet_handler=true;thread_pool.rejection_policy=Run;bind_addr=$bind-ip-address;thread_pool.min_threads=8;thread_pool.keep_alive_time=5000;enable_bundling=true):MPING(timeout=2000;num_initial_members=8;mcast_port=34526;mcast_addr=224.0.0.1):FD(timeout=2000;max_tries=5;shun=true):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;print_stability_history_on_failed_xmit=true;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=true;merge_leader=true;reject_join_from_existing_member=true)"/> 
          <property name="recovery-dir" value="../temp/replication/recovery"/> 
          <property name="node-name" value="cluster_node2"/> 
          <property name="other-participants" value="cluster_node1;cluster_node3"/> 

          <property name="wait-confirmation" value="2000"/> 
      </properties-param> 
      <properties-param>
        <name>replication-priority-properties</name>
          <property name="priority-type" value ="dynamic"/> <!-- {static, dynamic} --> 
          <property name="node-priority" value="100"/> <!-- max == 100 -->
      </properties-param>
    </init-params> 
  </component>

It's required to change channel-config with

<property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;oob_thread_pool.queue_max_size=100;thread_naming_pattern=cl;use_concurrent_stack=true;oob_thread_pool.rejection_policy=Run;discard_incompatible_packets=true;thread_pool.max_threads=40;oob_thread_pool.enabled=false;oob_thread_pool.max_threads=20;loopback=false;oob_thread_pool.keep_alive_time=5000;thread_pool.queue_enabled=false;oob_thread_pool.queue_enabled=false;max_bundle_size=64000;thread_pool.queue_max_size=100;thread_pool.enabled=false;enable_diagnostics=true;max_bundle_timeout=30;oob_thread_pool.min_threads=8;use_incoming_packet_handler=true;thread_pool.rejection_policy=Run;thread_pool.min_threads=8;thread_pool.keep_alive_time=5000;enable_bundling=true):TCPPING(initial_hosts=192.168.0.15[24090],192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD(timeout=2000;max_tries=5;shun=true):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;print_stability_history_on_failed_xmit=true;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=true;merge_leader=true;reject_join_from_existing_member=true)"/>

TCPPING config:

TCPPING(initial_hosts=192.168.0.15[24090],192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3)

The TCPPING configuration see http://www.jboss.org/community/wiki/JGroupsTCPPING

Configuration to three nodes cluster

  • 1-first node
<component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params>
      <value-param>
        <name>force-xml-configuration</name>
            <value>true</value>      
      </value-param> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> <!-- {persistent, proxy} -->
          <property name="bind-ip-address" value="192.168.0.15"/> 
          <property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;oob_thread_pool.queue_max_size=100;thread_naming_pattern=cl;use_concurrent_stack=true;oob_thread_pool.rejection_policy=Run;discard_incompatible_packets=true;thread_pool.max_threads=40;oob_thread_pool.enabled=false;oob_thread_pool.max_threads=20;loopback=false;oob_thread_pool.keep_alive_time=5000;thread_pool.queue_enabled=false;oob_thread_pool.queue_enabled=false;max_bundle_size=64000;thread_pool.queue_max_size=100;thread_pool.enabled=false;enable_diagnostics=true;max_bundle_timeout=30;oob_thread_pool.min_threads=8;use_incoming_packet_handler=true;thread_pool.rejection_policy=Run;thread_pool.min_threads=8;thread_pool.keep_alive_time=5000;enable_bundling=true):TCPPING(initial_hosts=192.168.0.15[24090],192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD(timeout=2000;max_tries=5;shun=true):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;print_stability_history_on_failed_xmit=true;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=true;merge_leader=true;reject_join_from_existing_member=true)"/> 
          <property name="recovery-dir" value="../temp/replication/recovery"/> 
          <property name="node-name" value="cluster_node1"/> 
          <property name="other-participants" value="cluster_node2;cluster_node3"/> 
          <property name="wait-confirmation" value="2000"/> 
      </properties-param> 
      <properties-param>
        <name>replication-priority-properties</name>
          <property name="priority-type" value ="dynamic"/> <!-- {static, dynamic} --> 
          <property name="node-priority" value="100"/> <!-- max == 100 -->
      </properties-param>
    </init-params> 
  </component>

  • 2-second node
<component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params>
      <value-param>
        <name>force-xml-configuration</name>
            <value>true</value>      
      </value-param> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> <!-- {persistent, proxy} -->
          <property name="bind-ip-address" value="192.168.0.16"/> 
          <property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;oob_thread_pool.queue_max_size=100;thread_naming_pattern=cl;use_concurrent_stack=true;oob_thread_pool.rejection_policy=Run;discard_incompatible_packets=true;thread_pool.max_threads=40;oob_thread_pool.enabled=false;oob_thread_pool.max_threads=20;loopback=false;oob_thread_pool.keep_alive_time=5000;thread_pool.queue_enabled=false;oob_thread_pool.queue_enabled=false;max_bundle_size=64000;thread_pool.queue_max_size=100;thread_pool.enabled=false;enable_diagnostics=true;max_bundle_timeout=30;oob_thread_pool.min_threads=8;use_incoming_packet_handler=true;thread_pool.rejection_policy=Run;thread_pool.min_threads=8;thread_pool.keep_alive_time=5000;enable_bundling=true):TCPPING(initial_hosts=192.168.0.15[24090],192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD(timeout=2000;max_tries=5;shun=true):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;print_stability_history_on_failed_xmit=true;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=true;merge_leader=true;reject_join_from_existing_member=true)"/> 
          <property name="recovery-dir" value="../temp/replication/recovery"/> 
          <property name="node-name" value="cluster_node2"/> 
          <property name="other-participants" value="cluster_node1;cluster_node3"/> 
          <property name="wait-confirmation" value="2000"/> 
      </properties-param> 
      <properties-param>
        <name>replication-priority-properties</name>
          <property name="priority-type" value ="dynamic"/> <!-- {static, dynamic} --> 
          <property name="node-priority" value="50"/> <!-- max == 100 -->
      </properties-param>
    </init-params> 
  </component>

  • 3-third node
<component> 
    <type>org.exoplatform.services.jcr.ext.replication.ReplicationService</type> 
    <init-params>
      <value-param>
        <name>force-xml-configuration</name>
            <value>true</value>      
      </value-param> 
      <values-param> 
          <name>repositories</name> 
            <value>repository</value> 
      </values-param> 
      <properties-param> 
        <name>replication-properties</name> 
          <property name="enabled" value="true"/> 
          <property name="mode" value="persistent"/> <!-- {persistent, proxy} -->
          <property name="bind-ip-address" value="192.168.0.17"/> 
          <property name="channel-config" value="TCP(bind_addr=$bind-ip-address;start_port=24090;end_port=24099;oob_thread_pool.queue_max_size=100;thread_naming_pattern=cl;use_concurrent_stack=true;oob_thread_pool.rejection_policy=Run;discard_incompatible_packets=true;thread_pool.max_threads=40;oob_thread_pool.enabled=false;oob_thread_pool.max_threads=20;loopback=false;oob_thread_pool.keep_alive_time=5000;thread_pool.queue_enabled=false;oob_thread_pool.queue_enabled=false;max_bundle_size=64000;thread_pool.queue_max_size=100;thread_pool.enabled=false;enable_diagnostics=true;max_bundle_timeout=30;oob_thread_pool.min_threads=8;use_incoming_packet_handler=true;thread_pool.rejection_policy=Run;thread_pool.min_threads=8;thread_pool.keep_alive_time=5000;enable_bundling=true):TCPPING(initial_hosts=192.168.0.15[24090],192.168.0.16[24090],192.168.0.17[24090];port_range=9;timeout=3500;num_initial_members=3):FD(timeout=2000;max_tries=5;shun=true):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(max_xmit_size=60000;print_stability_history_on_failed_xmit=true;use_mcast_xmit=false;gc_lag=0;discard_delivered_msgs=true;retransmit_timeout=300,600,1200,2400,4800):pbcast.STABLE(stability_delay=1000;desired_avg_gossip=50000;max_bytes=8000000):pbcast.GMS(print_local_addr=true;join_timeout=3000;view_bundling=true;join_retry_timeout=2000;shun=true;merge_leader=true;reject_join_from_existing_member=true)"/> 
          <property name="recovery-dir" value="../temp/replication/recovery"/> 
          <property name="node-name" value="cluster_node3"/> 
          <property name="other-participants" value="cluster_node1;cluster_node2"/> 
          <property name="wait-confirmation" value="2000"/> 
      </properties-param> 
      <properties-param>
        <name>replication-priority-properties</name>
          <property name="priority-type" value ="dynamic"/> <!-- {static, dynamic} --> 
          <property name="node-priority" value="30"/> <!-- max == 100 -->
      </properties-param>
    </init-params> 
  </component>

3 Troubleshooting

  • bind-ip-address is ignored
On JBoss, if you find that bind-ip-address value is ignored by JGroups, you may want to set the following JVM param
-Djgroups.ignore.bind_address=true
Tags:
Created by Alex Reshetnyak on 07/28/2008
Last modified by Sören Schmidt on 06/17/2010

Products

generated on Thu Sep 02 15:38:12 UTC 2010

eXo Optional Modules

eXo Core Foundations


Copyright (c) 2000-2010. All Rights Reserved - eXo platform SAS
2.4.30451