Revision b212bf8b
b/INSTALL | ||
---|---|---|
43 | 43 |
ganeti.init to /etc/init.d/ganeti and integrate it into your boot sequence |
44 | 44 |
(``chkconfig``, ``update-rc.d``, etc.). |
45 | 45 |
|
46 |
More details about the installation process are in the docs/installing.pdf file.
|
|
46 |
More details about the installation process are in the docs/install.pdf file. |
|
47 | 47 |
|
48 | 48 |
|
49 | 49 |
Cluster initialisation |
b/README | ||
---|---|---|
1 | 1 |
Ganeti 1.2 |
2 | 2 |
========== |
3 | 3 |
|
4 |
For installation instructions, read the INSTALL and the docs/installing.pdf
|
|
4 |
For installation instructions, read the INSTALL and the docs/install.pdf |
|
5 | 5 |
files. |
6 | 6 |
|
7 | 7 |
For a brief introduction, read the ganeti(7) manpage and the other pages |
b/docs/Makefile.am | ||
---|---|---|
1 | 1 |
docdir = $(datadir)/doc/$(PACKAGE) |
2 | 2 |
|
3 |
dist_doc_DATA = hooks.html hooks.pdf installing.html installing.pdf admin.html admin.pdf
|
|
4 |
EXTRA_DIST = hooks.sgml installing.sgml admin.sgml
|
|
3 |
dist_doc_DATA = hooks.html hooks.pdf install.html install.pdf admin.html admin.pdf
|
|
4 |
EXTRA_DIST = hooks.sgml install.sgml admin.sgml |
|
5 | 5 |
|
6 | 6 |
%.html: %.sgml |
7 | 7 |
docbook2html --nochunks $< |
b/docs/install.sgml | ||
---|---|---|
1 |
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.2//EN" [ |
|
2 |
]> |
|
3 |
<article class="specification"> |
|
4 |
<articleinfo> |
|
5 |
<title>Ganeti installation tutorial</title> |
|
6 |
</articleinfo> |
|
7 |
<para>Documents Ganeti version 1.2</para> |
|
8 |
|
|
9 |
<sect1> |
|
10 |
<title>Introduction</title> |
|
11 |
|
|
12 |
<para> |
|
13 |
Ganeti is a cluster virtualization management system. This |
|
14 |
document explains how to bootstrap a Ganeti node and create a |
|
15 |
running cluster. You need to repeat most of the steps in this |
|
16 |
document for every node you want to install, but of course we |
|
17 |
recommend creating some semi-automatic procedure if you plan to |
|
18 |
deploy Ganeti on a medium/large scale. |
|
19 |
</para> |
|
20 |
|
|
21 |
<para>This document is divided into two main sections: |
|
22 |
|
|
23 |
<itemizedlist> |
|
24 |
<listitem> |
|
25 |
<simpara>Installation of the core system and base |
|
26 |
components</simpara> |
|
27 |
</listitem> |
|
28 |
<listitem> |
|
29 |
<simpara>Configuration of the environment for |
|
30 |
Ganeti</simpara> |
|
31 |
</listitem> |
|
32 |
</itemizedlist> |
|
33 |
|
|
34 |
Each of these is divided into sub-sections. While a full Ganeti |
|
35 |
system will need all of the steps specified, some are not strictly |
|
36 |
required for every environment. Which ones they are, and why, is |
|
37 |
specified in the corresponding sections. |
|
38 |
</para> |
|
39 |
|
|
40 |
<para> |
|
41 |
While Ganeti itself is distribution-agnostic most of the |
|
42 |
examples in this document will be targeted at Debian or |
|
43 |
Debian-derived distributions. You are expected to be familiar |
|
44 |
with your distribution, its package management system, and Xen |
|
45 |
before trying to use Ganeti. |
|
46 |
</para> |
|
47 |
|
|
48 |
<para> |
|
49 |
A basic Ganeti terminology glossary is provided in the |
|
50 |
introductory section of the "admin guide". Please refer to that |
|
51 |
if you are uncertain about the terms we are using. |
|
52 |
</para> |
|
53 |
|
|
54 |
</sect1> |
|
55 |
|
|
56 |
<sect1> |
|
57 |
<title>Installing the system and base components</title> |
|
58 |
|
|
59 |
<sect2> |
|
60 |
<title>Installing the base system</title> |
|
61 |
|
|
62 |
<para><emphasis role="strong">Mandatory.</emphasis></para> |
|
63 |
|
|
64 |
<para> |
|
65 |
Please install your operating system as you would normally |
|
66 |
do. The only requirement you need to be aware of at this stage |
|
67 |
is to partition leaving enough space for a big LVM volume |
|
68 |
group which will then host your instance file systems. You can |
|
69 |
even create the volume group at installation time, of course: |
|
70 |
the default volume group name Ganeti 1.2 uses is "xenvg" but |
|
71 |
you may name it differently should you wish to, as long as the |
|
72 |
name is the same for all the nodes in the cluster. |
|
73 |
</para> |
|
74 |
|
|
75 |
</sect2> |
|
76 |
|
|
77 |
<sect2> |
|
78 |
<title>Installing Xen</title> |
|
79 |
|
|
80 |
<para> |
|
81 |
<emphasis role="strong">Mandatory:</emphasis> While Ganeti is |
|
82 |
developed with the ability to modularly run on different |
|
83 |
virtualization environments in mind the only one currently |
|
84 |
useable on a live system is <ulink |
|
85 |
url="http://xen.xensource.com/">Xen</ulink>. |
|
86 |
</para> |
|
87 |
|
|
88 |
<para> |
|
89 |
Please follow your distribution's recommended way to install |
|
90 |
and set up Xen, or install Xen from the upstream source, if |
|
91 |
you wish, following their manual. |
|
92 |
</para> |
|
93 |
|
|
94 |
<para> |
|
95 |
For example under Debian 4.0 or 3.1+backports you can install |
|
96 |
the relevant xen-linux-system package, which will pull in both |
|
97 |
the hypervisor and the relevant kernel. On Ubuntu (from Gutsy |
|
98 |
on) the package is called ubuntu-xen-server. |
|
99 |
</para> |
|
100 |
|
|
101 |
<para> |
|
102 |
After installing Xen you need to reboot into your xenified |
|
103 |
dom0 system. Again on some distributions this might involve |
|
104 |
configuring GRUB appropriately. |
|
105 |
</para> |
|
106 |
|
|
107 |
</sect2> |
|
108 |
|
|
109 |
<sect2> |
|
110 |
<title>Installing DRBD</title> |
|
111 |
|
|
112 |
<para> |
|
113 |
Recommended: <ulink url="http://www.drbd.org/">DRBD</ulink> |
|
114 |
is required if you want to use the high availability (HA) |
|
115 |
features of Ganeti, but optional if you don't require HA or |
|
116 |
only run Ganeti on single-node clusters. You can upgrade a |
|
117 |
non-HA cluster to an HA one later, but you might need to |
|
118 |
export and reimport all your instances to take advantage of |
|
119 |
the new features. |
|
120 |
</para> |
|
121 |
|
|
122 |
<para> |
|
123 |
Now the bad news: unless your distribution already provides it |
|
124 |
installing DRBD might involve recompiling your kernel or |
|
125 |
anyway fiddling with it. Hopefully at least the xenified |
|
126 |
kernel source to start from will be provided. |
|
127 |
</para> |
|
128 |
|
|
129 |
<para> |
|
130 |
Under Debian you can just install the drbd0.7-module-source |
|
131 |
and drbd0.7-utils packages, and your kernel source, and then |
|
132 |
run module-assistant to compile the drbd0.7 module. The |
|
133 |
following commands should do it: |
|
134 |
</para> |
|
135 |
|
|
136 |
<screen> |
|
137 |
m-a update |
|
138 |
m-a a-i drbd0.7 |
|
139 |
</screen> |
|
140 |
|
|
141 |
<para> |
|
142 |
The good news is that you don't need to configure DRBD at all. |
|
143 |
Ganeti will do it for you for every instance you set up. If |
|
144 |
you have the DRBD utils installed and the module in your |
|
145 |
kernel you're fine. Please check that your system is |
|
146 |
configured to load the module at every boot. |
|
147 |
</para> |
|
148 |
|
|
149 |
</sect2> |
|
150 |
|
|
151 |
<sect2> |
|
152 |
<title>Other required software</title> |
|
153 |
|
|
154 |
<para>Besides Xen and DRBD, you will need to install the |
|
155 |
following:</para> |
|
156 |
|
|
157 |
<itemizedlist> |
|
158 |
<listitem> |
|
159 |
<simpara><ulink url="http://sourceware.org/lvm2/">LVM |
|
160 |
version 2</ulink></simpara> |
|
161 |
</listitem> |
|
162 |
<listitem> |
|
163 |
<simpara><ulink |
|
164 |
url="http://www.openssl.org/">OpenSSL</ulink></simpara> |
|
165 |
</listitem> |
|
166 |
<listitem> |
|
167 |
<simpara><ulink |
|
168 |
url="http://www.openssh.com/portable.html">OpenSSH</ulink></simpara> |
|
169 |
</listitem> |
|
170 |
<listitem> |
|
171 |
<simpara><ulink url="http://bridge.sourceforge.net/">Bridge |
|
172 |
utilities</ulink></simpara> |
|
173 |
</listitem> |
|
174 |
<listitem> |
|
175 |
<simpara><ulink |
|
176 |
url="http://fping.sourceforge.net/">fping</ulink></simpara> |
|
177 |
</listitem> |
|
178 |
<listitem> |
|
179 |
<simpara><ulink |
|
180 |
url="http://developer.osdl.org/dev/iproute2">iproute2</ulink></simpara> |
|
181 |
</listitem> |
|
182 |
<listitem> |
|
183 |
<simpara><ulink |
|
184 |
url="ftp://ftp.inr.ac.ru/ip-routing/iputils-current.tar.gz">arping</ulink> |
|
185 |
(part of iputils package)</simpara> |
|
186 |
</listitem> |
|
187 |
<listitem> |
|
188 |
<simpara><ulink |
|
189 |
url="http://www.kernel.org/pub/linux/utils/raid/mdadm/">mdadm</ulink> |
|
190 |
(Linux Software Raid tools)</simpara> |
|
191 |
</listitem> |
|
192 |
<listitem> |
|
193 |
<simpara><ulink url="http://www.python.org">Python 2.4</ulink></simpara> |
|
194 |
</listitem> |
|
195 |
<listitem> |
|
196 |
<simpara><ulink url="http://twistedmatrix.com/">Python |
|
197 |
Twisted library</ulink> - the core library is |
|
198 |
enough</simpara> |
|
199 |
</listitem> |
|
200 |
<listitem> |
|
201 |
<simpara><ulink |
|
202 |
url="http://pyopenssl.sourceforge.net/">Python OpenSSL |
|
203 |
bindings</ulink></simpara> |
|
204 |
</listitem> |
|
205 |
</itemizedlist> |
|
206 |
|
|
207 |
<para>These programs are supplied as part of most Linux |
|
208 |
distributions, so usually they can be installed via apt or |
|
209 |
similar methods. Also many of them will already be installed on |
|
210 |
a standard machine. On Debian Etch you can use this command line |
|
211 |
to install all of them:</para> |
|
212 |
|
|
213 |
<screen> |
|
214 |
# apt-get install lvm2 ssh bridge-utils iproute iputils-arping \ |
|
215 |
fping python2.4 python-twisted-core python-pyopenssl openssl |
|
216 |
</screen> |
|
217 |
|
|
218 |
<para> |
|
219 |
When installing from source, you will also need the following: |
|
220 |
</para> |
|
221 |
<itemizedlist> |
|
222 |
<listitem> |
|
223 |
<simpara>make</simpara> |
|
224 |
</listitem> |
|
225 |
<listitem> |
|
226 |
<simpara>tar</simpara> |
|
227 |
</listitem> |
|
228 |
<listitem> |
|
229 |
<simpara>gzip or bzip2</simpara> |
|
230 |
</listitem> |
|
231 |
</itemizedlist> |
|
232 |
|
|
233 |
<para> |
|
234 |
Again, these are available in most if not all linux distributions. For Debian, do: |
|
235 |
<screen> |
|
236 |
# apt-get install make tar gzip bzip2 |
|
237 |
</screen> |
|
238 |
</para> |
|
239 |
</sect2> |
|
240 |
|
|
241 |
</sect1> |
|
242 |
|
|
243 |
|
|
244 |
<sect1> |
|
245 |
<title>Setting up the environment for Ganeti</title> |
|
246 |
|
|
247 |
<sect2> |
|
248 |
<title>Configuring the network</title> |
|
249 |
|
|
250 |
<para>Ganeti relies on Xen running in "bridge mode", which means the |
|
251 |
instances network interfaces will be attached to a software bridge |
|
252 |
running in dom0. Xen by default creates such a bridge at startup, but |
|
253 |
your distribution might have a different way to do things. |
|
254 |
</para> |
|
255 |
|
|
256 |
<para> |
|
257 |
In Debian, in order to enable the default Xen behaviour, you |
|
258 |
have to edit <filename>/etc/xen/xend-config.sxp</filename> and |
|
259 |
replace <computeroutput>(network-script |
|
260 |
network-dummy)</computeroutput> with |
|
261 |
<computeroutput>(network-script |
|
262 |
network-bridge)</computeroutput>. The recommended Debian way to |
|
263 |
configure things, though, is to edit your |
|
264 |
<filename>/etc/network/interfaces</filename> file and substitute |
|
265 |
your normal ethernet stanza with something like:</para> |
|
266 |
|
|
267 |
<screen> |
|
268 |
auto br0 |
|
269 |
iface br0 inet static |
|
270 |
address <replaceable>YOUR_IP_ADDRESS</replaceable> |
|
271 |
netmask <replaceable>YOUR_NETMASK</replaceable> |
|
272 |
network <replaceable>YOUR_NETWORK</replaceable> |
|
273 |
broadcast <replaceable>YOUR_BROADCAST_ADDRESS</replaceable> |
|
274 |
gateway <replaceable>YOUR_GATEWAY</replaceable> |
|
275 |
bridge_ports <replaceable>eth0</replaceable> |
|
276 |
bridge_stp off |
|
277 |
bridge_fd 0 |
|
278 |
</screen> |
|
279 |
|
|
280 |
<para> |
|
281 |
Beware that the default name Ganeti uses is |
|
282 |
<hardware>xen-br0</hardware> (which was used in Xen 2.0) |
|
283 |
while Xen 3.0 uses <hardware>xenbr0</hardware> by |
|
284 |
default. The default bridge your cluster will use for new |
|
285 |
instances can be specified at cluster initialization time. |
|
286 |
</para> |
|
287 |
|
|
288 |
</sect2> |
|
289 |
|
|
290 |
<sect2> |
|
291 |
<title>Configuring LVM</title> |
|
292 |
|
|
293 |
<para> |
|
294 |
If you haven't configured your LVM volume group at install |
|
295 |
time you need to do it before trying to initialize the Ganeti |
|
296 |
cluster. This is done by formatting the devices/partitions you |
|
297 |
want to use for it and then adding them to the relevant volume |
|
298 |
group: |
|
299 |
</para> |
|
300 |
|
|
301 |
<screen> |
|
302 |
pvcreate /dev/sda4 |
|
303 |
pvcreate /dev/sdb |
|
304 |
pvcreate /dev/sdc1 |
|
305 |
vgcreate xenvg /dev/sda4 /dev/sdb /dev/sdc1 |
|
306 |
</screen> |
|
307 |
|
|
308 |
<para> |
|
309 |
If you want to add a device later you can do so with the |
|
310 |
<citerefentry><refentrytitle>vgextend</refentrytitle> |
|
311 |
<manvolnum>8</manvolnum></citerefentry> command: |
|
312 |
</para> |
|
313 |
|
|
314 |
<screen> |
|
315 |
pvcreate /dev/sdd |
|
316 |
vgextend xenvg /dev/sdd |
|
317 |
</screen> |
|
318 |
|
|
319 |
<para> |
|
320 |
As said before you may choose a different name for the volume group, |
|
321 |
as long as you stick to the same name on all the nodes of a cluster. |
|
322 |
</para> |
|
323 |
</sect2> |
|
324 |
|
|
325 |
<sect2> |
|
326 |
<title>Installing Ganeti</title> |
|
327 |
|
|
328 |
<para> |
|
329 |
It's now time to install the Ganeti software itself. You can |
|
330 |
do it from source, with the usual steps (note that the |
|
331 |
<option>localstatedir</option> options must be set to |
|
332 |
<filename class="directory">/var</filename>): |
|
333 |
</para> |
|
334 |
|
|
335 |
<screen> |
|
336 |
./configure --localstatedir=/var |
|
337 |
make |
|
338 |
make install |
|
339 |
mkdir /srv/ganeti/ /srv/ganeti/os /srv/ganeti/export |
|
340 |
</screen> |
|
341 |
|
|
342 |
<para> |
|
343 |
You also need to copy from the source archive the file |
|
344 |
<filename>docs/examples/ganeti.initd</filename> to |
|
345 |
<filename>/etc/init.d/ganeti</filename> and register it into |
|
346 |
your distribution's startup scripts, for example in Debian: |
|
347 |
</para> |
|
348 |
<screen>update-rc.d ganeti defaults 20 80</screen> |
|
349 |
|
|
350 |
</sect2> |
|
351 |
|
|
352 |
<sect2> |
|
353 |
<title>Installing the Operating System support packages</title> |
|
354 |
|
|
355 |
<para> |
|
356 |
Another important component for Ganeti are the OS support |
|
357 |
packages, which let different operating systems be used as |
|
358 |
instances. You can grab a simple package that allows |
|
359 |
installing Debian Etch instances on the project web site |
|
360 |
(after download, untar it and follow the instructions in the |
|
361 |
<filename>README</filename> file). |
|
362 |
</para> |
|
363 |
|
|
364 |
<para> |
|
365 |
Alternatively, you can create your own OS definitions, see |
|
366 |
<citerefentry> |
|
367 |
<refentrytitle>ganeti-os-interface</refentrytitle> |
|
368 |
<manvolnum>8</manvolnum> |
|
369 |
</citerefentry>. |
|
370 |
</para> |
|
371 |
|
|
372 |
</sect2> |
|
373 |
|
|
374 |
<sect2> |
|
375 |
<title>Initializing the cluster</title> |
|
376 |
|
|
377 |
<para><emphasis role="strong">Mandatory:</emphasis> only on one |
|
378 |
node per cluster.</para> |
|
379 |
|
|
380 |
|
|
381 |
<para>The last step is to initialize the cluster. After you've repeated |
|
382 |
the above process or some semi-automatic form of it on all of your |
|
383 |
nodes choose one as the master, and execute: |
|
384 |
</para> |
|
385 |
|
|
386 |
<screen> |
|
387 |
gnt-cluster init <replaceable>CLUSTERNAME</replaceable> |
|
388 |
</screen> |
|
389 |
|
|
390 |
<para> |
|
391 |
If the node's network interface which will be used for access |
|
392 |
from outside the cluster is not named |
|
393 |
<hardware>xen-br0</hardware>, you need to use the |
|
394 |
<option>--master-netdev=<replaceable>IFNAME</replaceable></option> |
|
395 |
option, replacing <replaceable>IFNAME</replaceable> with the |
|
396 |
correct one for your case (e.g. <hardware>xenbr0</hardware>, |
|
397 |
<hardware>eth0</hardware>, etc.). Usually this will be the |
|
398 |
same as the default bridge name (see below). |
|
399 |
</para> |
|
400 |
|
|
401 |
<para> |
|
402 |
Other options you can pass to <command>gnt-cluster |
|
403 |
init</command> include the default bridge name |
|
404 |
(<option>-b</option>), the cluster-wide name for the volume |
|
405 |
group (<option>-g</option>) and the secondary ip address for |
|
406 |
the initial node should you wish to keep the data replication |
|
407 |
network separate. Invoke it with <option>--help</option> to |
|
408 |
see all the possibilities. |
|
409 |
</para> |
|
410 |
|
|
411 |
<para> |
|
412 |
Note that the cluster name must exist in DNS. You must choose |
|
413 |
a name different from any of the nodes names for a multi-node |
|
414 |
cluster. In general the best choice is to have a unique name |
|
415 |
for a cluster, even if it consists of only one machine, as you |
|
416 |
will be able to expand it later without any problem. |
|
417 |
</para> |
|
418 |
</sect2> |
|
419 |
|
|
420 |
<sect2> |
|
421 |
<title>Joining the nodes to the cluster.</title> |
|
422 |
|
|
423 |
<para> |
|
424 |
<emphasis role="strong">Mandatory:</emphasis> for all the |
|
425 |
other nodes. |
|
426 |
</para> |
|
427 |
|
|
428 |
<para> |
|
429 |
If you have already initialized your cluster you need to join the other |
|
430 |
nodes to it. You can do so by executing the following command on the |
|
431 |
master node: |
|
432 |
<screen> |
|
433 |
gnt-node add <replaceable>NODENAME</replaceable> |
|
434 |
</screen> |
|
435 |
|
|
436 |
The only option is <option>-s</option>, which sets the node's |
|
437 |
secondary ip address for replication purposes, if you are |
|
438 |
using a separate replication network. |
|
439 |
</para> |
|
440 |
</sect2> |
|
441 |
|
|
442 |
</sect1> |
|
443 |
|
|
444 |
<sect1> |
|
445 |
<title>This is it!</title> |
|
446 |
|
|
447 |
<para> |
|
448 |
Now you can follow the admin guide to use your new Ganeti |
|
449 |
cluster. |
|
450 |
</para> |
|
451 |
|
|
452 |
</sect1> |
|
453 |
|
|
454 |
|
|
455 |
</article> |
/dev/null | ||
---|---|---|
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> |
|
13 |
Ganeti is a cluster virtualization management system. This |
|
14 |
document explains how to bootstrap a Ganeti node and create a |
|
15 |
running cluster. You need to repeat most of the steps in this |
|
16 |
document for every node you want to install, but of course we |
|
17 |
recommend creating some semi-automatic procedure if you plan to |
|
18 |
deploy Ganeti on a medium/large scale. |
|
19 |
</para> |
|
20 |
|
|
21 |
<para>This document is divided into two main sections: |
|
22 |
|
|
23 |
<itemizedlist> |
|
24 |
<listitem> |
|
25 |
<simpara>Installation of the core system and base |
|
26 |
components</simpara> |
|
27 |
</listitem> |
|
28 |
<listitem> |
|
29 |
<simpara>Configuration of the environment for |
|
30 |
Ganeti</simpara> |
|
31 |
</listitem> |
|
32 |
</itemizedlist> |
|
33 |
|
|
34 |
Each of these is divided into sub-sections. While a full Ganeti |
|
35 |
system will need all of the steps specified, some are not strictly |
|
36 |
required for every environment. Which ones they are, and why, is |
|
37 |
specified in the corresponding sections. |
|
38 |
</para> |
|
39 |
|
|
40 |
<para> |
|
41 |
While Ganeti itself is distribution-agnostic most of the |
|
42 |
examples in this document will be targeted at Debian or |
|
43 |
Debian-derived distributions. You are expected to be familiar |
|
44 |
with your distribution, its package management system, and Xen |
|
45 |
before trying to use Ganeti. |
|
46 |
</para> |
|
47 |
|
|
48 |
<para> |
|
49 |
A basic Ganeti terminology glossary is provided in the |
|
50 |
introductory section of the "admin guide". Please refer to that |
|
51 |
if you are uncertain about the terms we are using. |
|
52 |
</para> |
|
53 |
|
|
54 |
</sect1> |
|
55 |
|
|
56 |
<sect1> |
|
57 |
<title>Installing the system and base components</title> |
|
58 |
|
|
59 |
<sect2> |
|
60 |
<title>Installing the base system</title> |
|
61 |
|
|
62 |
<para><emphasis role="strong">Mandatory.</emphasis></para> |
|
63 |
|
|
64 |
<para> |
|
65 |
Please install your operating system as you would normally |
|
66 |
do. The only requirement you need to be aware of at this stage |
|
67 |
is to partition leaving enough space for a big LVM volume |
|
68 |
group which will then host your instance file systems. You can |
|
69 |
even create the volume group at installation time, of course: |
|
70 |
the default volume group name Ganeti 1.2 uses is "xenvg" but |
|
71 |
you may name it differently should you wish to, as long as the |
|
72 |
name is the same for all the nodes in the cluster. |
|
73 |
</para> |
|
74 |
|
|
75 |
</sect2> |
|
76 |
|
|
77 |
<sect2> |
|
78 |
<title>Installing Xen</title> |
|
79 |
|
|
80 |
<para> |
|
81 |
<emphasis role="strong">Mandatory:</emphasis> While Ganeti is |
|
82 |
developed with the ability to modularly run on different |
|
83 |
virtualization environments in mind the only one currently |
|
84 |
useable on a live system is <ulink |
|
85 |
url="http://xen.xensource.com/">Xen</ulink>. |
|
86 |
</para> |
|
87 |
|
|
88 |
<para> |
|
89 |
Please follow your distribution's recommended way to install |
|
90 |
and set up Xen, or install Xen from the upstream source, if |
|
91 |
you wish, following their manual. |
|
92 |
</para> |
|
93 |
|
|
94 |
<para> |
|
95 |
For example under Debian 4.0 or 3.1+backports you can install |
|
96 |
the relevant xen-linux-system package, which will pull in both |
|
97 |
the hypervisor and the relevant kernel. On Ubuntu (from Gutsy |
|
98 |
on) the package is called ubuntu-xen-server. |
|
99 |
</para> |
|
100 |
|
|
101 |
<para> |
|
102 |
After installing Xen you need to reboot into your xenified |
|
103 |
dom0 system. Again on some distributions this might involve |
|
104 |
configuring GRUB appropriately. |
|
105 |
</para> |
|
106 |
|
|
107 |
</sect2> |
|
108 |
|
|
109 |
<sect2> |
|
110 |
<title>Installing DRBD</title> |
|
111 |
|
|
112 |
<para> |
|
113 |
Recommended: <ulink url="http://www.drbd.org/">DRBD</ulink> |
|
114 |
is required if you want to use the high availability (HA) |
|
115 |
features of Ganeti, but optional if you don't require HA or |
|
116 |
only run Ganeti on single-node clusters. You can upgrade a |
|
117 |
non-HA cluster to an HA one later, but you might need to |
|
118 |
export and reimport all your instances to take advantage of |
|
119 |
the new features. |
|
120 |
</para> |
|
121 |
|
|
122 |
<para> |
|
123 |
Now the bad news: unless your distribution already provides it |
|
124 |
installing DRBD might involve recompiling your kernel or |
|
125 |
anyway fiddling with it. Hopefully at least the xenified |
|
126 |
kernel source to start from will be provided. |
|
127 |
</para> |
|
128 |
|
|
129 |
<para> |
|
130 |
Under Debian you can just install the drbd0.7-module-source |
|
131 |
and drbd0.7-utils packages, and your kernel source, and then |
|
132 |
run module-assistant to compile the drbd0.7 module. The |
|
133 |
following commands should do it: |
|
134 |
</para> |
|
135 |
|
|
136 |
<screen> |
|
137 |
m-a update |
|
138 |
m-a a-i drbd0.7 |
|
139 |
</screen> |
|
140 |
|
|
141 |
<para> |
|
142 |
The good news is that you don't need to configure DRBD at all. |
|
143 |
Ganeti will do it for you for every instance you set up. If |
|
144 |
you have the DRBD utils installed and the module in your |
|
145 |
kernel you're fine. Please check that your system is |
|
146 |
configured to load the module at every boot. |
|
147 |
</para> |
|
148 |
|
|
149 |
</sect2> |
|
150 |
|
|
151 |
<sect2> |
|
152 |
<title>Other required software</title> |
|
153 |
|
|
154 |
<para>Besides Xen and DRBD, you will need to install the |
|
155 |
following:</para> |
|
156 |
|
|
157 |
<itemizedlist> |
|
158 |
<listitem> |
|
159 |
<simpara><ulink url="http://sourceware.org/lvm2/">LVM |
|
160 |
version 2</ulink></simpara> |
|
161 |
</listitem> |
|
162 |
<listitem> |
|
163 |
<simpara><ulink |
|
164 |
url="http://www.openssl.org/">OpenSSL</ulink></simpara> |
|
165 |
</listitem> |
|
166 |
<listitem> |
|
167 |
<simpara><ulink |
|
168 |
url="http://www.openssh.com/portable.html">OpenSSH</ulink></simpara> |
|
169 |
</listitem> |
|
170 |
<listitem> |
|
171 |
<simpara><ulink url="http://bridge.sourceforge.net/">Bridge |
|
172 |
utilities</ulink></simpara> |
|
173 |
</listitem> |
|
174 |
<listitem> |
|
175 |
<simpara><ulink |
|
176 |
url="http://fping.sourceforge.net/">fping</ulink></simpara> |
|
177 |
</listitem> |
|
178 |
<listitem> |
|
179 |
<simpara><ulink |
|
180 |
url="http://developer.osdl.org/dev/iproute2">iproute2</ulink></simpara> |
|
181 |
</listitem> |
|
182 |
<listitem> |
|
183 |
<simpara><ulink |
|
184 |
url="ftp://ftp.inr.ac.ru/ip-routing/iputils-current.tar.gz">arping</ulink> |
|
185 |
(part of iputils package)</simpara> |
|
186 |
</listitem> |
|
187 |
<listitem> |
|
188 |
<simpara><ulink |
|
189 |
url="http://www.kernel.org/pub/linux/utils/raid/mdadm/">mdadm</ulink> |
|
190 |
(Linux Software Raid tools)</simpara> |
|
191 |
</listitem> |
|
192 |
<listitem> |
|
193 |
<simpara><ulink url="http://www.python.org">Python 2.4</ulink></simpara> |
|
194 |
</listitem> |
|
195 |
<listitem> |
|
196 |
<simpara><ulink url="http://twistedmatrix.com/">Python |
|
197 |
Twisted library</ulink> - the core library is |
|
198 |
enough</simpara> |
|
199 |
</listitem> |
|
200 |
<listitem> |
|
201 |
<simpara><ulink |
|
202 |
url="http://pyopenssl.sourceforge.net/">Python OpenSSL |
|
203 |
bindings</ulink></simpara> |
|
204 |
</listitem> |
|
205 |
</itemizedlist> |
|
206 |
|
|
207 |
<para>These programs are supplied as part of most Linux |
|
208 |
distributions, so usually they can be installed via apt or |
|
209 |
similar methods. Also many of them will already be installed on |
|
210 |
a standard machine. On Debian Etch you can use this command line |
|
211 |
to install all of them:</para> |
|
212 |
|
|
213 |
<screen> |
|
214 |
# apt-get install lvm2 ssh bridge-utils iproute iputils-arping \ |
|
215 |
fping python2.4 python-twisted-core python-pyopenssl openssl |
|
216 |
</screen> |
|
217 |
|
|
218 |
<para> |
|
219 |
When installing from source, you will also need the following: |
|
220 |
</para> |
|
221 |
<itemizedlist> |
|
222 |
<listitem> |
|
223 |
<simpara>make</simpara> |
|
224 |
</listitem> |
|
225 |
<listitem> |
|
226 |
<simpara>tar</simpara> |
|
227 |
</listitem> |
|
228 |
<listitem> |
|
229 |
<simpara>gzip or bzip2</simpara> |
|
230 |
</listitem> |
|
231 |
</itemizedlist> |
|
232 |
|
|
233 |
<para> |
|
234 |
Again, these are available in most if not all linux distributions. For Debian, do: |
|
235 |
<screen> |
|
236 |
# apt-get install make tar gzip bzip2 |
|
237 |
</screen> |
|
238 |
</para> |
|
239 |
</sect2> |
|
240 |
|
|
241 |
</sect1> |
|
242 |
|
|
243 |
|
|
244 |
<sect1> |
|
245 |
<title>Setting up the environment for Ganeti</title> |
|
246 |
|
|
247 |
<sect2> |
|
248 |
<title>Configuring the network</title> |
|
249 |
|
|
250 |
<para>Ganeti relies on Xen running in "bridge mode", which means the |
|
251 |
instances network interfaces will be attached to a software bridge |
|
252 |
running in dom0. Xen by default creates such a bridge at startup, but |
|
253 |
your distribution might have a different way to do things. |
|
254 |
</para> |
|
255 |
|
|
256 |
<para> |
|
257 |
In Debian, in order to enable the default Xen behaviour, you |
|
258 |
have to edit <filename>/etc/xen/xend-config.sxp</filename> and |
|
259 |
replace <computeroutput>(network-script |
|
260 |
network-dummy)</computeroutput> with |
|
261 |
<computeroutput>(network-script |
|
262 |
network-bridge)</computeroutput>. The recommended Debian way to |
|
263 |
configure things, though, is to edit your |
|
264 |
<filename>/etc/network/interfaces</filename> file and substitute |
|
265 |
your normal ethernet stanza with something like:</para> |
|
266 |
|
|
267 |
<screen> |
|
268 |
auto br0 |
|
269 |
iface br0 inet static |
|
270 |
address <replaceable>YOUR_IP_ADDRESS</replaceable> |
|
271 |
netmask <replaceable>YOUR_NETMASK</replaceable> |
|
272 |
network <replaceable>YOUR_NETWORK</replaceable> |
|
273 |
broadcast <replaceable>YOUR_BROADCAST_ADDRESS</replaceable> |
|
274 |
gateway <replaceable>YOUR_GATEWAY</replaceable> |
|
275 |
bridge_ports <replaceable>eth0</replaceable> |
|
276 |
bridge_stp off |
|
277 |
bridge_fd 0 |
|
278 |
</screen> |
|
279 |
|
|
280 |
<para> |
|
281 |
Beware that the default name Ganeti uses is |
|
282 |
<hardware>xen-br0</hardware> (which was used in Xen 2.0) |
|
283 |
while Xen 3.0 uses <hardware>xenbr0</hardware> by |
|
284 |
default. The default bridge your cluster will use for new |
|
285 |
instances can be specified at cluster initialization time. |
|
286 |
</para> |
|
287 |
|
|
288 |
</sect2> |
|
289 |
|
|
290 |
<sect2> |
|
291 |
<title>Configuring LVM</title> |
|
292 |
|
|
293 |
<para> |
|
294 |
If you haven't configured your LVM volume group at install |
|
295 |
time you need to do it before trying to initialize the Ganeti |
|
296 |
cluster. This is done by formatting the devices/partitions you |
|
297 |
want to use for it and then adding them to the relevant volume |
|
298 |
group: |
|
299 |
</para> |
|
300 |
|
|
301 |
<screen> |
|
302 |
pvcreate /dev/sda4 |
|
303 |
pvcreate /dev/sdb |
|
304 |
pvcreate /dev/sdc1 |
|
305 |
vgcreate xenvg /dev/sda4 /dev/sdb /dev/sdc1 |
|
306 |
</screen> |
|
307 |
|
|
308 |
<para> |
|
309 |
If you want to add a device later you can do so with the |
|
310 |
<citerefentry><refentrytitle>vgextend</refentrytitle> |
|
311 |
<manvolnum>8</manvolnum></citerefentry> command: |
|
312 |
</para> |
|
313 |
|
|
314 |
<screen> |
|
315 |
pvcreate /dev/sdd |
|
316 |
vgextend xenvg /dev/sdd |
|
317 |
</screen> |
|
318 |
|
|
319 |
<para> |
|
320 |
As said before you may choose a different name for the volume group, |
|
321 |
as long as you stick to the same name on all the nodes of a cluster. |
|
322 |
</para> |
|
323 |
</sect2> |
|
324 |
|
|
325 |
<sect2> |
|
326 |
<title>Installing Ganeti</title> |
|
327 |
|
|
328 |
<para> |
|
329 |
It's now time to install the Ganeti software itself. You can |
|
330 |
do it from source, with the usual steps (note that the |
|
331 |
<option>localstatedir</option> options must be set to |
|
332 |
<filename class="directory">/var</filename>): |
|
333 |
</para> |
|
334 |
|
|
335 |
<screen> |
|
336 |
./configure --localstatedir=/var |
|
337 |
make |
|
338 |
make install |
|
339 |
mkdir /srv/ganeti/ /srv/ganeti/os /srv/ganeti/export |
|
340 |
</screen> |
|
341 |
|
|
342 |
<para> |
|
343 |
You also need to copy from the source archive the file |
|
344 |
<filename>docs/examples/ganeti.initd</filename> to |
|
345 |
<filename>/etc/init.d/ganeti</filename> and register it into |
|
346 |
your distribution's startup scripts, for example in Debian: |
|
347 |
</para> |
|
348 |
<screen>update-rc.d ganeti defaults 20 80</screen> |
|
349 |
|
|
350 |
</sect2> |
|
351 |
|
|
352 |
<sect2> |
|
353 |
<title>Installing the Operating System support packages</title> |
|
354 |
|
|
355 |
<para> |
|
356 |
Another important component for Ganeti are the OS support |
|
357 |
packages, which let different operating systems be used as |
|
358 |
instances. You can grab a simple package that allows |
|
359 |
installing Debian Etch instances on the project web site |
|
360 |
(after download, untar it and follow the instructions in the |
|
361 |
<filename>README</filename> file). |
|
362 |
</para> |
|
363 |
|
|
364 |
<para> |
|
365 |
Alternatively, you can create your own OS definitions, see |
|
366 |
<citerefentry> |
|
367 |
<refentrytitle>ganeti-os-interface</refentrytitle> |
|
368 |
<manvolnum>8</manvolnum> |
|
369 |
</citerefentry>. |
|
370 |
</para> |
|
371 |
|
|
372 |
</sect2> |
|
373 |
|
|
374 |
<sect2> |
|
375 |
<title>Initializing the cluster</title> |
|
376 |
|
|
377 |
<para><emphasis role="strong">Mandatory:</emphasis> only on one |
|
378 |
node per cluster.</para> |
|
379 |
|
|
380 |
|
|
381 |
<para>The last step is to initialize the cluster. After you've repeated |
|
382 |
the above process or some semi-automatic form of it on all of your |
|
383 |
nodes choose one as the master, and execute: |
|
384 |
</para> |
|
385 |
|
|
386 |
<screen> |
|
387 |
gnt-cluster init <replaceable>CLUSTERNAME</replaceable> |
|
388 |
</screen> |
|
389 |
|
|
390 |
<para> |
|
391 |
If the node's network interface which will be used for access |
|
392 |
from outside the cluster is not named |
|
393 |
<hardware>xen-br0</hardware>, you need to use the |
|
394 |
<option>--master-netdev=<replaceable>IFNAME</replaceable></option> |
|
395 |
option, replacing <replaceable>IFNAME</replaceable> with the |
|
396 |
correct one for your case (e.g. <hardware>xenbr0</hardware>, |
|
397 |
<hardware>eth0</hardware>, etc.). Usually this will be the |
|
398 |
same as the default bridge name (see below). |
|
399 |
</para> |
|
400 |
|
|
401 |
<para> |
|
402 |
Other options you can pass to <command>gnt-cluster |
|
403 |
init</command> include the default bridge name |
|
404 |
(<option>-b</option>), the cluster-wide name for the volume |
|
405 |
group (<option>-g</option>) and the secondary ip address for |
|
406 |
the initial node should you wish to keep the data replication |
|
407 |
network separate. Invoke it with <option>--help</option> to |
|
408 |
see all the possibilities. |
|
409 |
</para> |
|
410 |
|
|
411 |
<para> |
|
412 |
Note that the cluster name must exist in DNS. You must choose |
|
413 |
a name different from any of the nodes names for a multi-node |
|
414 |
cluster. In general the best choice is to have a unique name |
|
415 |
for a cluster, even if it consists of only one machine, as you |
|
416 |
will be able to expand it later without any problem. |
|
417 |
</para> |
|
418 |
</sect2> |
|
419 |
|
|
420 |
<sect2> |
|
421 |
<title>Joining the nodes to the cluster.</title> |
|
422 |
|
|
423 |
<para> |
|
424 |
<emphasis role="strong">Mandatory:</emphasis> for all the |
|
425 |
other nodes. |
|
426 |
</para> |
|
427 |
|
|
428 |
<para> |
|
429 |
If you have already initialized your cluster you need to join the other |
|
430 |
nodes to it. You can do so by executing the following command on the |
|
431 |
master node: |
|
432 |
<screen> |
|
433 |
gnt-node add <replaceable>NODENAME</replaceable> |
|
434 |
</screen> |
|
435 |
|
|
436 |
The only option is <option>-s</option>, which sets the node's |
|
437 |
secondary ip address for replication purposes, if you are |
|
438 |
using a separate replication network. |
|
439 |
</para> |
|
440 |
</sect2> |
|
441 |
|
|
442 |
</sect1> |
|
443 |
|
|
444 |
<sect1> |
|
445 |
<title>This is it!</title> |
|
446 |
|
|
447 |
<para> |
|
448 |
Now you can follow the admin guide to use your new Ganeti |
|
449 |
cluster. |
|
450 |
</para> |
|
451 |
|
|
452 |
</sect1> |
|
453 |
|
|
454 |
|
|
455 |
</article> |
Also available in: Unified diff