Table of Contents

[HOWTO] Linux KVM cluster

Description

Instructions on how to deploy a high availability KVM cluster based on CentOS 6.x

Instructions

RHEL cluster

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum -y install vim tmux lsof strace
yum update
yum groupinstall "High Availability" "Resilient Storage"
yum groupinstall "High Availability Management"
passwd ricci
chkconfig ricci on
chkconfig luci on
chkconfig cman on
chkconfig modclusterd on
service ricci start
service cman start
service luci start

If luci refuses to start, read the troubleshoot section.

chkconfig NetworkManager off && service NetworkManager stop
DEVICE=eth[01]
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
DEVICE=eth[23]
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE=br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
USERCTL=no
NETWORK=10.54.0.0
IPADDR=10.54.0.20
NETMASK=255.255.255.0
BROADCAST=10.52.0.255
GATEWAY=10.54.0.1
iptables -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT
Or disable iptables (if you have a good firewall):
service iptables stop
chkconfig iptables off
inet.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.conf
parted /dev/mapper/SHAREDDISK
(parted) mklabel gpt
(parted) mkpart primary ext2 0 9999999G
(parted) set 1 lvm on
(parted) quit
pvcreate /dev/mapper/SHAREDDISKp1
vgcreate --clustered y SHAREDVG /dev/mapper/SHAREDDISKp1
partprobe; vgscan
lv create -L 9999999G -n SHARED_LV SHAREDVG
 mkfs.gfs2 -p lock_dlm -t CLUSTERNAME:SHAREDVOLUME -j 4 /dev/mapper/SHAREDVG-SHARED_LV
# GFS
/dev/mapper/SHAREDVG-SHARED_LV            /mnt/shared_storage         gfs2    noatime         0 0
# GFS

KVM

 yum groupinstall "Virtualization Platform" "Virtualization Tools" Virtualization "Virtualization Client"
yum install dejavu-lgc-sans-fonts
 

Troubleshoot

Luci

If you get an error like this:

Unable to create the luci base configuration file (`/var/lib/luci/etc/luci.ini').

You can try to:

rpm -e --nodeps python-webob-0.9.6.1-3.el6.noarch
easy_install WebOb==1.0.8

This should be enough, but if you're still having problems running luci, follow with that instructions: Edit that file:

vi /usr/lib/python2.6/site-packages/pylons/decorators/__init__.py

And comment/remove the line (line ~20):

from webob import UnicodeMultiDict

That is.

thanks to dmabry and Michael Pedersen combining their post I were able to run Luci.