Well, the storage server has for example two nics eth0 and eth1 with corresponding distinct non overlapping subnets, say
10.1.0.0/16 and
10.2.0.0/16.
Then netstat -r on the storage server would give:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
10.2.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
In this case the all the serices (fhgfs-mgmt, fhgfs-meta, fhgfs-storage) will choose one interface to be the primary one and one to be the fallback interface. If a client happens to be on the side of the primary network interface it will have the primary route, lets say eth0. If a client is on the other side (eth1 here) fhgfs-net shows:
mgmt_nodes
=============
storage [ID: 1]
Connections: TCP: 1 (
10.2.0.1:8008 [fallback route]);
meta_nodes
=============
storage [ID: 12250]
Connections: TCP: 1 (
10.2.0.1:8005 [fallback route]);
storage_nodes
=============
storage [ID: 12250]
Connections: TCP: 1 (
10.2.0.1:8003 [fallback route]);
fhgfs-client.log:
(3) *fhgfs_HBeatMgr(3765) [NodeConn (acquire stream)] >> Connect failed:
fhgfs...@10.1.0.1:8008 (protocol: TCP)
(3) *fhgfs_HBeatMgr(3765) [NodeConn (acquire stream)] >> Connected:
fhgfs...@10.2.0.1:8008 (protocol: TCP; fallback route)
Maybe there's something I'm completely missing here ... so please tell me if it makes no sense at all to you.
Cheers,
Gabriel