[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