WildFly Clustering without Multicast: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 101: Line 101:
</pre>
</pre>


or
If the domain model is used and the same profile is shared by several server groups, the "initial_hosts" property should be set on the <tt>server_group</tt>, as follows:


<pre>
<pre>
...
/profile=ha/subsystem=jgroups/stack=tcp/protocol=TCPPING/property=initial_hosts:add(value="${jboss.cluster.tcp.initial_hosts}")
/subsystem=jgroups/stack=tcp/protocol=TCPPING/property=initial_hosts:add(value="${jboss.cluster.tcp.initial_hosts}")
</pre>
 
and the server group-specific values for the system property are set in the <tt><server-group></tt> element as follows:
 
<font color=red>
TODO:


<pre>
    ...
    <server-groups>
        <server-group name="something" profile="ha">
            <socket-binding-group ref="ha-sockets"/>
            <system-properties>
              <property name="jboss.cluster.tcp.initial_hosts" value="1.2.3.4[7600],1.2.3.5[7600]" />
            </system-properties>
      </server-group>
      ...
    <server-groups>
</pre>
</pre>
</font>


Note that the operation requires reload (see [[reload]])
Note that the operation requires reload (see [[reload]])

Revision as of 05:54, 24 February 2016

External

Internal

Procedure

Switch to a "tcp" Default Stack

Manual

Locate the "jgroups" subsystem in standalone.xml or domain.xml relevant profile, and set default-stack value to "tcp":

  ...
  <subsystem xmlns="urn:jboss:domain:jgroups:1.1" default-stack="tcp">
  ...

CLI

/profile=ha/subsystem=jgroups:write-attribute(name=default-stack,value=tcp)

Note that the operation requires reload, but you should reload the server configuration only after the entire procedure is complete (see reload)

Replace the MPING protocol with TCPPING

Manual

Locate the "tcp" stack inside the "jgroups" subsystem and replace the MPING protocol with TCPPING:

   ...
   <stack name="tcp">
      <transport type="TCP" socket-binding="jgroups-tcp"/>
      <protocol type="TCPPING">
          <property name="initial_hosts">1.2.3.4[7600],1.2.3.5[7600]</property>
          <property name="num_initial_members">2</property>
          <property name="port_range">0</property>
          <property name="timeout">2000</property>
       </protocol>
       <!--<protocol type="MPING" socket-binding="jgroups-mping"/>-->
       <protocol type="MERGE2"/>
       ...
   </stack>
  ...

If the domain model is used and the same profile is shared by several server groups, the "initial_hosts" property should be set on the server_group, as follows:

   ...
   <stack name="tcp">
      <transport type="TCP" socket-binding="jgroups-tcp"/>
      <protocol type="TCPPING">
          <property name="initial_hosts">${jboss.cluster.tcp.initial_hosts}</property>
          ...
       </protocol>
       ...
   </stack>
  ...

and the server group-specific values for the system property are set in the <server-group> element as follows:

    ...
    <server-groups>
        <server-group name="something" profile="ha">
            <socket-binding-group ref="ha-sockets"/>
            <system-properties>
              <property name="jboss.cluster.tcp.initial_hosts" value="1.2.3.4[7600],1.2.3.5[7600]" />
            </system-properties>
       </server-group>
      ...
    <server-groups>

CLI

Note that we can't simply remove MPING and add TCPING, the CLI API is not expressive enough to allow us to specify the protocol's position in the list. We need to replace MPING with TCPPING as follows:

/profile=ha/subsystem=jgroups/stack=tcp/protocol=MPING/:write-attribute(name=type,value=TCPPING)
/profile=ha/subsystem=jgroups/stack=tcp/protocol=MPING/:write-attribute(name=socket-binding)
/profile=ha/subsystem=jgroups/stack=tcp/protocol=TCPPING/property=initial_hosts:add(value="1.2.3.4[7600],1.2.3.5[7600]")
/profile=ha/subsystem=jgroups/stack=tcp/protocol=TCPPING/property=num_initial_members:add(value="2")
/profile=ha/subsystem=jgroups/stack=tcp/protocol=TCPPING/property=port_range:add(value="0")
/profile=ha/subsystem=jgroups/stack=tcp/protocol=TCPPING/property=timeout:add(value="2000")

If the domain model is used and the same profile is shared by several server groups, the "initial_hosts" property should be set on the server_group, as follows:

/profile=ha/subsystem=jgroups/stack=tcp/protocol=TCPPING/property=initial_hosts:add(value="${jboss.cluster.tcp.initial_hosts}")

and the server group-specific values for the system property are set in the <server-group> element as follows:

TODO:

    ...
    <server-groups>
        <server-group name="something" profile="ha">
            <socket-binding-group ref="ha-sockets"/>
            <system-properties>
              <property name="jboss.cluster.tcp.initial_hosts" value="1.2.3.4[7600],1.2.3.5[7600]" />
            </system-properties>
       </server-group>
      ...
    <server-groups>

Note that the operation requires reload (see reload)

Additional Verifications

  • Verify that the cluster members do actually bind to the IP addresses specified in initial_hosts.
  • See port_range recommendations.
  • See num_initial_members recommendations.