Gardb (arbitrator) question

Hi all,

I have setup a cluster with 2 data-nodes (node 1 in datacenter 1 and node 2 in datacenter 2) and 1 arbitrator in datacenter 3 and my first tests shows that all the traffic between the data-nodes is also relayed across the arbitrator.

I have simulated a traffic delay of 1000ms in the arbitrator with:

tc qdisc del dev eth1 root netem delay 1000ms

and all the write database activity (inserts, update, etc) is delayed.

WITHOUT DELAY:

mysql> insert into t10 values(1);
Query OK, 1 row affected (0,03 sec)

mysql> insert into t10 values(1);
Query OK, 1 row affected (0,02 sec)

mysql> insert into t10 values(1);
Query OK, 1 row affected (0,02 sec)

mysql> insert into t10 values(1);
Query OK, 1 row affected (0,01 sec)

WITH DELAY:

mysql> insert into t10 values(1);
Query OK, 1 row affected (1,61 sec)

mysql> insert into t10 values(1);
Query OK, 1 row affected (1,88 sec)

mysql> insert into t10 values(1);
Query OK, 1 row affected (1,10 sec)

mysql> insert into t10 values(1);
Query OK, 1 row affected (1,15 sec)

mysql> insert into t10 values(1);
Query OK, 1 row affected (1,16 sec)

Is there any way to skip this behaviour? I only want to setup the arbitrator in a third datacenter in order to avoid a possible split brain between datacenter 1 and 2.

Thanks in advance,
Best Regards.

I am not aware of any workaround. The garbd node indeed must receive all the traffic a normal node does, so it should be as close to working nodes as possible. You may want to try gmcast segments though to avoid having the garb node connections to all nodes in the same time.