to load balance under linux with a single ip under linux, id recommend a different approach. all incoming data arrives on eth0, then the linux box sends data out on eth0 and eth1 (or whatever eth# they are).
this may be useful if u SEND more data then u recieve. this may work for a webserver where requests are rather small compared to data, but most likely not for database where they are fairly similarly sized data.
under linux, this is called equal cost multipath routing. there are very few documentation of this feature. i have gotten this too work with dual cable modems, under 2.2.16 and ipchains (although other kernels support it, ive never tried). u need to do the following:
1)compile kernel to support equal cost multipath routing (under networking sections, advanced router i believe).
2)load your new kernel, gotta restart your linux box : (
3)add two default routes, route add default gw XXX.XXX.XXX.XXX, for each device.
4)this should be all
under load, you should now see the devices blinking alternately as they route data. for the client connections, they would appear to be coming from different IP addresses. i used this for IP Masq to my internal lan and it worked great (18 person lan party on dual cables). but the inside client machines didnt care what interface they went through (they were oblivious to my outside ip address anyway).
this may work if your client machines don't care where the data comes from (but must do). if the data is returning from your box to the clients and passess through a firewall/nat/whatever that flags connections by IP addresses then this wont work. i dont even think most client connections will accept incoming data from sources it hasnt requested.
as a wrote this i kindve awnsered to myself why this setup wont work. its still interesting in situations where client machines are oblivious to external IPs (ipmasq).