<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<br>
<div class="moz-cite-prefix">On 03/06/2014 04:48 PM, Greg Scott
wrote:<br>
</div>
<blockquote
cite="mid:1b624a9504bf4458957b01c2c190a19c@mail2013.infrasupport.local"
type="cite">
<blockquote type="cite">
<pre wrap="">In your real-life concern, the interconnect would not interfere with the existence of either
machines' ip address so after the ping-timeout, operations would resume in a split-brain
configuration. As long as no changes were made to the same file on both volumes, when the
connection is reestablished, the self-heal will do exactly what you expect.
</pre>
</blockquote>
<pre wrap="">
Except that's not what happens. If I ifdown that interconnect NIC, I should see the file system after 42 seconds, right?
</pre>
</blockquote>
No.<br>
<br>
Lets take a look at an imaginary volume:<br>
<tt><br>
</tt>
<blockquote><tt># gluster volume info foo</tt><tt><br>
</tt><tt>Volume Name: foo</tt><tt><br>
</tt><tt>Type: Replicate</tt><tt><br>
</tt><tt>Volume ID: f8577cab-9ea9-411f-9b85-97c93b1ba7df</tt><tt><br>
</tt><tt>Status: Started</tt><tt><br>
</tt><tt>Number of Bricks: 1 x 2 = 2</tt><tt><br>
</tt><tt>Transport-type: tcp</tt><tt><br>
</tt><tt>Bricks:</tt><tt><br>
</tt><tt>Brick1: server1:/mnt/1/brick</tt><tt><br>
</tt><tt>Brick2: server2:/mnt/1/brick</tt><tt><br>
</tt><tt><br>
</tt><tt># ping -c1 server1 | grep server1</tt><tt><br>
</tt><tt>PING server1.domain.dom (192.168.0.1) 56(84) bytes of
data.</tt><tt><br>
</tt><tt># ping -c1 server2 | grep server2</tt><tt><br>
</tt><tt>
PING server2.domain.dom (192.168.0.2) 56(84) bytes of data.</tt><br>
<br>
</blockquote>
Each server mounts its volume from localhost using an fstab entry
like "localhost:foo /mnt/foo glusterfs _netdev 0 0".<br>
<br>
What this actually does is contact glusterd on port 24007 at
localhost and ask for the volume definition for foo. Upon receiving
that, the client then connects directly with the brick servers on
whatever port they have assigned at the resolved ip address for each
hostname. In this scenario, the <b>client will connect to both
server1 and server2 at 192.168.0.1 an 192.168.0.2 respectively</b>.<br>
<br>
Now, on server1 we down the interface. <b>192.168.0.1 no longer
exists</b>! The route to 192.168.0.2 no longer exists. The <b>client
can now connect to neither server</b>.<br>
<br>
This is different from someone pulling a plug. If someone pulls the
plug, <b>192.168.0.1 will still exist</b>! The client will still be
able to access the mounted volume through that address even though
it can no longer reach the replica at 192.168.0.2.<br>
<br>
</body>
</html>