Bug 1038621

Summary: 23. Set Up JGroups Interfaces
Product: [JBoss] JBoss Data Grid 6 Reporter: Radim Vansa <rvansa>
Component: DocumentationAssignee: Misha H. Ali <mhusnain>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: medium Docs Contact:
Priority: unspecified    
Version: 6.2.0CC: jdg-bugs, rvansa
Target Milestone: GA   
Target Release: 6.2.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-01-16 00:03:15 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Radim Vansa 2013-12-05 13:47:39 UTC
23. Set Up JGroups Interfaces
Rename to "23. JGroups Configuration"

23.1. About JGroups
"JGroups is the underlying group communication library used to connect Red Hat JBoss Data Grid instances. JGroups allows users to bind to an interface type rather than a specific (unknown) IP address."

Remove the second sentence, keep just

"JGroups is the underlying group communication library used to connect Red Hat JBoss Data Grid instances."

Now, 23.2 and 23.3 should both go into section titled
23.2 Configure JGroups interface binding (Remote client-server mode)

Rename "23.2 Configure JGroups Interfaces" -> "23.2.1 Configure Red Hat JBoss Data Grid interfaces"

Remove following text (BEGIN-END) from 23.2.1, as socket binding should be described later in 23.2.2

---BEGIN---
Before JGroups Interface configuration, configure the Red Hat JBoss Data Grid configuration (clustered.xml or standalone.xml depending on the type of deployment) file to a key word rather than a dotted decimal or symbolic IP address as follows:

<socket-binding name="jgroups-udp" ...  interface="site-local"/>

Then, configure the JGroups Interface as follows:
---END---

Instead, place following text below heading 23.2.1

"Red Hat JBoss Data Grid allows users to specify an interface type rather than a specific (unknown) IP address."

Change the "Procedure 23.1. Configure the JGroups Interface" into something more like set of options - it's not a sequence of steps. Also rename it to
"Configure Red Hat JBoss Data Grid interfaces" as this is not JGroups specific.

The configurations excerpts are flawed, and stack upon the previous ones - I'll provide them as separate option each (and fixed). Please, check the correct indentation. Otherwise the text is correct.

1)
<interfaces>
    <interface name="link-local">
        <link-local-address/>
    </interface>
    ...
</interfaces>

2)
<interfaces>
    <interface name="site-local">
        <site-local-address/>
    </interface>
    ...
</interfaces>

3)
<interfaces>
    <interface name="global">
        <any-address/>
    </interface>
    ...
</interfaces>

4)
<interfaces>
    <interface name="non-loopback">
        <not>
	    <loopback />
	</not>
    </interface>
</interfaces>

23.3. Binding Sockets -> 23.2.1 Binding Sockets

"Group interfaces can be used to bind all socket bindings within a given socket binding group or to bind individual sockets."

change to

"Socket bindings provide a named the combination of interface and port.
Sockets may be bound to the interface either individually or using a socket binding group."

new section 23.2.3. (BEGIN-END)

---BEGIN---
23.2.3. Configure JGroups Socket Binding

Each JGroups stack, configured in the JGroups subsystem, uses particular socket binding. Use following to setup the socket binding:

<subsystem xmlns="urn:jboss:domain:jgroups:1.2" default-stack="udp">
    <stack name="udp">
        <transport type="UDP" socket-binding="jgroups-udp">
            ...
        </transport>
        <!-- rest of protocols -->
    </stack>
</subsystem>

Important:
When using UDP as the JGroups transport, the socket binding has to specify both 
regular (unicast) port, multicast address and multicast port.
---END---

Rename "23.4 Configure JGroups for Clustered Modes" -> "23.3. Configure JGroups (Library Mode)"

23.4.1. JGroups Transport Protocols

Remove second and third paragraph, JDG is not based on WildFly and generally this is rather confusing.

In 4th paragraph, change "TCP/IP" to "TCP". Similar in following text: no "TCP/IP", just "TCP".

23.4.1.3. Using the TCPPing Protocol
"As an alternative to using the pre-configured TCP file, which uses TCP/Mping, the TCPPing protocol stack can be added to your configuration and used as the default mechanism. The TCPPing approach contains a static list of the IP address of each member of the cluster in the JGroups configuration file. "

Change this to 

"The pre-configured jgroups-tcp.xml includes the MPING protocol, which uses UDP multicast for discovery. When UDP multicast is not available at all, the MPING protocol, has to be replaced by different mechanism. The recommended alternative is the TCPPING protocol. Configuration of TCPPING contains a static list of IP addresses which should be contacted for node discovery."

23.4.2.1. jgroups-udp.xml
Remove the "minimizes inefficient use of sockets."

23.4.2.2. jgroups-tcp.xml
Remove the "Maximum cluster size for TCP is slightly greater in distribution mode than in replication or invalidation modes."

23.5. Test Multicast Using JGroups
Add this:
"This section shows how to check that your system has properly configured multicasting within the cluster."

Comment 4 Radim Vansa 2013-12-06 10:06:56 UTC
I have probably not specified the layout for current section 23.2 very well:

"23.2 Configure Red Hat JBoss Data Grid Interfaces (Remote Client-Server Mode)"
-> title should be 
"23.2 Configure Red Hat JBoss Data Grid Interface Binding (Remote Client-Server Mode)"

Then, there should be another heading "23.2.1 Interfaces" and all what's directly under 23.2 should go to this section.

"23.2.1 Binding Sockets" should become 23.2.2 (be at the same level as Interfaces)
"23.2.2. Binding a Single Socket Example" -> go below "Binding Sockets", become 23.2.2.1
"23.2.3. Binding a Group of Sockets Example" -> go below "Binding Sockets", become 23.2.2.2

"23.2.4. Configure JGroups Socket Binding" -> same level as Interfaces and Binding Sockets, become 23.2.3

The rest looks good. Thanks.

Comment 5 Misha H. Ali 2013-12-06 12:01:43 UTC
NP, working on this now.

Comment 6 Misha H. Ali 2013-12-06 12:50:12 UTC
(In reply to Radim Vansa from comment #4)
> I have probably not specified the layout for current section 23.2 very well:
> 
> "23.2 Configure Red Hat JBoss Data Grid Interfaces (Remote Client-Server
> Mode)"
> -> title should be 
> "23.2 Configure Red Hat JBoss Data Grid Interface Binding (Remote
> Client-Server Mode)"

Changed

> 
> Then, there should be another heading "23.2.1 Interfaces" and all what's
> directly under 23.2 should go to this section.

See below.

> "23.2.1 Binding Sockets" should become 23.2.2 (be at the same level as
> Interfaces)
See below

> "23.2.2. Binding a Single Socket Example" -> go below "Binding Sockets",
> become 23.2.2.1
> "23.2.3. Binding a Group of Sockets Example" -> go below "Binding Sockets",
> become 23.2.2.2
See below
 
> "23.2.4. Configure JGroups Socket Binding" -> same level as Interfaces and
> Binding Sockets, become 23.2.3
See below.

OK, so before I make more changes, I'd like to confirm I have understood the desired result correctly. Proposed:

23.1. About JGroups
23.2. Configure Red Hat JBoss Data Grid Interfaces (Remote Client-Server Mode)
23.2.1 Interfaces (no content)
23.2.2 Binding Sockets
23.2.2.1 Binding a Single Socket Example
23.2.1.2 Binding a Group of Sockets Example
23.2.3 Configure JGroups Socket Binding
23.3. Configure JGroups (Library Mode)
23.3.1. JGroups Transport Protocols
23.3.2. Pre-Configured JGroups Files
23.4. Test Multicast Using JGroups
23.4.1. Testing With Different Red Hat JBoss Data Grid Versions
23.4.2. Testing Multicast Using JGroups

Comment 7 Misha H. Ali 2013-12-06 13:27:51 UTC
Chapter:
About JGroups
23.2. Configure Red Hat JBoss Data Grid Interfaces (Remote Client-Server Mode) (empty)
23.2.1 Interfaces (content from above topic)
23.2.2 Binding Sockets
23.2.2.1 Binding a Single Socket Example
23.2.1.2 Binding a Group of Sockets Example
23.2.3 Configure JGroups Socket Binding
23.3. Configure JGroups (Library Mode)
23.3.1. JGroups Transport Protocols
23.3.2. Pre-Configured JGroups Files
23.4. Test Multicast Using JGroups
23.4.1. Testing With Different Red Hat JBoss Data Grid Versions
23.4.2. Testing Multicast Using JGroups

This should be implemented now. If it doesn't show up yet, it may need a couple of minutes to refresh.

Comment 8 Misha H. Ali 2014-01-16 00:03:15 UTC
The fix for this bug is now generally released and available here:

https://access.redhat.com/site/documentation/en-US/Red_Hat_JBoss_Data_Grid/6.2/index.html