From 36e23a401079d564720580f26bde566a3d63f0da Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Tue, 17 Feb 2009 12:43:51 +0000 Subject: [PATCH] Update the install and admin documents This is not a real update, just a quick pass changing the obvious parts. Reviewed-by: imsnah --- doc/admin.sgml | 89 +++++++++++++++++++++---------- doc/install.sgml | 135 +++++++++++++++++++++++++++-------------------- 2 files changed, 137 insertions(+), 87 deletions(-) diff --git a/doc/admin.sgml b/doc/admin.sgml index dd43da38f..239ba5612 100644 --- a/doc/admin.sgml +++ b/doc/admin.sgml @@ -4,23 +4,29 @@ <articleinfo> <title>Ganeti administrator's guide</title> </articleinfo> - <para>Documents Ganeti version 1.3</para> + <para>Documents Ganeti version 2.0</para> <sect1> <title>Introduction</title> - <para>Ganeti is a virtualization cluster management software. You are - expected to be a system administrator familiar with your Linux distribution - and the Xen virtualization environment before using it. + <para> + Ganeti is a virtualization cluster management software. You are + expected to be a system administrator familiar with your Linux + distribution and the Xen or KVM virtualization environments + before using it. </para> - <para>The various components of Ganeti all have man pages and interactive - help. This manual though will help you getting familiar with the system by - explaining the most common operations, grouped by related use. + <para> + The various components of Ganeti all have man pages and + interactive help. This manual though will help you getting + familiar with the system by explaining the most common + operations, grouped by related use. </para> - <para>After a terminology glossary and a section on the prerequisites - needed to use this manual, the rest of this document is divided in three - main sections, which group different features of Ganeti: + <para> + After a terminology glossary and a section on the prerequisites + needed to use this manual, the rest of this document is divided + in three main sections, which group different features of + Ganeti: <itemizedlist> <listitem> <simpara>Instance Management</simpara> @@ -122,33 +128,32 @@ Adding a new virtual instance to your Ganeti cluster is really easy. The command is: - <synopsis>gnt-instance add -n <replaceable>TARGET_NODE</replaceable> -o <replaceable>OS_TYPE</replaceable> -t <replaceable>DISK_TEMPLATE</replaceable> <replaceable>INSTANCE_NAME</replaceable></synopsis> + <synopsis>gnt-instance add -n <replaceable>TARGET_NODE<optional>:SECONDARY_NODE</optional></replaceable> -o <replaceable>OS_TYPE</replaceable> -t <replaceable>DISK_TEMPLATE</replaceable> <replaceable>INSTANCE_NAME</replaceable></synopsis> The instance name must be resolvable (e.g. exist in DNS) and - of course map to an address in the same subnet as the cluster + usually to an address in the same subnet as the cluster itself. Options you can give to this command include: <itemizedlist> <listitem> - <simpara>The disk size (<option>-s</option>)</simpara> + <simpara>The disk size (<option>-s</option>) for a + single-disk instance, or multiple <option>--disk + <replaceable>N</replaceable>:size=<replaceable>SIZE</replaceable></option> + options for multi-instance disks</simpara> </listitem> <listitem> - <simpara>The swap size (<option>--swap-size</option>)</simpara> + <simpara>The memory size (<option>-B memory</option>)</simpara> </listitem> <listitem> - <simpara>The memory size (<option>-m</option>)</simpara> + <simpara>The number of virtual CPUs (<option>-B vcpus</option>)</simpara> </listitem> <listitem> - <simpara>The number of virtual CPUs (<option>-p</option>)</simpara> - </listitem> - <listitem> - <simpara>The instance ip address (<option>-i</option>) (use the value - <literal>auto</literal> to make Ganeti record the address from - dns)</simpara> - </listitem> - <listitem> - <simpara>The bridge to connect the instance to (<option>-b</option>), - if you don't want to use the default one</simpara> + <para> + Arguments for the NICs of the instance; by default, a + single-NIC instance is created. The IP and/or bridge of + the NIC can be changed via <option>--nic + 0:ip=<replaceable>IP</replaceable>,bridge=<replaceable>BRIDGE</replaceable></option> + </para> </listitem> </itemizedlist> </para> @@ -164,6 +169,15 @@ </listitem> </varlistentry> + <varlistentry> + <term>file</term> + <listitem> + <para>The instance will use plain files as backend for its + disks. No redundancy is provided, and this is somewhat + more difficult to configure for high performance.</para> + </listitem> + </varlistentry> + <varlistentry> <term>plain</term> <listitem> @@ -200,9 +214,9 @@ </para> <para> - Removing an instance is even easier than creating one. This operation - is non-reversible and destroys all the contents of your instance. Use - with care: + Removing an instance is even easier than creating one. This + operation is irrereversible and destroys all the contents of + your instance. Use with care: <synopsis>gnt-instance remove <replaceable>INSTANCE_NAME</replaceable></synopsis> </para> @@ -295,6 +309,21 @@ </para> </sect2> + <sect2> + <title>Live migrating an instance</title> + + <para> + If an instance is built in highly available mode, it currently + runs and both its nodes are running fine, you can at migrate + it over to its secondary node, without dowtime. On the master + node you need to run: + + <synopsis>gnt-instance migrate <replaceable>INSTANCE_NAME</replaceable></synopsis> + + </para> + </sect2> + + <sect2> <title>Replacing an instance disks</title> @@ -304,13 +333,14 @@ you failed over all its instances, but it's still secondary for some? The solution here is to replace the instance disks, changing the secondary node: - <synopsis>gnt-instance replace-disks <option>-s</option> <option>--new-secondary <replaceable>NODE</replaceable></option> <replaceable>INSTANCE_NAME</replaceable></synopsis> + <synopsis>gnt-instance replace-disks <option>-n <replaceable>NODE</replaceable></option> <replaceable>INSTANCE_NAME</replaceable></synopsis> This process is a bit long, but involves no instance downtime, and at the end of it the instance has changed its secondary node, to which it can if necessary be failed over. </para> </sect2> + <sect2> <title>Failing over the master node</title> @@ -408,6 +438,7 @@ gnt-cluster command gnt-cluster copyfile gnt-cluster verify +gnt-cluster verify-disks gnt-cluster getmaster gnt-cluster version </screen> diff --git a/doc/install.sgml b/doc/install.sgml index cb5cb1f96..d1aaf1bc9 100644 --- a/doc/install.sgml +++ b/doc/install.sgml @@ -4,18 +4,18 @@ <articleinfo> <title>Ganeti installation tutorial</title> </articleinfo> - <para>Documents Ganeti version 1.2</para> + <para>Documents Ganeti version 2.0</para> <sect1> <title>Introduction</title> <para> Ganeti is a cluster virtualization management system based on - Xen. This document explains how to bootstrap a Ganeti node (Xen - <literal>dom0</literal>), create a running cluster and install - virtual instance (Xen <literal>domU</literal>). You need to - repeat most of the steps in this document for every node you - want to install, but of course we recommend creating some + Xen or KVM. This document explains how to bootstrap a Ganeti + node (Xen <literal>dom0</literal>), create a running cluster and + install virtual instance (Xen <literal>domU</literal>). You + need to repeat most of the steps in this document for every node + you want to install, but of course we recommend creating some semi-automatic procedure if you plan to deploy Ganeti on a medium/large scale. </para> @@ -29,11 +29,11 @@ <para> Ganeti has been developed for Linux and is - distribution-agnostic. This documentation will use Debian Etch + distribution-agnostic. This documentation will use Debian Lenny as an example system but the examples can easily be translated to any other distribution. You are expected to be familiar with - your distribution, its package management system, and Xen before - trying to use Ganeti. + your distribution, its package management system, and Xen or KVM + before trying to use Ganeti. </para> <para>This document is divided into two main sections: @@ -90,9 +90,14 @@ at this stage is to partition leaving enough space for a big (<emphasis role="strong">minimum <constant>20GiB</constant></emphasis>) LVM volume group which - will then host your instance filesystems. The volume group - name Ganeti 1.2 uses (by default) is - <emphasis>xenvg</emphasis>. + will then host your instance filesystems, if you want to use + all Ganeti features. The volume group name Ganeti 2.0 uses (by + default) is <emphasis>xenvg</emphasis>. + </para> + + <para> + You can also use file-based storage only, without LVM, but + this is not detailed in this document. </para> <para> @@ -122,7 +127,7 @@ <formalpara> <title>Debian</title> <para> - Note that Debian Etch configures the hostname differently + Note that Debian Lenny configures the hostname differently than you need it for Ganeti. For example, this is what Etch puts in <filename>/etc/hosts</filename> in certain situations: @@ -158,9 +163,9 @@ <para> While Ganeti is developed with the ability to modularly run on - different virtualization environments in mind the only one - currently useable on a live system is <ulink - url="http://xen.xensource.com/">Xen</ulink>. Supported + different virtualization environments in mind the only two + currently useable on a live system are <ulink + url="http://xen.xensource.com/">Xen</ulink> and KVM. Supported versions are: <simplelist type="inline"> <member><literal>3.0.3</literal></member> <member><literal>3.0.4</literal></member> @@ -170,25 +175,25 @@ <para> Please follow your distribution's recommended way to install and set up Xen, or install Xen from the upstream source, if - you wish, following their manual. + you wish, following their manual. For KVM, make sure you have + a KVM-enabled kernel and the KVM tools. </para> <para> - After installing Xen you need to reboot into your Xen-ified - dom0 system. On some distributions this might involve + After installing either hypervisor, you need to reboot into + your new system. On some distributions this might involve configuring GRUB appropriately, whereas others will configure - it automatically when you install Xen from a package. + it automatically when you install the respective kernels. </para> <formalpara><title>Debian</title> <para> - Under Debian Etch or Sarge+backports you can install the - relevant <literal>xen-linux-system</literal> package, which - will pull in both the hypervisor and the relevant - kernel. Also, if you are installing a 32-bit Etch, you should - install the <computeroutput>libc6-xen</computeroutput> package - (run <computeroutput>apt-get install - libc6-xen</computeroutput>). + Under Debian Lenny or Etch you can install the relevant + <literal>xen-linux-system</literal> package, which will pull + in both the hypervisor and the relevant kernel. Also, if you + are installing a 32-bit Lenny/Etch, you should install the + <computeroutput>libc6-xen</computeroutput> package (run + <computeroutput>apt-get install libc6-xen</computeroutput>). </para> </formalpara> @@ -197,8 +202,9 @@ <para> It's recommended that dom0 is restricted to a low amount of - memory (<constant>512MiB</constant> is reasonable) and that - memory ballooning is disabled in the file + memory (<constant>512MiB</constant> or + <constant>1GiB</constant> is reasonable) and that memory + ballooning is disabled in the file <filename>/etc/xen/xend-config.sxp</filename> by setting the value <literal>dom0-min-mem</literal> to <constant>0</constant>, like this: @@ -228,10 +234,10 @@ set the memory and nosmp parameters in the file <filename>/boot/grub/menu.lst</filename>. You need to modify the variable <literal>xenhopt</literal> to add - <userinput>dom0_mem=512M</userinput> like this: + <userinput>dom0_mem=1024M</userinput> like this: <screen> ## Xen hypervisor options to use with the default Xen boot option -# xenhopt=dom0_mem=512M +# xenhopt=dom0_mem=1024M </screen> and the <literal>xenkopt</literal> needs to include the <userinput>nosmp</userinput> option like this: @@ -250,9 +256,9 @@ </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 + If you want to run HVM instances too 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') @@ -315,7 +321,7 @@ ln -s initrd.img-2.6.18-5-xen-686 initrd-2.6-xenU <para> Supported DRBD versions: <literal>8.0.x</literal>. - It's recommended to have at least version <literal>8.0.7</literal>. + It's recommended to have at least version <literal>8.0.12</literal>. </para> <para> @@ -346,7 +352,7 @@ ln -s initrd.img-2.6.18-5-xen-686 initrd-2.6-xenU </formalpara> <screen> -apt-get install -t etch-backports drbd8-source drbd8-utils +apt-get install drbd8-source drbd8-utils m-a update m-a a-i drbd8 echo drbd minor_count=128 >> /etc/modules @@ -442,7 +448,7 @@ skip resource "r1" { </formalpara> <screen> # apt-get install lvm2 ssh bridge-utils iproute iputils-arping \ - python2.4 python-pyopenssl openssl python-pyparsing python-simplejson + python python-pyopenssl openssl python-pyparsing python-simplejson </screen> </sect2> @@ -628,19 +634,24 @@ mkdir /srv/ganeti/ /srv/ganeti/os /srv/ganeti/export <para> To be able to install instances you need to have an Operating - System installation script. An example for Debian Etch is + System installation script. An example OS that works under + Debian and can install Debian and Ubuntu instace OSes is 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 (replace <constant>0.2</constant> + the installation procedure (replace <constant>0.7</constant> with the latest version that is compatible with your ganeti version): </para> <screen> -cd /srv/ganeti/os -tar xvf ganeti-instance-debian-etch-0.4.tar -mv ganeti-instance-debian-etch-0.4 debian-etch +cd /usr/local/src/ +wget http://ganeti.googlecode.com/files/ganeti-instance-debootstrap-0.7.tar.gz +tar xzf ganeti-instance-debootstrap-0.7.tar.gz +cd ganeti-instance-debootstrap-0.7 +./configure +make +make install </screen> <para> @@ -652,7 +663,10 @@ mv ganeti-instance-debian-etch-0.4 debian-etch </citerefentry> and <citerefentry> <refentrytitle>restore</refentrytitle> <manvolnum>8</manvolnum> </citerefentry> commands installed on - all nodes. + all nodes. Also, if the OS is configured to partition the + instance's disk in + <filename>/etc/default/ganeti-instance-debootstrap</filename>, + you will need <command>kpartx</command> installed. </para> <formalpara> <title>Debian</title> @@ -660,7 +674,7 @@ mv ganeti-instance-debian-etch-0.4 debian-etch Use this command on all nodes to install the required packages: - <screen>apt-get install debootstrap dump</screen> + <screen>apt-get install debootstrap dump kpartx</screen> </para> </formalpara> @@ -682,8 +696,10 @@ mv ganeti-instance-debian-etch-0.4 debian-etch node per cluster.</para> - <para>The last step is to initialize the cluster. After you've repeated - the above process on all of your nodes, choose one as the master, and execute: + <para> + The last step is to initialize the cluster. After you've + repeated the above process on all of your nodes, choose one as + the master, and execute: </para> <screen> @@ -699,8 +715,8 @@ gnt-cluster init <replaceable>CLUSTERNAME</replaceable> 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. Please note that the hostname used - for this must resolve to an IP address reserved exclusively - for this purpose. + for this must resolve to an IP address reserved <emphasis + role="strong">exclusively</emphasis> for this purpose. </para> <para> @@ -723,18 +739,21 @@ gnt-cluster init <replaceable>CLUSTERNAME</replaceable> <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> + <option>--enabled-hypervisors=xen-hvm</option> option to + enable the HVM hypervisor (you can also add + <userinput>,xen-pvm</userinput> to enable the PVM one + too). 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> + To setup the cluster for KVM-only usage (KVM and Xen cannot be + mixed), pass <option>--enabled-hypervisors=kvm</option> to the + init command. + </para> + <para> You can also invoke the command with the <option>--help</option> option in order to see all the @@ -815,7 +834,7 @@ node1.example.com 197404 197404 2047 1896 125 0 0 instance for you: </para> <screen> -gnt-instance add --node=node1 -o debian-etch -t plain inst1.example.com +gnt-instance add --node=node1 -o debootstrap -t plain inst1.example.com * creating instance disks... adding instance inst1.example.com to cluster config Waiting for instance inst1.example.com to sync disks. @@ -844,7 +863,7 @@ creating os for instance inst1.example.com on node node1.example.com </para> <screen> -# gnt-instance add -t drbd -n node1:node2 -o debian-etch instance2 +# gnt-instance add -t drbd -n node1:node2 -o debootstrap instance2 * creating instance disks... adding instance instance2 to cluster config Waiting for instance instance1 to sync disks. -- GitLab