WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-fr

Re: [Xen-fr] Bonding


voici mon script de gestion du bonding. Je précise que mon Dom0 possede 2 interfaces réseau :
- un bonding
- une eth qui sert de heartbeat

Je cré donc 2 bridge :
- brnet : pour le réseau local
- brcluster : pour le réseau heartbeat

Il est ensuite important de paramétrer ses DomU avec brnet et brcluster. par ex :
vif  = [ 'mac=00:16:3E:20:C8:20 , bridge=brnet' , 'mac=00:16:3E:20:C8:22 , bridge=brcluster'  ]

----------- début du script bond-network-bridge --------------------

#!/bin/sh

# Usage: transfer_addrs src dst
# Copy all IP addresses (including aliases) from device $src to device $dst.
transfer_addrs () {
    local src="">    local dst=$2
    # Don't bother if $dst already has IP addresses.
    if ip addr show dev ${dst} | egrep -q '^ *inet ' ; then
        return
    fi
    # Address lines start with 'inet' and have the device in them.
    # Replace 'inet' with 'ip addr add' and change the device name $src
    # to 'dev $src'.
    ip addr show dev ${src} | egrep '^ *inet ' | sed -e "
s/inet/ip addr add/
s@\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/[0-9]\+\)@\1@
s/${src}/dev ${dst}/
" | sh -e
    # Remove automatic routes on destination device
    ip route list | sed -ne "
/dev ${dst}\( \|$\)/ {
  s/^/ip route del /
  p
}" | sh -e
}

# Usage: transfer_routes src dst
# Get all IP routes to device $src, delete them, and
# add the same routes to device $dst.
# The original routes have to be deleted, otherwise adding them
# for $dst fails (duplicate routes).
transfer_routes () {
    local src="">    local dst=$2
    # List all routes and grep the ones with $src in.
    # Stick 'ip route del' on the front to delete.
    # Change $src to $dst and use 'ip route add' to add.
    ip route list | sed -ne "
/dev ${src}\( \|$\)/ {
  h
  s/^/ip route del /
  P
  g
  s/${src}/${dst}/
  s/^/ip route add /
  P
  d
}" | sh -e
}



# Usage: create_bridge bridge
create_bridge () {
    local bridge=$1

    # Don't create the bridge if it already exists.
    if ! brctl show | grep -q ${bridge} ; then
        brctl addbr ${bridge}
        brctl stp ${bridge} off
        brctl setfd ${bridge} 0
    fi
    ip link set ${bridge} up
}

# Usage: add_to_bridge bridge dev
add_to_bridge () {
    local bridge=$1
    local dev=$2
    # Don't add $dev to $bridge if it's already on a bridge.
    if ! brctl show | grep -q ${dev} ; then
        brctl addif ${bridge} ${dev}
    fi
}

# Usage: show_status dev bridge
# Print ifconfig and routes.
show_status () {
    local dev=$1
    local bridge=$2

    echo '============================================================'
    ip addr show ${dev}
    ip addr show ${bridge}
    echo ' '
    brctl show ${bridge}
    echo ' '
    ip route list
    echo ' '
    route -n
    echo '============================================================'
}

op_start () {
    create_bridge brnet
    add_to_bridge brnet vif0.0
    add_to_bridge2 brnet bond0

    transfer_addrs bond0 brnet
    transfer_routes bond0 brnet

    create_bridge brcluster
    add_to_bridge brcluster vif1.0
    add_to_bridge2 brcluster eth2

    transfer_addrs eth2 brcluster
    transfer_routes eth2 brcluster
}

op_stop () {
    transfer_routes brnet bond0
    ip link set brnet down
    brctl delbr brnet

    transfer_routes brcluster eth2
    ip link set brcluster down
    brctl delbr brcluster
}

# adds $dev to $bridge but waits for $dev to be in running state first
add_to_bridge2() {
    local bridge=$1
    local dev=$2
    local maxtries=10

    echo -n "Waiting for ${dev} to negotiate link."
    for i in `seq ${maxtries}` ; do
        if ifconfig ${dev} | grep -q RUNNING ; then
            break
        else
            echo -n '.'
            sleep 1
        fi
    done

    if [ ${i} -eq ${maxtries} ] ; then echo '(link isnt in running state)' ; fi

    add_to_bridge ${bridge} ${dev}
}

case "${1}" in
    start)
        op_start
        ;;

    stop)
        op_stop
        ;;

    status)
        show_status ${netdev} ${bridge}
        ;;

    *)
        echo "Unknown command: ${1}" >&2
        echo 'Valid commands are: start, stop, status' >&2
        exit 1
esac
----------- fin du script bond-network-bridge --------------------

J'espere que cela vous aidera.

Cordialement,
Matthieu CHAUVEAU
---
Responsable exploitation système
Carte Blanche Conseil
---



From: trailx@xxxxxxx
To: xen-fr@xxxxxxxxxxxxxxxxxxx
Sent: Mon, 04 Aug 2008 10:01:33 +0200
Subject: Re: [Xen-fr] Bonding

Bonjour,

Merci pour le script. Je l'ai essayé, malheureusement je n'ai toujours pas de
réseau sur mes VM...

#brctl show
virbr0 8000.000000000000 yes
xenbr0 8000.00151777e4a0 no vif4.0
bond0

Je trouve étrange de ne pas avoir de vif 0.0 associé à mon xenbr0 ??
Faut-il activer une quelconque fonction de forwading ?? (ip_forwading)
Les firewalls sont désactivés.
Mon interface xenbr0 est associée à mes Dom-U (ici le Dom-U id 4), les @ mac
sont correctes.

Pourriez-vous me faire passer vos fichiers de conf (ceux qui ont été modifiés) ?
car je ne vois vraiment pas où est mon problème...

Merci d'avance.


Selon Matthieu Chauveau <xen@xxxxxxxxxxxxx>:

> Bonjour,
>
> j'ai eu a traiter la même problématique il y a peu. Par contre, mon infra est
> à base de Debian 4.0 et Xen 3.0.3-1.
> J'ai été obligé d'utiliser un script différent que ceux fournis en standard
> dans les packages Debian et modifier l'appel au script dans le fichier de
> conf xend-config.sxp :
> (network-script bond-network-bridge) au lieu de (network-script
> 'network-bridge')
> le script bond-network-bridge, je ne l'ai pas inventé moi même mais je l'ai
> trouvé ici :
> http://lists.xensource.com/archives/html/xen-users/2006-04/msg00186.html
> depuis ma plateforme fonctionne très bien.
>
> Cdt,
> Matthieu CHAUVEAU
> ---
> Responsable exploitation système
> Carte Blanche Conseil
> ---
> _____
>
> From: trailx@xxxxxxx
> To: xen-fr@xxxxxxxxxxxxxxxxxxx [mailto:xen-fr@xxxxxxxxxxxxxxxxxxx]
> Sent: Tue, 29 Jul 2008 16:14:10 +0200
> Subject: [Xen-fr] Bonding
>
> Bonjour,
>
> J'utilise une centOS avec Xen 3.0.3 et je n'arrive pas à faire fonctionner
> le
> channel bonding...
>
> J'ai procédé ainsi :
>
> 1) /etc/modprobe.conf
> Code :
>
> 1. alias bond0 bonding
> 2. options bond0 mode=802.3ad miimon=100 use_carrier=0 lacp_rate=fast
> max_bonds=2
>
>
>
> 2) Configuration des interfaces :
> /etc/sysconfig/network-script/ifcfg-bond0
> Code :
>
> 1. DEVICE=bond0
> 2. IPADDR=192.168.0.10
> 3. NETMASK=255.255.255.0
> 4. NETWORK=192.168.0.0
> 5. BROADCAST=192.168.0.255
> 6. > > 7. BOOTPROTO=none
> 8. GATEWAY=192.168.0.254
> 9. TYPE=Ethernet
> 10. BONDING_OPTS="mode=1 miimon=100"
>
>
>
> /etc/sysconfig/network-script/ifcfg-eth0 et de même pour eth1
> Code :
>
> 1. DEVICE=eth0
> 2. HWADDR=00:15:17:6C:48:10
> 3. > > 4. USERCTL=no
> 5. BOOTPROTO=none
> 6. MASTER=bond0
> 7. SLAVE=YES
>
>
>
>
> 3) Création d'un script pour lancer mes bridges automatiquement
> /etc/xen/scripts/network-bridge-bond
> Code :
>
> 1. #! /bin/sh
> 2. /etc/xen/scripts/network-bridge start vifnum=0 bridge=xenbr0
> 3. /etc/xen/scripts/network-bridge start vifnum=1 bridge=xenbr1
>
>
>
>
> 4) Modifications de xend-config.sxp pour prendre en compte mon script
>
> Je précise que sans Bonding tout marche très bien ...
> J'ai également essayé la commande brctl addif mais il refuse d'ajouter un
> device
> type bond à un xenbridge :(
>
> Merci d'avance pour toutes aides
>
> PS: A priori certaines personnes ont reussi en utilisant dans le fichier de
> conf
> des VM :
> vif = [ mac=xxxxxxxxxxxx, bridge=br0 ]
>
> Je n'ai pas d'environnement pour le moment pour confirmer cette thèse
>
>
>
> _______________________________________________
> Xen-fr mailing list
> Xen-fr@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-fr
>



_______________________________________________
Xen-fr mailing list
Xen-fr@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-fr
_______________________________________________
Xen-fr mailing list
Xen-fr@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-fr
<Prev in Thread] Current Thread [Next in Thread>