On ons, 2007-07-25 at 14:25 +0530, Anand Avati wrote: > Hans, > > You can bundle several tcp connections outside of glusterfs, > and choose > between different type of loadbalance and failover setup. This > is done > directly in the OS. > > Can you please elaborate? > > thanks, > avati > Of course! Let's say: You have 2 Gigabit NIC on the server (You can use as many as you like, and mix different brands and chipsset) Task: More throughput / Failover / Both Solution: Bonding the NIC's in one fat bondX device. Example: One of our servers, this is the output of ifconfig: bond0 Link encap:Ethernet HWaddr 00:30:48:88:66:0E inet addr:159.162.84.8 Bcast:159.162.84.255 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:882207013 errors:0 dropped:37 overruns:0 frame:13 TX packets:2133653812 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3690441678 (3.4 GiB) TX bytes:282774 (276.1 KiB) eth0 Link encap:Ethernet HWaddr 00:30:48:88:66:0F UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:728847196 errors:0 dropped:37 overruns:0 frame:13 TX packets:1964318832 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4201174916 (3.9 GiB) TX bytes:3417094326 (3.1 GiB) Interrupt:169 eth1 Link encap:Ethernet HWaddr 00:30:48:88:66:0E UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:153359817 errors:0 dropped:0 overruns:0 frame:0 TX packets:169334980 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3784234058 (3.5 GiB) TX bytes:878155744 (837.4 MiB) Interrupt:177 The corresponding output from /proc/net/bonding/bond0 shows: Ethernet Channel Bonding Driver: v3.0.3 (March 23, 2006) Bonding Mode: adaptive load balancing Primary Slave: None Currently Active Slave: eth1 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 200 Down Delay (ms): 200 Slave Interface: eth0 MII Status: up Link Failure Count: 1 Permanent HW addr: 00:30:48:88:66:0e Slave Interface: eth1 MII Status: up Link Failure Count: 1 Permanent HW addr: 00:30:48:88:66:0f You need bonding module in kernel, and a corresponding(to the kernel) ifenslave binary - e.i you get the right ifenslave through apt-get if you use the ubuntu kernel package. When compiling vanilla kernel you have the ifenslave in kernel source under /path_to_kernel_source/Documentation/networking/, and the installation is this command: gcc -Wall -O -I/path_to_kernel_source/include \ /path_to_kernel_source/Documentation/networking/ifenslave.c \ -o /sbin/ifenslave A link for the setup on Ubuntu: http://www.howtoforge.com/network_bonding_ubuntu_6.10 A general good and informativ link with information on the different modes you can use: http://linux-net.osdl.org/index.php/Bonding I have been using this for some time, and will do even more heavily for the time to come. An example I'm going to use is: A dual Giga NIC on the clients, and a quadruple + 2 Giga onboard NIC( 6 NIC in one bond0) on a new fileserver running glusterfs ;) Then you can use 2 switches, and split the NIC's in one half on each switch for redundancy and so on.... Regards, -- Einar Gautun einar.gautun@xxxxxxxxxxx Statens kartverk | Norwegian Mapping Authority 3507 Hønefoss | NO-3507 Hønefoss, Norway Ph +47 32118372 Fax +47 32118101 Mob +47 92692662