Two-machine cluster efficient approach(?) Comment? Thanks.

Chuck Wu (wu@cnds.jhu.edu)
Thu, 24 May 2001 18:32:10 -0400 (EDT)


Two machines want to be accessed by the same IP address and
share workload. Can not change the router. Can only change
local linux system. Will the following approach work? Thanks.

Solution:
---------
1. Reserve an unused IP as the to be publicized "Server IP", actually no
machine takes it. So, it is kind of "virtual IP".
2. Alias the NIC of those two work stations to this "virtual IP" so they
can accept packets to this "virtual IP".
3. For ARP request packet to this "virtual IP", those two work stations
will return the MAC broadcast address. Then, all the packets to the
"virtual IP" will be broadcast to this subnet and those two machines
will get such packtes.
4. Before such packets gets into the TCP/IP stack, use a hash function
to filter the packets. Say, workstation A will accept packets whose
source IP is an odd number and discard the packets with even-number
source IP.
5. For the outgoing packets from those two workstations, change the source
IP address to be the "virtual IP".
6. Have another thread keep ping each other, once another workstation
crashes, change my hash function to accept all the packets to the
"virtual IP". Whenever another workstation resumes, switch back to
the original hash function.

Do you think if this approach will work? There is also a question I
am not quite sure, can two machines's NICs be aliased to the same "virtual
IP"? Will it cause some conflicts? And, it seems I need to change the
linux kernel source code. I am not pretty sure where is the location of
the source code related to the above operations. Like, can you tell me the
location of the linux kernel source code to answer an ARP request packet,
to build a hash function to filter the incoming IP packets before it
enters the TCP/IP stack?

Thanks a lot.

best,
chuck

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/