If you have an additional mezzanine card installed with your Compute Module and have a secondary Switch Module installed with your Intel Modular Server, you can set up network redundancy with nic bonding in Xenserver. Initially eth0 and eth1 are assigned to the main nic while eth2 and eth3 are available when you have the secondary mezzanine card installed in your Compute Module. Bonding for redundancy only makes sense if you bond interfaces from different nic-s. I would suggest bonding eth0 with eth2 and eth1 with eth3. You can set up bonds in XenCenter.
In bonding mode the system sets one of the bond slaves as active. Since both slaves appearantly have an active connection to either of the switches the system picks the active slave randomly. It only checks if the connection to the switch is active and not further. Since I currently have an active internet connected to only one of the switches, a startup script is needed to manually set active slave to the switch which is connected to the internet. In the future this script could actually be developed to set an active slave by checking the connection on each bond slave. Currently this is manual.
The startup script:
# cat /etc/init.d/ovs-set-active-slave
#! /bin/bash # # ovs-set-active-slave Set bond active slaves to eth0 on bond0 and eth1 on bond1 # # chkconfig: 2345 14 90 # description: Set bond active slaves to eth0 on bond0 and eth1 on bond1 # # ### BEGIN INIT INFO # Provides: $ovs-set-active-slave ### END INIT INFO start() { /usr/bin/ovs-appctl bond/set-active-slave bond0 eth0 /usr/bin/ovs-appctl bond/set-active-slave bond1 eth1 } status() { : } stop() { : } restart() { stop start } case "$1" in start) start ;; stop) stop ;; status) status ;; restart) restart ;; *) echo "Unknown action '$1'." ;; esac
Activate script to run on server startup:
# chkconfig ovs-set-active-slave on
After reboot you should have eth0 as active slave on bond0 and eth2 as active slave on bond1:
# ovs-appctl bond/show bond0
bond_mode: active-backup lacp: off bond-detect-mode: carrier updelay: 31000 ms downdelay: 200 ms slave eth2: enabled slave eth0: enabled active slave
# ovs-appctl bond/show bond1
bond_mode: active-backup lacp: off bond-detect-mode: carrier updelay: 31000 ms downdelay: 200 ms slave eth1: enabled active slave slave eth3: enabled
Note: When the main switch fails you have to log in through Intel Modular Server KVM and set active slaves to the secondary switch manually.
Note2: If you do a Switch 1 reset from the Management Module then Xenserver will automatically change active slaves to the Switch 2. If you still want to use Switch 1 after the reset then you have to set active slaves back to Switch 1 manually.
Why not using active-active bond? Just one thing I noticed on the Intel Modular Server since a recent firmware upgrade, a 10GbE interconnect is available (at least on the MFSYS25 v2), just make sure to turn it on in the advanced switch configuration. If using MFSYS25 or MFSYS35, create a lag of 2 ports or more between those two switches.
Martin
In my case I only have one wire coming in. If one of the switches fail the interconnect also fails.