2b11c75be3d65bbf757aad7c116cb7b5989a1fef
[ganeti-local] / docs / installing.sgml
1 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.2//EN" [
2 ]>
3   <article class="specification">
4   <articleinfo>
5     <title>Ganeti node/cluster installation tutorial</title>
6   </articleinfo>
7   <para>Documents Ganeti version 1.2</para>
8
9   <sect1>
10     <title>Introduction</title>
11
12     <para>Ganeti is a cluster virtualization management system. This document
13     explains how to bootstrap a Ganeti node and create a running cluster. You
14     need to repeat most of the steps in this document for every node you want to
15     install, but of course we recommend creating some semi-automatic procedure
16     if you plan to deploy Ganeti on a medium/large scale.
17     </para>
18
19     <para>This document is divided into two main sections:
20
21       <itemizedlist>
22         <listitem>
23           <simpara>Installation of the core system and base components</simpara>
24         </listitem>
25         <listitem>
26           <simpara>Configuration of the environment for Ganeti</simpara>
27         </listitem>
28       </itemizedlist>
29
30     Each of these is divided into sub-sections. While a full Ganeti system will
31     need all of the steps specified, some are not strictly required for every
32     environment. Which ones they are, and why, is specified in the
33     corresponding sections.
34     </para>
35
36     <para>While Ganeti itself is distribution-agnostic most of the examples in
37       this document will be targeted at Debian or debian derived distributions.
38       You are expected to be familiar with your distribution, its package
39       management system, and Xen before trying to use Ganeti.
40     </para>
41
42     <para>A basic Ganeti terminology glossary is provided in the introductory
43       section of the "admin guide". Please refer to that if you are uncertain
44       about the terms we are using.
45     </para>
46
47   </sect1>
48
49   <sect1>
50     <title>Installing the system and base components</title>
51
52     <sect2>
53       <title>Installing the base system</title>
54
55       <para>Mandatory.
56       </para>
57
58       <para>Please install your operating system as you would normally do. The
59         only requirement you need to be aware of at this stage is to partition
60         leaving enough space for a big LVM volume group which will then host
61         your instance file systems. You can even create the volume group at
62         installation time, of course: the default volume group name Ganeti 1.2
63         uses is "xenvg" but you may name it differently should you wish to, as
64         long as the name is the same for all the nodes in the cluster.
65       </para>
66
67     </sect2>
68
69     <sect2>
70       <title>Installing Xen</title>
71
72       <para>Mandatory: While Ganeti is developed with the ability to modularly
73       run on different virtualization environments in mind the only one
74       currently useable on a live system is Xen.
75       </para>
76
77       <para>Please follow your distribution's recommended way to install and set
78       up Xen, or install Xen from the upstream source, if you wish, following
79       their manual.
80       </para>
81
82       <para>For example under Debian 4.0 or 3.1+backports you can install the
83       relevant xen-linux-system package, which will pull in both the hypervisor
84       and the relevant kernel. On Ubuntu (from Gutsy on) the package is called
85       ubuntu-xen-server.
86       </para>
87
88       <para>After installing Xen you need to reboot into your xenified dom0
89       system. Again on some distributions this might involve configuring GRUB
90       appropriately.
91       </para>
92
93     </sect2>
94
95     <sect2>
96       <title>Installing DRBD</title>
97
98       <para>Recommended: DRBD is required if you want to use the high
99         availability (HA) features of Ganeti, but optional if you don't require
100         HA or only run Ganeti on single-node clusters. You can upgrade a non-HA
101         cluster to an HA one later, but you might need to export and reimport
102         all your instances to take advantage of the new features.
103       </para>
104
105       <para>Now the bad news: unless your distribution already provides it
106       installing DRBD might involve recompiling your kernel or anyway fiddling
107       with it. Hopefully at least the xenified kernel source to start from will
108       be provided.
109       </para>
110
111       <para>Under Debian you can just install the drbd0.7-module-source and
112       drbd0.7-utils packages, and your kernel source, and then run
113       module-assistant to compile the drbd0.7 module. The commands:
114
115       <programlisting>
116 m-a update
117 m-a a-i drbd0.7
118       </programlisting>
119
120       should do it for you.
121       </para>
122
123       <para>The good news is that you don't need to configure DRBD at all.
124       Ganeti will do it for you for every instance you set up.  If you have the
125       DRBD utils installed and the module in your kernel you're fine. Please
126       check that your system is configured to load the module at every boot.
127       </para>
128
129     </sect2>
130
131   </sect1>
132
133
134   <sect1>
135     <title>Setting up the environment for Ganeti</title>
136
137     <sect2>
138       <title>Configuring the network</title>
139
140       <para>Ganeti relies on Xen running in "bridge mode", which means the
141       instances network interfaces will be attached to a software bridge
142       running in dom0. Xen by default creates such a bridge at startup, but
143       your distribution might have a different way to do things.
144       </para>
145
146       <para>
147       In Debian, in order to enable the default Xen behaviour, you have to edit
148       /etc/xen/xend-config.sxp and replace (network-script network-dummy) with
149       (network-script network-bridge). The recommended Debian way to configure
150       things, though, is to edit your /etc/network/interfaces file and
151       substitute your normal ethernet stanza with something like:
152
153       <programlisting>
154 auto br0
155 iface br0 inet static
156         address YOUR_IP_ADDRESS
157         netmask YOUR_NETMASK
158         network YOUR_NETWORK
159         broadcast YOUR_BROADCAST_ADDRSS
160         gateway YOUR_GATEWAY
161         # dns-* options are implemented by the resolvconf package, if installed
162         dns-nameservers YOUR_DNS_SERVERS
163         dns-search YOUR_SEARCH_PATH
164         bridge_ports eth0
165         bridge_stp off
166         bridge_fd 0
167       </programlisting>
168
169     </para>
170
171     <para>
172       Beware that the default name Ganeti uses is xen-br0 (which was used in
173       Xen 2.0) while Xen 3.0 uses xenbr0 by default. The default bridge your
174       cluster will use for new instances can be specified at cluster
175       initialization time.
176     </para>
177
178     </sect2>
179
180     <sect2>
181       <title>Configuring LVM</title>
182
183       <para>
184         If you haven't configured your LVM volume group at install time you need
185         to do it before trying to initialize the Ganeti cluster. This is done by
186         formatting the devices/partitions you want to use for it and then adding
187         them to the relevant volume group:
188
189        <programlisting>
190 pvcreate /dev/sda4
191 pvcreate /dev/sdb
192 pvcreate /dev/sdc1
193 vgcreate xenvg /dev/sda4 /dev/sdb /dev/sdc1
194        </programlisting>
195       </para>
196
197       <para>
198         If you want to add a device later you can do so with the 
199         <citerefentry><refentrytitle>vgextend</refentrytitle>
200         <manvolnum>8</manvolnum></citerefentry> command.
201         <programlisting>
202 pvcreate /dev/sdd
203 vgextend xenvg /dev/sdd
204         </programlisting>
205       </para>
206
207       <para>
208         As said before you may choose a different name for the volume group,
209         as long as you stick to the same name on all the nodes of a cluster.
210       </para>
211     </sect2>
212
213     <sect2>
214       <title>Installing Ganeti</title>
215
216       <para>It's now time to install the Ganeti software itself if you haven't
217         done it yet. You can do it from source, with the usual steps:
218
219         <programlisting>
220 ./configure
221 make
222 make install
223         </programlisting>
224
225         or you can install the package relevant to your distribution, for
226         example in Debian/Ubuntu:
227
228         <programlisting>
229 dpkg -i ganeti_VERSION_all.deb
230         </programlisting>
231
232         or, if you have a source repository that holds the Ganeti software:
233
234         <programlisting>
235 apt-get install ganeti
236         </programlisting>
237       </para>
238
239     </sect2>
240
241     <sect2>
242       <title>Installing the Operating System support packages</title>
243
244       <para>Another important component for Ganeti is the OS support packages,
245         which let different operating systems be used as instances. You can
246         install them by installing the relevant ganeti-instance-OS package.
247       </para>
248
249     </sect2>
250
251     <sect2>
252       <title>Initializing the cluster</title>
253
254       <para>Mandatory: only on one node per cluster.
255       </para>
256
257
258       <para>The last step is to initialize the cluster. After you've repeated
259         the above process or some semi-automatic form of it on all of your
260         nodes choose one as the master, and execute:
261
262         <programlisting>
263 gnt-cluster init CLUSTERNAME
264         </programlisting>
265
266         Options you can pass to gnt-cluster init include the default bridge
267         name (-b), the cluster-wide name for the volume group (-g) and the
268         secondary ip address for the initial node should you wish to keep the
269         data replication network separate. Invoke it with --help to see all the
270         possibilities.
271       </para>
272
273       <para>The cluster name must exist in DNS. You must choose a name
274         different from any of the nodes names for a multi-node cluster. In
275         general the best choice is to have a completely unique name for each
276         cluster.
277       </para>
278     </sect2>
279
280     <sect2>
281       <title>Joining the nodes to the cluster.</title>
282
283       <para>Mandatory: for all the other nodes.
284       </para>
285
286       <para>
287         If you have already initialized your cluster you need to join the other
288         nodes to it. You can do so by executing the following command on the
289         master node:
290         <programlisting>
291 gnt-node add NODENAME
292         </programlisting>
293
294         The only option is (-s), which sets the node's secondary ip address for
295         replication purposes, if you are using a separate replication network.
296       </para>
297     </sect2>
298
299   </sect1>
300
301   <sect1>
302     <title>This is it!</title>
303
304     <para>Now you can follow the "admin guide" to use your new Ganeti cluster.
305     </para>
306
307   </sect1>
308
309
310   </article>