Oracle VM et le dummy bridge

Contrairement à ce que pourrait laisser penser le titre, il ne s’agit pas d’une belle histoire que je vais vous conter aujourd’hui mais la présentation et la mise en œuvre d’une possibilité intéressante d’Oracle VM : le rajout d’un pont factice ou dummy bridge en bon anglois.
Par défaut, Oracle VM crée un bridge rattaché à chaque carte réseau physique détectée sur le VM server. Ils sont dénommés xenbr0 rattaché à la carte eth0, xenbr1 rattaché à la carte eth1, … Il est possible ensuite d’attribuer ces bridges aux machines virtuelles par l’intermédiaire du menu de paramétrage réseau. Lors du démarrage de la machine virtuelle, une interface réseau virtuelle sera crée et rattaché au bridge.

Utilisation

Dans le cas d’un environnement de développement ou de test, il peut être intéressant de pouvoir disposer d’un bridge relié à aucune carte réseau, dans le cas par exemple où l’on utilise Oracle VM pour réaliser une architecture reliant plusieurs serveurs connectés par des réseaux différents. Un excellent exemple est l’installation d’un RAC Oracle Database virtualisé. Ce dernier demande notamment une interface réseau pour les échanges privés d’informations entre les deux nœuds du RAC.
Voici le schéma logique de notre maquette

Voici maintenant le schéma de réalisation de notre maquette avec Oracle VM

Réalisation

Nous allons nous appuyer sur Linux pour réaliser le bridge xenbr2. Il suffit de quatre lignes de commandes pour créer ce dummy bridge à exécuter sur le VM server :

# brctl addbr xenbr2
# brctl stp xenbr2 off
# brctl setfd xenbr2 0
# ip link set xenbr2 up

Maintenant nous pouvons visualiser les bridges existants sur notre serveur de VM :

# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.0019bbcb8896          no              eth0
xenbr2          8000.feffffffffff          no

Nous pouvons aussi le visualiser à travers l’interface d’Oracle VM en ajoutant ce dummy bridge à chacun de nos nœuds du RAC.

Automatisation du démarrage

Il nous reste à faire un script à mettre dans /etc/init.d qui lancera automatiquement la création du bridge au démarrage du server VM :

#!/bin/sh
#
# chkconfig: 345 90 89
# description: lance la creation d'un dummy bridge
#
case "$1" in
    start)
        brctl addbr xenbr2
        brctl stp xenbr2 off
        brctl setfd xenbr2 0
        ip link set xenbr2 up
        ;;
    stop)
        echo ""
        ;;
    status)
        echo -n "Checking for dummy bridge"
         brctl show
        ;;
    *)
        echo "Usage: $0 {start|status}"
        ;;
Esac

Il faut modifier les droits d’exécution du script :

chmod u+x dummy_bridge

Puis l’inscrire dans les scripts à lancer au démarrage avec chkconfig :

chkconfig --add dummy_bridge

Limites et perspectives

L’intérêt du dummy bridge se limite aux applications devant communiquer à travers un réseau situé sur un même server VM, donc pour les pools VM ne comportant qu’un seul serveur. Il peut être envisagé en mode haute disponibilité dans la mesure où les serveurs communiquant à travers le dummy bridge se trouvent sur le même VM server et seront déplacés automatiquement vers le même serveur du pool (comportant lui-même le dummy bridge) en cas de panne du serveur VM les hébergeant.