<div dir="ltr">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.   <br id="agvr">
<div id="pqnf"><br id="pqnf0"></div><div id="pqnf1">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
abstract this
is, I'll use the working package name of genet for the rest of the
discussion.</div><div id="dk6s1"><div id="fjkb0"><br id="fjkb1"></div><div id="x2.q2">From
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.  <br id="m8l2">
</div><div id="x2.q3"><br id="ojpz">
1. cluster administration is done from the command line<br id="r21_">
2. cluster administration can be performed from any node.</div><div id="x2.q4">3. a new node can join a cluster on a local subnet with one command.</div><div id="sasv">4. local storage resources are presented to the cluster so there is no need to have predefined NAS/SAN/iSCSI<br id="e.yk">

</div><div id="a2qy">5. cluster will load balance vm instances from node to node.<br id="chqq">
6. a node shouldn't need more than one nic but adding additional nic's provides failover and load balancing.<br id="chqq0">
</div><div id="w5d5"><br id="j:sa">
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. <br id="j:sa0">
<br id="w5d50"></div><div id="r5_f1">Use cases</div><div id="ydrc">1. looking for clusters on the same subnet via avahi<br id="h-x01">
</div><div id="r5_f2"># [yum|apt-get] install genet</div><div id="s4bg"># genet list clusters<br id="neym">

forsythia<br id="neym0">
hazelnut<br id="vmw4">
sumac<br id="neym1">
<br id="w-350">
# rhizome info sumac<br id="w-351">
Password:<br id="w-352">
sumac info:
<div id="e2m4">  8 nodes<br id="sy5e">
  64 Cores<br id="sy5e0">
  128 G Ram<br id="zki2">
  1.5 T storage<br id="neym2">
</div>
<div id="q.xe">  50% Cluster CPU utilized</div>
<div id="g7qh">  75% Memory utilized<br id="zki20">
  80% Storage utilized<br id="sy5e1">
</div>
<br id="w-353">
</div><div id="y6qn0">2. a machine joins an existing cluster</div><div id="e2m40"># genet join sumac</div><div id="yvoy">Password:</div><div id="yvoy0">localhost has successfully joined sumac</div><div id="y5yw">#</div><div id="r5_f3">
<br id="r5_f4"></div><div id="pxg02">Help output </div><div id="u2h68">#genet -h</div><div id="u2h69">usage: genet [options] command</div><div id="ixfb"><br id="ixfb0"></div><div id="ixfb1">genet is a simple command line interface for creating and maintaining a cluster of hypervisors.</div>
<div id="ahrz"><br id="ahrz0"></div><div id="ixfb2">Commands:</div><div id="hrpt0">   create cluster [cluster name]</div><div id="ia_40">   create vm [vm name] (probably integrates with virt-install)</div></div><div id="zay.">
   evacuate [hostname] - migrate all vm instances off of [hostname] (defaults to localhost)</div><div id="zay.0"><div id="zay.1" style="margin-top: 0px; margin-bottom: 0px;">   list clusters [hostname] - list clusters on local subnet or via hostname on another network/subnet<br id="ufg_">

</div><div id="jzte" style="margin-top: 0px; margin-bottom: 0px;">   list vm [cluster] - list all vm instances in a cluster defaults to cluster local node is in.<br id="lsd7">
   console [vmname] - virt-viewer to vmname<br id="lsd70">
   <br id="km6j">
<br id="km6j0">
<br id="e1rm">
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><br id="km6j1">
<br id="km6j2">
Regards, <br id="km6j5">
</div></div><br clear="all"><br>-- <br>Nathan Charles<br><br>
</div>