|
|
|
|
|
|
|
|
|
|
xen-fr
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
|
|
|
|
|