Subversion Repositories havirt

Rev

Rev 35 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

# havirt

### Script to macro manage cluster of nodes (hypervisors) and the domains
(virtuals) on them.

Used as an extension to virsh, which it calls quite often, but with a
cluster of nodes (hypervisors) with shared block devices (tested with
iSCSI).

Also, includes code to verify there are enough resources on a node
for the requested action, and protection against running the same domain
on multiple nodes simultaneously, which an result in block device
corruption.

All nodes must be able to make an ssh connection to all other nodes using 
public key (no passwords).

Very similar to virsh (on purpose); just adds some protection against
running domains on multiple nodes, allowing monitoring, etc... Samples are:

    virsh start domainname # virsh way
    havirt domain start domainname nodename

These will both start domainname. The virsh command will start it on the
node you are currently logged into. The havirt command will first verify
domainname is not running on any node, verify the target node has enough
resources, then start it on nodename (or the current node, if nodename not 
specified) and modify it's state file to reflect the status change.

The other difference is that the virsh command uses the configuration
domainname.xml stored in /etc/virtlib/qemu, while havirt does a 'virsh
create' using the domainname.xml stored in installdir/conf. This allows
sharing of the same domain configuration on all nodes, at the expense of
some functionality.

By default, havirt will simply emit the command it will normally run. If the
flag --dryrun is defaulted to false (0) in the config file, will actually
run the command(s) unless it is turned back on by passing as a cli
parameter (see config.sample.yaml).

havirt creates two subdirectories, installdir/conf/ and installdir/var/ if
they don't exist.

   conf/ stores the xml configuration of all domains
   var/ stores the state file (yaml) and some temporary files.

havirt automatically creates a configuration file (config.yaml) in the executables
directory if it doesn't exist, allowing you to modify the default behavior
of the system.

Can be downloaded via subversion at
    http://svn.dailydata.net/svn/havirt/stable
Highly recommended you do not use trunk, as we modify that on a regular
basis and check in broken code sometimes