<itemizedlist>
<listitem>
<simpara>Installation of the base system and base
- components</simpara>
+ components</simpara>
</listitem>
<listitem>
<simpara>Configuration of the environment for
- Ganeti</simpara>
+ Ganeti</simpara>
</listitem>
</itemizedlist>
- Each of these is divided into sub-sections. While a full Ganeti
- system will need all of the steps specified, some are not strictly
- required for every environment. Which ones they are, and why, is
- specified in the corresponding sections.
+ Each of these is divided into sub-sections. While a full Ganeti system
+ will need all of the steps specified, some are not strictly required for
+ every environment. Which ones they are, and why, is specified in the
+ corresponding sections.
</para>
</sect1>
<title>Hardware requirements</title>
<para>
- Any system supported by your Linux distribution is fine.
- 64-bit systems are better as they can support more memory.
+ Any system supported by your Linux distribution is fine. 64-bit
+ systems are better as they can support more memory.
</para>
<para>
- Any disk drive recognized by Linux
- (<literal>IDE</literal>/<literal>SCSI</literal>/<literal>SATA</literal>/etc.)
- is supported in Ganeti. Note that no shared storage
- (e.g. <literal>SAN</literal>) is needed to get high-availability features. It is
- highly recommended to use more than one disk drive to improve
- speed. But Ganeti also works with one disk per machine.
+ Any disk drive recognized by Linux
+ (<literal>IDE</literal>/<literal>SCSI</literal>/<literal>SATA</literal>/etc.)
+ is supported in Ganeti. Note that no shared storage (e.g.
+ <literal>SAN</literal>) is needed to get high-availability features. It
+ is highly recommended to use more than one disk drive to improve speed.
+ But Ganeti also works with one disk per machine.
</para>
<sect2>
kernel parameter <literal>nosmp</literal>.
</para>
+ <para>
+ It is recommended that you disable xen's automatic save of virtual
+ machines at system shutdown and subsequent restore of them at reboot.
+ To obtain this make sure the variable
+ <literal>XENDOMAINS_SAVE</literal> in the file
+ <literal>/etc/default/xendomains</literal> is set to an empty value.
+ </para>
+
<formalpara>
<title>Debian</title>
<para>
</screen>
</para>
</formalpara>
+ <para>
+ If you want to test the HVM support
+ with Ganeti and want VNC access to the console of your
+ instances, set the following two entries in
+ <filename>/etc/xen/xend-config.sxp</filename>:
+<screen>
+(vnc-listen '0.0.0.0')
+(vncpasswd '')
+</screen>
+ You need to restart the Xen daemon for these settings to
+ take effect:
+<screen>
+/etc/init.d/xend restart
+</screen>
+ </para>
</sect3>
</para>
<para>
- Supported DRBD version: the <literal>0.7</literal>
- series. It's recommended to have at least version
- <literal>0.7.24</literal> if you use <command>udev</command>
- since older versions have a bug related to device discovery
- which can be triggered in cases of hard drive failure.
+ Supported DRBD versions: <literal>8.0.x</literal>.
+ It's recommended to have at least version <literal>8.0.7</literal>.
</para>
<para>
you have the DRBD utils installed and the module in your
kernel you're fine. Please check that your system is
configured to load the module at every boot, and that it
- passes the following option to the module:
- <computeroutput>minor_count=64</computeroutput> (this will
- allow you to use up to 32 instances per node).
+ passes the following option to the module
+ <computeroutput>minor_count=255</computeroutput>. This will
+ allow you to use up to 128 instances per node (for most clusters
+ <constant>128 </constant> should be enough, though).
</para>
<formalpara><title>Debian</title>
<para>
- You can just install (build) the DRBD 0.7 module with the
+ You can just install (build) the DRBD 8.0.x module with the
following commands (make sure you are running the Xen
kernel):
</para>
</formalpara>
<screen>
-apt-get install drbd0.7-module-source drbd0.7-utils
+apt-get install -t etch-backports drbd8-source drbd8-utils
m-a update
-m-a a-i drbd0.7
-echo drbd minor_count=64 >> /etc/modules
-modprobe drbd minor_count=64
+m-a a-i drbd8
+echo drbd minor_count=128 >> /etc/modules
+depmod -a
+modprobe drbd minor_count=128
</screen>
<para>
It is also recommended that you comment out the default
- resources in the <filename>/etc/dbrd.conf</filename> file, so
+ resources in the <filename>/etc/drbd.conf</filename> file, so
that the init script doesn't try to configure any drbd
devices. You can do this by prefixing all
<literal>resource</literal> lines in the file with the keyword
</listitem>
<listitem>
<simpara><ulink
- url="http://fping.sourceforge.net/">fping</ulink></simpara>
- </listitem>
- <listitem>
- <simpara><ulink
url="http://developer.osdl.org/dev/iproute2">iproute2</ulink></simpara>
</listitem>
<listitem>
(part of iputils package)</simpara>
</listitem>
<listitem>
- <simpara><ulink
- url="http://www.kernel.org/pub/linux/utils/raid/mdadm/">mdadm</ulink>
- (Linux Software Raid tools)</simpara>
+ <simpara><ulink url="http://www.python.org">Python 2.4</ulink></simpara>
</listitem>
<listitem>
- <simpara><ulink url="http://www.python.org">Python 2.4</ulink></simpara>
+ <simpara><ulink
+ url="http://pyopenssl.sourceforge.net/">Python OpenSSL
+ bindings</ulink></simpara>
</listitem>
<listitem>
- <simpara><ulink url="http://twistedmatrix.com/">Python
- Twisted library</ulink> - the core library is
- enough</simpara>
+ <simpara><ulink
+ url="http://www.undefined.org/python/#simplejson">simplejson Python
+ module</ulink></simpara>
</listitem>
<listitem>
<simpara><ulink
- url="http://pyopenssl.sourceforge.net/">Python OpenSSL
- bindings</ulink></simpara>
+ url="http://pyparsing.wikispaces.com/">pyparsing Python
+ module</ulink></simpara>
</listitem>
</itemizedlist>
</formalpara>
<screen>
# apt-get install lvm2 ssh bridge-utils iproute iputils-arping \
- fping python2.4 python-twisted-core python-pyopenssl openssl \
- mdadm
+ python2.4 python-pyopenssl openssl python-pyparsing python-simplejson
</screen>
</sect2>
</para>
<screen>
-tar xvzf ganeti-1.2b1.tar.gz
-cd ganeti-1.2b1
-./configure --localstatedir=/var
+tar xvzf ganeti-@GANETI_VERSION@.tar.gz
+cd ganeti-@GANETI_VERSION@
+./configure --localstatedir=/var --sysconfdir=/etc
make
make install
mkdir /srv/ganeti/ /srv/ganeti/os /srv/ganeti/export
<para>
You also need to copy the file
- <filename>docs/examples/ganeti.initd</filename>
+ <filename>doc/examples/ganeti.initd</filename>
from the source archive to
<filename>/etc/init.d/ganeti</filename> and register it with
your distribution's startup scripts, for example in Debian:
to setup a cron job run the
<computeroutput>ganeti-watcher</computeroutput> program. A
sample cron file is provided in the source at
- <filename>docs/examples/ganeti.cron</filename> and you can
+ <filename>doc/examples/ganeti.cron</filename> and you can
copy that (eventually altering the path) to
<filename>/etc/cron.d/ganeti</filename>
</para>
provided on the project web site. Download it from <ulink
url="http://code.google.com/p/ganeti/"></ulink> and follow the
instructions in the <filename>README</filename> file. Here is
- the installation procedure:
+ the installation procedure (replace <constant>0.2</constant>
+ with the latest version that is compatible with your ganeti
+ version):
</para>
<screen>
cd /srv/ganeti/os
-tar xvf instance-debian-etch-0.1.tar
-mv instance-debian-etch-0.1 debian-etch
+tar xvf ganeti-instance-debian-etch-0.4.tar
+mv ganeti-instance-debian-etch-0.4 debian-etch
</screen>
<para>
In order to use this OS definition, you need to have internet
- access from your nodes and have <citerefentry>
+ access from your nodes and have the <citerefentry>
<refentrytitle>debootstrap</refentrytitle>
- <manvolnum>8</manvolnum> </citerefentry> installed on all the
- nodes.
+ <manvolnum>8</manvolnum></citerefentry>, <citerefentry>
+ <refentrytitle>dump</refentrytitle><manvolnum>8</manvolnum>
+ </citerefentry> and <citerefentry>
+ <refentrytitle>restore</refentrytitle>
+ <manvolnum>8</manvolnum> </citerefentry> commands installed on
+ all nodes.
</para>
<formalpara>
<title>Debian</title>
<para>
- Use this command on all nodes to install
- <computeroutput>debootstrap</computeroutput>:
+ Use this command on all nodes to install the required
+ packages:
- <screen>apt-get install debootstrap</screen>
+ <screen>apt-get install debootstrap dump</screen>
</para>
</formalpara>
nodes names for a multi-node cluster. In general the best
choice is to have a unique name for a cluster, even if it
consists of only one machine, as you will be able to expand it
- later without any problems.
+ later without any problems. Please note that the hostname used
+ for this must resolve to an IP address reserved exclusively
+ for this purpose.
</para>
<para>
</para>
<para>
+ To set up the cluster as an HVM cluster, use the
+ <option>--hypervisor=xen-hvm3.1</option> option to use
+ the Xen 3.1 HVM hypervisor. Note that with the
+ HVM support, you will only be able to create
+ HVM instances in a cluster set to this hypervisor type. Mixed
+ PVM/HVM clusters are not supported by the Ganeti 1.2
+ HVM support. You will also need to create the VNC
+ cluster password file
+ <filename>/etc/ganeti/vnc-cluster-password</filename>
+ which contains one line with the default VNC password for the
+ cluster.
+ </para>
+
+ <para>
You can also invoke the command with the
<option>--help</option> option in order to see all the
possibilities.
<title>Testing the setup</title>
<para>
-
Execute the <computeroutput>gnt-node list</computeroutput>
command to see all nodes in the cluster:
<screen>
This step shows how to setup a virtual instance with either
non-mirrored disks (<computeroutput>plain</computeroutput>) or
with network mirrored disks
- (<computeroutput>remote_raid1</computeroutput>). All commands
- need to be executed on the Ganeti master node (the one on
- which <computeroutput>gnt-cluster init</computeroutput> was
- run). Verify that the OS scripts are present on all cluster
- nodes with <computeroutput>gnt-os list</computeroutput>.
+ (<computeroutput>drbd</computeroutput>). All
+ commands need to be executed on the Ganeti master node (the
+ one on which <computeroutput>gnt-cluster init</computeroutput>
+ was run). Verify that the OS scripts are present on all
+ cluster nodes with <computeroutput>gnt-os
+ list</computeroutput>.
</para>
<para>
To create a virtual instance, you need a hostname which is
<para>
To create a network mirrored instance, change the argument to
the <option>-t</option> option from <literal>plain</literal>
- to <literal>remote_raid1</literal> and specify the node on
- which the mirror should reside with the
- <option>--secondary-node</option> option, like this:
+ to <literal>drbd</literal> and specify the node on
+ which the mirror should reside with the second value of the
+ <option>--node</option> option, like this:
</para>
<screen>
-# gnt-instance add -t remote_raid1 --secondary-node node1 \
- -n node2 -o debian-etch instance2
+# gnt-instance add -t drbd -n node1:node2 -o debian-etch instance2
* creating instance disks...
adding instance instance2 to cluster config
Waiting for instance instance1 to sync disks.
- device sdb: 76.30% done, 72 estimated seconds remaining
- device sdb: 94.80% done, 18 estimated seconds remaining
Instance instance2's disks are in sync.
-creating os for instance instance2 on node node2.example.com
+creating os for instance instance2 on node node1.example.com
* running the instance OS create scripts...
* starting instance...
</screen>
<para>
To failover an instance to its secondary node (only possible
- in <literal>remote_raid1</literal> setup), use
+ with <literal>drbd</literal> disk templates), use
<computeroutput>gnt-instance failover
<replaceable>INSTANCENAME</replaceable></computeroutput>.
</para>