[Linux-cluster] Multicast for GFS?

Lazar Obradovic laza at yu.net
Tue Aug 3 17:17:51 UTC 2004


Hi, 

can someone, please, give some advice about configuring multicast with
GFS? I know it might go out of topic, but it's perhaps useful for
others.

I'd use broadcast instead, but I have a problem that two groups of
servers sharing the same storage, but that are located in different
vlans, separated by router-on-a-stick, so I guess I have to use
multicast.

I've configured the router for multicast (config is right below), but it
doesn't seem to work. 

Here's ascii pic of what I'm trying to make: 

        +--------+
        | router |
        +--------+
         /       \
+----------+    +----------+
| switch A |    | switch B | 
| vlan 100 |    | vlan 200 | 
+----------+    +----------+
     |               |
+----------+    +----------+
| server A |    | server B |
+----------+    +----------+
     |               |
  +---------------------+
  |   san / storage     | 
  +---------------------+

and relevant config (that I made this far): 

router (cisco ios): 

ip multicast-routing 
!
interface FastEthernet0/0
 description Branch A
 ip address 1.1.1.1 255.255.255.0 
 ip pim sparse-dense-mode
 ip igmp version 1
 encapsulation dot1q 100
!
interface FastEthernet0/1
 description Branch B
 ip address 1.1.2.1 255.255.255.0
 ip pim sparse-dense-mode
 ip igmp version 1
 encapsulation dot1q 200
!
ip pim send-rp-announce FastEthernet0/0 scope 16
ip pim send-rp-discovery scope 16
!

switch A and switch B are manageable Intel switches (dunno the exact
model; they are bundled with my IBM Blades), but have IGMP Snooping
turned on on every interface, and show default cisco pim groups
(224.0.0.40 and 224.0.0.39) on upstream ports.

/etc/cluster/cluster.conf for each cluster node is same (only important
part of config is here, ask for more, if needed): 

<cluster name="test" config_version="1">
        <cman>
                <multicast addr="224.0.0.11"/>
        </cman>
        <nodes>
                <node name="node1" votes="1">
                        <multicast addr="224.0.0.11" interface="eth0"/>
                </node>
                <node name="node2" votes="1">
                        <multicast addr="224.0.0.11" interface="eth0"/>
                </node>
        </nodes>
</cluster>

hosts ping each other, so networking part, as far as basic ip and
unicast is concerned, is working properly.

When starting, cman_tool says: 
cluster # cman_tool join -d
multicast address 224.0.0.11
if eth0 for mcast address 224.0.0.11
setup up interface for address: node1

and as I can see from strace, "cman_tool join", this is what happens: 

socket(0x1f /* PF_??? */, SOCK_DGRAM, 2) = 3
ioctl(3, 0x780b, 0x2)                   = 0
setsockopt(3, 0x2 /* SOL_?? */, 109, [6516590], 4) = 0
[...]
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 4
bind(4, {sa_family=AF_INET, sin_port=htons(6809), sin_addr=inet_addr("224.0.0.11")}, 16) = 0
socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 5
bind(5, {sa_family=AF_INET, sin_port=htons(6809), sin_addr=inet_addr("1.1.1.2")}, 16) = 0
setsockopt(3, 0x2 /* SOL_?? */, 100, "\4\0\0\0\0\0\0\0", 8) = 0
setsockopt(3, 0x2 /* SOL_?? */, 103, "\5\0\0\0\0\0\0\0", 8) = 0
setsockopt(3, 0x2 /* SOL_?? */, 101, "\1\344\377\277\3\0\0\0\0\0\0\0\1\0\0\0smtp\0\'\1@\210\0"..., 36) = 0
close(3)                                = 0
exit_group(0)                           = ?

I've checked some programming examples on multicast as well as code for
cman, and I thing cman_tool/join.c has two problems: 

- it never seems to issue setsockopt(..., IP_ADD_MEMBERSHIP...), thus,
never joins the group. I believe the problem is in if (!bcast) check,
which, if replaced with "if (bhe)" should work fine...

- it binds the socket with multicast address (fd = 4 in my case) instead
of local address. If the examples I looked are true, one should bind
local interface, and then specify mcast address in setsockopt call. 

Can someone comment this issue? Am I going in completly wrong direction,
or multicast support isn't ready yet?

-- 
Lazar Obradovic, System Engineer
----- 
laza at YU.net
YUnet International http://www.EUnet.yu
Dubrovacka 35/III, 11000 Belgrade
Tel: +381 11 3119901; Fax: +381 11 3119901
-----
This e-mail is confidential and intended only for the recipient.
Unauthorized distribution, modification or disclosure of its
contents is prohibited. If you have received this e-mail in error,
please notify the sender by telephone +381 11 3119901.
-----





More information about the Linux-cluster mailing list