Derwynd's Weblog

Derwynd's Weblog

What is bonding?

What is bonding?
The Linux bonding driver provides a method for aggregating multiple network interfaces into a single logical “bonded” interface.
The behavior of the bonded interfaces depends upon the mode; generally speaking, modes provide either hot standby or load balancing services.
Additionally, link integrity monitoring may be performed.

ie you can aggregate three megabits ports (1 mb each) into a three-megabits trunk port.
That is equivalent with having one interface with three megabits speed.

This small howto will try to cover the most used bonding types.
The following script will configure a bond interface (bond0) using two ethernet interface (eth0 and eth1).

————————————————————-
#!/bin/bash
set -x
# 1: Create a bond0 configuration file
touch /etc/sysconfig/network-scripts/ifcfg-bond0
echo “DEVICE=bond0
IPADDR=192.168.x.x
NETWORK=192.168.0.0
NETMASK=255.255.255.0
USERCTL=no
BOOTPROTO=static
ONBOOT=yes” > /etc/sysconfig/network-scripts/ifcfg-bond0

# 2: Modify eth0 and eth1 config files:
echo “USERCTL=no
MASTER=bond0
SLAVE=yes” >> /etc/sysconfig/network-scripts/ifcfg-eth0
echo “USERCTL=no
MASTER=bond0
SLAVE=yes” >> /etc/sysconfig/network-scripts/ifcfg-eth1
sed -i ‘s/ONBOOT=.*/ONBOOT=yes/g’ /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i ‘s/ONBOOT=.*/ONBOOT=yes/g’ /etc/sysconfig/network-scripts/ifcfg-eth1
sed -i ‘s/BOOTPROTO=.*/BOOTPROTO=static/g’ /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i ‘s/BOOTPROTO=.*/BOOTPROTO=static/g’ /etc/sysconfig/network-scripts/ifcfg-eth1

# 3: Load bond driver/module
echo “alias bond0 bonding
options bond0 mode=1 miimon=100″ >> /etc/modprobe.conf

# 4: Test configuration
modprobe bonding
service network restart
sleep 2
cat /proc/net/bonding/bond0
echo ” ifconfig for bonding”
/sbin/ifconfig | grep bond

————————————————————-

You can set up your bond interface mode according to your needs. Changing one parameter (mode=X) in /etc/modeprobe.conf you can have the following bonding types:

* mode=0 (balance-rr or 0)
Round-robin policy: Transmit packets in sequential order from the first available slave through the last. This mode provides load balancing and fault tolerance.

* mode=1 (active-backup or 1)
Active-backup policy: Only one slave in the bond is active. A different slave becomes active if, and only if, the active slave fails. The bond’s MAC address is externally visible on only one port (network adapter) to avoid confusing the switch. This mode provides fault tolerance. The primary option affects the behavior of this mode.

* mode=2 (balance-xor or 2)
XOR policy: Transmit based on [(source MAC address XOR’d with destination MAC address) modulo slave count]. This selects the same slave for each destination MAC address. This mode provides load balancing and fault tolerance.

* mode=3 (broadcast or 3)
Broadcast policy: transmits everything on all slave interfaces. This mode provides fault tolerance.

* mode=4 (802.3ad or 4)
IEEE 802.3ad Dynamic link aggregation. Creates aggregation groups that share the same speed and duplex settings. Utilizes all slaves in the active aggregator according to the 802.3ad specification.

Pre-requisites:
1. Ethtool support in the base drivers for retrieving
the speed and duplex of each slave.
2. A switch that supports IEEE 802.3ad Dynamic link
aggregation.
Most switches will require some type of configuration
to enable 802.3ad mode.

* mode=5 (balance-tlb or 5)
Adaptive transmit load balancing: channel bonding that does not require any special switch support. The outgoing traffic is distributed according to the current load (computed relative to the speed) on each slave. Incoming traffic is received by the current slave. If the receiving slave fails, another slave takes over the MAC address of the failed receiving slave.

Prerequisite:
Ethtool support in the base drivers for retrieving the
speed of each slave.

* mode=6 (balance-alb or 6)
Adaptive load balancing: includes balance-tlb plus receive load balancing (rlb) for IPV4 traffic, and does not require any special switch support. The receive load balancing is achieved by ARP negotiation. The bonding driver intercepts the ARP Replies sent by the local system on their way out and overwrites the source hardware address with the unique hardware address of one of the slaves in the bond such that different peers use different hardware addresses for the server.

The contents of the ifcfg-bondX file is as follows:

BOOTPROTO=”static”
BROADCAST=”10.0.2.255″
IPADDR=”10.0.2.10″
NETMASK=”255.255.0.0″
NETWORK=”10.0.2.0″
REMOTE_IPADDR=””
STARTMODE=”onboot”
BONDING_MASTER=”yes”
BONDING_MODULE_OPTS=”mode=active-backup miimon=100″
BONDING_SLAVE0=”eth0″
BONDING_SLAVE1=”bus-pci-0000:06:08.1″

Replace the sample BROADCAST, IPADDR, NETMASK and NETWORK values with the appropriate values for your network.

Notes:
* For later versions of initscripts, such as that found with Fedora 7 and Red Hat Enterprise Linux version 5 (or later), it is possible, and, indeed, preferable, to specify the bonding options in the ifcfg-bond0 file, e.g. a line of the format:

BONDING_OPTS=”mode=active-backup arp_interval=60 arp_ip_target=+192.168.1.254″

* To restore your slaves MAC addresses, you need to detach them from the bond (`ifenslave -d bond0 eth0′). The bonding driver will then restore the MAC addresses that the slaves had before they were enslaved.
* The bond MAC address will be the taken from its first slave device.
* Promiscous mode: According to your bond type, when you put the bond interface in the promiscous mode it will propogates the setting to the slave devices as follow:
o for mode=0,2,3 and 4 the promiscuous mode setting is propogated to all slaves.
o for mode=1,5 and 6 the promiscuous mode setting is propogated only to the active slave.
For balance-tlb mode the active slave is the slave currently receiving inbound traffic, for balance-alb mode the active slave is the slave used as a “primary.” and for the active-backup, balance-tlb and balance-alb modes, when the active slave changes (e.g., due to a link failure), the promiscuous setting will be propogated to the new active slave.

January 6, 2010 Posted by | Uncategorized | Leave a comment

Xen rescue paravirtualization

===Rescue===

Shut down the GuestOS safely by logging into the GuestOS and issuing the command poweroff or

$ xm shutdown alfa

Copy or download the ”’initrd.img”’ and ”’vmlinuz”’ files from /images/xen/ directory of Red Hat Enterprise Linux install media tree to Red Hat Enterprise Linux Virtualization Host. In this test case these files are copied to the directory ”’/var/lib/xen/images/tmp/”’ of the Virtualization host.

Modify the GuestOS configuration file on the Virtualization Host itself to enable boot it from rescue environment. In this test case the GuesOS in question is called alfa and its configuration file is /etc/xen/alfa

1. copy the config file ”’/etc/xen/alfa”’ to ”’/etc/xen/alfa_rescue”’

2. In the config file ”’/etc/xen/alfa_rescue”’, comment the bootloader line:

#bootloader="/usr/bin/pygrub"

3. Append the following to the configuration before the ”’disk =”’ line file temporarily and save it.

kernel = "/var/lib/xen/images/tmp/vmlinuz"
ramdisk = "/var/lib/xen/images/tmp/initrd.img"
extra = "rescue"

4. Sample

name = "alfa"
uuid = "96b6da3e-70a7-a0a0-7c68-67a0f83d8264"
maxmem = 512
memory = 512
vcpus = 1
#bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [  ]
kernel = "/var/lib/xen/images/tmp/vmlinuz"
ramdisk = "/var/lib/xen/images/tmp/initrd.img"
extra = "rescue"
disk = [ "tap:aio:/var/lib/xen/images/alfa.img,xvda,w" ]
vif = [ "mac=00:16:3e:13:62:2f,bridge=xenbr0" ]

5. Re-create (start) the GuestOS with xm command

 
 xm create -c alfa_rescue

6.

                   +---------+ Choose a Language +---------+
                   |                                       |
                   | What language would you like to use   |
                   | during the installation process?      |
                   |                                       |
                   |       Catalan                ^        |
                   |       Chinese(Simplified)    :        |
                   |       Chinese(Traditional)   #        |
                   |       Croatian               :        |
                   |       Czech                  :        |
                   |       Danish                 :        |
                   |       Dutch                  :        |
                   |       English                v        |
                   |                                       |
                   |                +----+                 |
                   |                | OK |                 |
                   |                +----+                 |
                   |                                       |
                   |                                       |
                   +---------------------------------------+

7. Chose HTTP

               +---------------+ Rescue Method +----------------+
               |                                                |
               | What type of media contains the rescue image?  |
               |                                                |
               |                  Local CDROM                   |
               |                  Hard drive                    |
               |                  NFS image                     |
               |                  FTP                           |
               |                  HTTP                          |
               |                                                |
               |        +----+                 +------+         |
               |        | OK |                 | Back |         |
               |        +----+                 +------+         |
               |                                                |
               |                                                |
               +------------------------------------------------+

8. Set IP

             +----------------+ Configure TCP/IP +----------------+
             |                                                    |
             | [*] Enable IPv4 support                            |
             |        ( ) Dynamic IP configuration (DHCP)         |
             |        (*) Manual configuration                    |
             |                                                    |
             | [ ] Enable IPv6 support                            |
             |        (*) Automatic neighbor discovery (RFC 2461) |
             |        ( ) Dynamic IP configuration (DHCP)         |
             |        ( ) Manual configuration                    |
             |                                                    |
             |          +----+                  +------+          |
             |          | OK |                  | Back |          |
             |          +----+                  +------+          |
             |                                                    |
             |                                                    |
             +----------------------------------------------------+

         +--------------+ Manual TCP/IP Configuration +---------------+
         |                                                            |
         | Enter the IPv4 and/or the IPv6 address and prefix          |
         | (address / prefix).  For IPv4, the dotted-quad netmask     |
         | or the CIDR-style prefix are acceptable. The gateway and   |
         | name server fields must be valid IPv4 or IPv6 addresses.   |
         |                                                            |
         | IPv4 address: 192.168.y.yy__ / 255.255.255.0_____          |
         | Gateway:      192.168.z.zz____________________________    |
         | Name Server:  192.168.z.zz____________________________    |
         |                                                            |
         |            +----+                      +------+            |
         |            | OK |                      | Back |            |
         |            +----+                      +------+            |
         |                                                            |
         |                                                            |
         +------------------------------------------------------------+

9. Http setting

    +---------------------------+ HTTP Setup +----------------------------+
    |                                                                     |
    |           Please enter the following information:                   |
    |                                                                     |
    |               o the name or IP number of your Web server            |
    |               o the directory on that server containing             |
    |                 Red Hat Enterprise Linux Server for                 |
    |           your architecture                                         |
    |                                                                     |
    | Web site name:                             192.168.x.x___________ |
    | Red Hat Enterprise Linux Server directory: rhelxxx_________________ |
    |                                                                     |
    |              +----+                           +------+              |
    |              | OK |                           | Back |              |
    |              +----+                           +------+              |
    |                                                                     |
    |                                                                     |
    +---------------------------------------------------------------------+

10. Rescue

            +---------------------+ Rescue +----------------------+
            |                                                     |
            | The rescue environment will now attempt to find   ^ |
            | your Linux installation and mount it under the    # |
            | directory /mnt/sysimage.  You can then make any   : |
            | changes required to your system.  If you want     : |
            | to proceed with this step choose 'Continue'.      : |
            | You can also choose to mount your file systems    : |
            | read-only instead of read-write by choosing       : |
            | 'Read-Only'.                                      : |
            |                                                   : |
            | If for some reason this process fails you can     : |
            | choose 'Skip' and this step will be skipped and   : |
            | you will go directly to a command shell.          v |
            |                                                     |
            |   +----------+      +-----------+      +------+     |
            |   | Continue |      | Read-Only |      | Skip |     |
            |   +----------+      +-----------+      +------+     |
            |                                                     |
            |                                                     |
            +-----------------------------------------------------+
                  +---------------+ Rescue +----------------+
                  |                                         |
                  | Your system has been mounted under      |
                  | /mnt/sysimage.                          |
                  |                                         |
                  | Press  to get a shell. If you   |
                  | would like to make your system the      |
                  | root environment, run the command:      |
                  |                                         |
                  |         chroot /mnt/sysimage            |
                  |                                         |
                  | The system will reboot automatically    |
                  | when you exit from the shell.           |
                  |                                         |
                  |                 +----+                  |
                  |                 | OK |                  |
                  |                 +----+                  |
                  |                                         |
                  |                                         |
                  +-----------------------------------------+
Your system is mounted under the /mnt/sysimage directory.
When finished please exit from the shell and your system will reboot.

sh-3.2#

January 6, 2010 Posted by | Uncategorized | Leave a comment