Over the the last few years I've setup and experimented with a large
number of vm technologies. Everything from x86 based stuff like
VMware, kvm, qemu, xen, to more exotic things like hercules, and z/VM.
So far the solution I've found to be the most baked is VMware ESX with
Virtual Center. It's pretty sweet to set up a DRS cluster and have
VM's load balance across available hardware. However, It's super
expensive and is in bed with windows way to much. i.e. Virtual Center
and the Virtual Infrastructure Client only run on windows don't have
LDAP auth and only use MSQL.
I've also been
working implementing a provisioning solution for our developers. We do
automated installation of hundreds of machines of which many are
underutilized. Many are newer machines with some pretty beefy specs (8
cores and at least 8 gigs of ram). I've done a lot of thinking in
a vacuum about what would be ideal. There's a lot out there I don't
know so I hope you give me some grace as I talk. So I want to be able
to pull these machines into a cluster of hypervisors; a VM fabric aggregated via software. Or thought of in another way a p2p vm cluster.
In some ways I think oVirt is the closest and in someways I think
simply extending libvirt would be better and sometimes I think it
should be a new project. So I thought I'd post this and see what
people think. Since I'm still unsure as to where the proper place to
is, I'll use the working package name of genet for the rest of the
my perspective the reason I can't use most of the open source
virtualization solutions for more than local vm's is one of
management. They're great for one machine but as soon as you get to
more than one machine there is a lot of human administrative overhead.
oVirt seems like it could be really good, but in an existing
environment it requires a lot of substantial changes and requires
significant modification to work with an existing provisioning
infrastructure. So as I imagined a silver bullet I used biology as a
metaphor and used started thinking with the idea of "every piece
contains the image of the whole." So the here's the 10,000 ft
overview of an idea.
1. cluster administration is done from the command line
2. cluster administration can be performed from any node.
3. a new node can join a cluster on a local subnet with one command.
4. local storage resources are presented to the cluster so there is no need to have predefined NAS/SAN/iSCSI
5. cluster will load balance vm instances from node to node.
6. a node shouldn't need more than one nic but adding additional nic's provides failover and load balancing.
I'm kind of ignoring storage at this point, but I think it's the
biggest pieces of the puzzle as long as migration needs network/san
storage. The ideal scenario would be something really simple like if I
have SAN connectivity use that else I use some sort of cluster file
system which adds in local storage and doesn't require reformating, but
that might be wistful thinking.
1. looking for clusters on the same subnet via avahi
# [yum|apt-get] install genet
# genet list clusters
# rhizome info sumac
128 G Ram
1.5 T storage
50% Cluster CPU utilized
75% Memory utilized
80% Storage utilized
2. a machine joins an existing cluster
# genet join sumac
localhost has successfully joined sumac
usage: genet [options] command
genet is a simple command line interface for creating and maintaining a cluster of hypervisors.
create cluster [cluster name]
create vm [vm name] (probably integrates with virt-install)
evacuate [hostname] - migrate all vm instances off of [hostname] (defaults to localhost)
list clusters [hostname] - list clusters on local subnet or via hostname on another network/subnet
list vm [cluster] - list all vm instances in a cluster defaults to cluster local node is in.
console [vmname] - virt-viewer to vmname
So this all begs the the statement, "show me the code" and I think that
perfectly valid. I may write some code, but I don't want to duplicate
effort and I want to find out what other people are thinking. I
welcome your thoughts. </soapbox>