Hi everybody, I was having some disturbing ideas last week about doing loadbalancing without a distributing agent - the nodes take care of it themselves. It turns out you can do this with iptables and iproute2: http://ds9a.nl/2.4Routing/autoloadbalance.php3 Please let me know what you think, and if it works for you. Regards, bert -- http://www.PowerDNS.com Versatile DNS Services Trilab The Technology People ''SYN! .. SYN|ACK! .. ACK!'' - the mating call of the internet
christian.benvenuti@libero.it
2001-Jul-17 08:05 UTC
HOWTO: ''auto loadbalancing'' page created
If I understood it correctly, what you are trying to do is CPU/IO load balancing instead of network-bandwidth load balancing. Unless the servers are in different physical networks (ie reacheble with different and not overlapping paths), the only load balancing that makes sense is only CPU/IO load balancing since the "common and/or overlapping" path would be the bottleneck already. I probably did not understand your point. Anyway, here are a few things you may consider: - If the server are higly loaded (but you say that''s not the case) it is never a good idea to turn a switch into an hub. Even if the switch is not loaded, it may be running the spanning tree and it may be a bad and dangerous idea to switch it off (=turn into an hub). - If with this "I was having some disturbing ideas last week about doing loadbalancing without a distributing agent - the nodes take care of it themselves." you mean that the solution should be plug&play, I do not think yours is such. REASONS: -You must be able to recover in case one of the servers fails, which means that if all the traffic going to server X because of the last N bits values is not handled by the failed server, no one else is going to take care of them. You should introduce a sort of hello mechanism to find out who else is in your "group" and try to mantain and adapt the traffic distribution rules accordingly. Moreover, load balancing based on the source IP addr is not really the best choice for a CPU/IO load balancing (is is not for others criteria either). Of course, whether it would be good or not depends on the type of CPU/IO operations, but I think on average they are not (I agree that it would be better than nothing ...). Question: What is the difference between having all the servers receiving the packets and only one accepting it because of the rules you explained, and having the traffic directly forwarded to the only one that will not discard it? If you do not use any "transparent" mechanism such as the one I suggested above, I think there would not be any difference. Possible problem. Supposing you use the dynamic mechanism, since the same "virtual" server could be responsable for different ranges of IP addresses in different moments (even if they are not supposed to change frequently), this may mean that if one virtual server is holding some "session" information (es. cookie), the new guy that will be in charge for the same session will not have those information and you may have problems at higher layers. There are many other small issues to consider, but since I am not sure I understood your point, I stop the mail here :-) /Christian