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.
<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>
<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>
<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
<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>
<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>
<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
<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>
<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>
<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
<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>
<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>
<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