Advice on extending CTDB to support multiple NIC interfaces per node

Kevin Osborn kosborn at overlandstorage.com
Wed Mar 26 09:49:00 MDT 2014


Hi,

We are thinking of extending CTDB to support multiple public NIC interfaces per node and we would like to ask your advice on the correct approach. I will describe what necessitates this feature as well as the areas we expect to have to modify. We would love some advice from the experts, especially if our approach is leading us off into dangerous territory. Thanks in advance for any help you can offer.

Why do we need multiple NIC interfaces per node? 
We are working on passing the VMware iSCSI certification test suite and there are some tests that expect at least two physical routes to the same iSCSI target. Each iSCSI target must be hosted by just one node in our architecture. So we will need to add another Ethernet interface to the node to facilitate the VMware failover scheme and pass the certification test.

What failover behavior would we expect?
Each node would host two Ethernet interfaces and two public IP addresses allocated by CTDB. Failure of a single interface would result in the failed IP address being moved to the other interface on the same node. Failure of the entire node would move both IP addresses to some other node, but both would be served up by the same node. The two IP addresses would always be hosted by a single node. 

How would we have to change CTDB?
We see the following areas that will need to change to support this new feature.
Failover: 
1. Introduce a new tunable that would activate this mode, say MULTI_INTERFACE_PER_NODE. This tunable would activate several new code paths including a new failover mechanism and introduce a new IP allocation scheme.
2. We would not fail an entire node when a single interface goes down. This means that the failover logic needs to be changed from node based to interface based. (This looks like it could get complicated!)
3. Add a new ip_alloc_multi_interface() to the ctdb_takeover_run_core() function
4. We would add a new configuration file that would list the valid ip address tuples that any node can host. This file would be saved on the cluster file system.

I have made this description as brief as possible to sketch out our intentions. We are open to other approaches too. Please feel free to ask detailed questions by contacting me directly.

Thanks again for your help,

-Kevin



More information about the samba-technical mailing list