[Linux-HA] Bonding for High Availability

Diego Julian Remolina diego.remolina at ibb.gatech.edu
Tue May 15 08:10:19 MDT 2007


Hi Jan,

In some instances, I found that a reboot will help clear certain issues I had with the bonding and 
VLANing. Have you rebooted the machines since the bonding changes were applied?. In my interfaces, 
all of them show the *SLAVE* entry when I run ifconfig, it seems that eth0 is not enslaved in your 
machine.

Did you check that eth0 has the correct settings for its configuration?

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no

Specifically MASTER=bond0 SLAVE=yes and USERCTL=no.

Diego


Jan Kalcic wrote:
>> [...]
>> For the haresources or cib.xml file you must use the IPaddr2 script
>> for the virtual IPs as shown here (It is of importance to define the
>> different VLANs on top of the bonded interface in my case):
>>
>> [root at sauron network-scripts]# cat /etc/ha.d/haresources
>> node1_fqdn IPaddr2::X.Y.131.20/24/bond0.431:0 
>> IPaddr2::X.Y.132.20/24/bond0.432:0 IPaddr2::X.Y.133.20/24/bond0.433:0
>> drbddisk::export
>> Filesystem::/dev/drbd0::/export::ext3::rw,usrquota,grpquota,acl,user_xattr
>> saslauthd cyrus-imapd clamd mimedefang sendmail
>> node2_fqdn IPaddr2::X.Y.131.19/24/bond0.431:0
>> IPaddr2::X.Y.132.19/24/bond0.432:1 IPaddr2::X.Y.145.133/24/bond0.433:2
>> drbddisk::web
>> Filesystem::/dev/drbd1::/web::ext3::rw,usrquota,grpquota,acl,user_xattr
>> mysqld httpd
>>
>> If you have only bonding and use one virtual IP, then the IPaddr
>> script should be enough, since you will only end up having bond0 and
>> bond0:0 as your virtual interface. The need of the IPaddr2 script
>> arises when you need to determine the name of the virtual interfaces
>> so that heartbeat stops and starts the correct virtual IPs correctly.
>>
>> You must also check your kernel and the bonding modes available for
>> your network cards. Some bonding modes require special switch
>> configurations. Some modes give you better throughput and other modes
>> are oriented towards availability. Check the readme files for the
>> bonding module in your kernel documentation.
>>
>> HTH,
>>
>> Diego
>>
> Thanks Diego, this is helpful for sure. I'm currently running it on SLES
> so the network configuration files are different but your explanation is
> very clear to make me follow you.
> 
> I got it running but there's maybe something I'm missing with bonding
> configuration. It seems the eth0 is not enslaved in fact if I switch it
> off I can still ping the bond ip address whereas if I switch the eth2
> (eth1 is not configured here for bonding) the ip address is lost.
> 
> # ifconfig
> bond0     Link encap:Ethernet  HWaddr 00:0C:29:22:A8:1C
>           inet addr:192.168.1.91  Bcast:192.168.1.255  Mask:255.255.255.0
>           inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
>           UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
>           RX packets:2649 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:2420 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:0
>           RX bytes:215510 (210.4 Kb)  TX bytes:199040 (194.3 Kb)
> 
> bond0:0   Link encap:Ethernet  HWaddr 00:0C:29:22:A8:1C
>           inet addr:192.168.1.93  Bcast:192.168.1.255  Mask:255.255.255.0
>           UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
> 
> eth0      Link encap:Ethernet  HWaddr 00:0C:29:22:A8:08
>           inet6 addr: fe80::20c:29ff:fe22:a808/64 Scope:Link
>           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>           RX packets:3063 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:2188 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:1000
>           RX bytes:388206 (379.1 Kb)  TX bytes:626594 (611.9 Kb)
>           Interrupt:185 Base address:0x1400
> 
> eth1      Link encap:Ethernet  HWaddr 00:0C:29:22:A8:12
>           inet addr:10.200.200.91  Bcast:10.200.200.255  Mask:255.255.255.0
>           inet6 addr: fe80::20c:29ff:fe22:a812/64 Scope:Link
>           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>           RX packets:2836 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:2045 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:1000
>           RX bytes:576990 (563.4 Kb)  TX bytes:388993 (379.8 Kb)
>           Interrupt:177 Base address:0x1480
> 
> eth2      Link encap:Ethernet  HWaddr 00:0C:29:22:A8:1C
>           inet6 addr: fe80::20c:29ff:fe22:a81c/64 Scope:Link
>           UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
>           RX packets:2649 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:2420 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:1000
>           RX bytes:215510 (210.4 Kb)  TX bytes:199040 (194.3 Kb)
>           Interrupt:193 Base address:0x1800
> 
> lo        Link encap:Local Loopback
>           inet addr:127.0.0.1  Mask:255.0.0.0
>           inet6 addr: ::1/128 Scope:Host
>           UP LOOPBACK RUNNING  MTU:16436  Metric:1
>           RX packets:130 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:130 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:0
>           RX bytes:15984 (15.6 Kb)  TX bytes:15984 (15.6 Kb)
> 
> # cat /proc/net/bonding/bond0
> Ethernet Channel Bonding Driver: v3.0.1 (January 9, 2006)
> 
> Bonding Mode: fault-tolerance (active-backup)
> Primary Slave: None
> Currently Active Slave: eth2
> MII Status: up
> MII Polling Interval (ms): 100
> Up Delay (ms): 0
> Down Delay (ms): 0
> 
> Slave Interface: eth2
> MII Status: up
> Link Failure Count: 0
> Permanent HW addr: 00:0c:29:22:a8:1c
> 
> # cat /etc/sysconfig/network/ifcfg-bond0
> BOOTPROTO='static'
> BROADCAST='192.168.1.255'
> ETHTOOL_OPTIONS=''
> IPADDR='192.168.1.91'
> MTU=''
> NAME='AMD PCnet - Fast 79C971'
> NETMASK='255.255.255.0'
> NETWORK='192.168.1.0'
> REMOTE_IPADDR=''
> STARTMODE='onboot'
> UNIQUE='rBUF.weGuQ9ywYPF'
> USERCONTROL='no'
> _nm_name='bus-pci-0000:00:11.0'
> PREFIXLEN=''
> BONDING_MASTER='yes'
> BONDING_MODULE_OPTS='miimon=100 mode=1'
> BONDING_SLAVE0='eth0'
> BONDING_SLAVE0='eth2'
> 
> 
> In the documentation available and I read there are two bonding modes
> available for multiple switch topology: network. mode=1 (active-backup)
> and mode=3 (broadcast). Mode=1 seems to be the correct one for my
> scenario but either I'm missing something or in this configuration I
> need three network interfaces to enslave two of them for bonding.
> 
> Jan


More information about the Linux-HA mailing list