Clarify cluster IP requirement.
[ganeti-local] / doc / install.sgml
index ca0396f..c83fdc0 100644 (file)
       <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>
 
@@ -291,11 +314,13 @@ ln -s initrd.img-2.6.18-5-xen-686 initrd-2.6-xenU
       </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: the <literal>0.7</literal> series
+        <emphasis role="strong">or</emphasis>
+        <literal>8.0.7</literal>. 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.
       </para>
 
       <para>
@@ -311,9 +336,14 @@ ln -s initrd.img-2.6.18-5-xen-686 initrd-2.6-xenU
         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:
+        passes the following option to the module (for
+        <literal>0.7.x</literal>:
         <computeroutput>minor_count=64</computeroutput> (this will
-        allow you to use up to 32 instances per node).
+        allow you to use up to 32 instances per node) or for
+        <literal>8.0.x</literal> you can use up to
+        <constant>255</constant>
+        (i.e. <computeroutput>minor_count=255</computeroutput>, but
+        for most clusters <constant>128</constant> should be enough).
       </para>
 
       <formalpara><title>Debian</title>
@@ -331,6 +361,18 @@ m-a a-i drbd0.7
 echo drbd minor_count=64 >> /etc/modules
 modprobe drbd minor_count=64
       </screen>
+      <para>
+        or for using DRBD <literal>8.x</literal> from the etch
+        backports (note: you need at least 8.0.7, older version have
+        a bug that breaks ganeti's usage of drbd):
+      </para>
+      <screen>
+apt-get install -t etch-backports drbd8-module-source drbd8-utils
+m-a update
+m-a a-i drbd8
+echo drbd minor_count=128 >> /etc/modules
+modprobe drbd minor_count=128
+      </screen>
 
       <para>
         It is also recommended that you comment out the default
@@ -378,10 +420,6 @@ skip resource "r1" {
         </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>
@@ -407,6 +445,16 @@ skip resource "r1" {
           url="http://pyopenssl.sourceforge.net/">Python OpenSSL
           bindings</ulink></simpara>
         </listitem>
+        <listitem>
+          <simpara><ulink
+          url="http://www.undefined.org/python/#simplejson">simplejson Python
+          module</ulink></simpara>
+        </listitem>
+        <listitem>
+          <simpara><ulink
+          url="http://pyparsing.wikispaces.com/">pyparsing Python
+          module</ulink></simpara>
+        </listitem>
       </itemizedlist>
 
       <para>
@@ -424,8 +472,8 @@ skip resource "r1" {
       </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-twisted-core python-pyopenssl openssl \
+  mdadm python-pyparsing python-simplejson
       </screen>
 
     </sect2>
@@ -575,8 +623,8 @@ vgextend xenvg /dev/sdd1
       </para>
 
         <screen>
-tar xvzf ganeti-1.2b1.tar.gz
-cd ganeti-1.2b1
+tar xvzf ganeti-@GANETI_VERSION@.tar.gz
+cd ganeti-@GANETI_VERSION@
 ./configure --localstatedir=/var --sysconfdir=/etc
 make
 make install
@@ -615,13 +663,15 @@ mkdir /srv/ganeti/ /srv/ganeti/os /srv/ganeti/export
         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>
@@ -679,7 +729,9 @@ gnt-cluster init <replaceable>CLUSTERNAME</replaceable>
         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>
@@ -701,6 +753,20 @@ gnt-cluster init <replaceable>CLUSTERNAME</replaceable>
       </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.
@@ -748,7 +814,6 @@ gnt-node add <replaceable>NODENAME</replaceable>
       <title>Testing the setup</title>
 
       <para>
-
         Execute the <computeroutput>gnt-node list</computeroutput>
         command to see all nodes in the cluster:
       <screen>
@@ -767,11 +832,13 @@ node1.example.com 197404 197404   2047  1896   125     0     0
         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>remote_raid1</computeroutput> for drbd 0.7
+        and <computeroutput>drbd</computeroutput> for drbd 8.x).  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
@@ -803,14 +870,14 @@ creating os for instance inst1.example.com on node node1.example.com
       <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>remote_raid1</literal> (drbd 0.7) or
+        <literal>drbd</literal> (drbd 8.0) 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 remote_raid1 -n node1:node2 -o debian-etch instance2
 * creating instance disks...
 adding instance instance2 to cluster config
 Waiting for instance instance1 to sync disks.
@@ -821,7 +888,7 @@ 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>
@@ -850,8 +917,8 @@ creating os for instance instance2 on node node2.example.com
 
       <para>
         To failover an instance to its secondary node (only possible
-        in <literal>remote_raid1</literal> setup), use
-        <computeroutput>gnt-instance failover
+        in <literal>remote_raid1</literal> or <literal>drbd</literal>
+        disk templates), use <computeroutput>gnt-instance failover
         <replaceable>INSTANCENAME</replaceable></computeroutput>.
       </para>