Revision 5d6dd340 docs/installing.sgml
b/docs/installing.sgml | ||
---|---|---|
9 | 9 |
<sect1> |
10 | 10 |
<title>Introduction</title> |
11 | 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. |
|
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. |
|
17 | 19 |
</para> |
18 | 20 |
|
19 | 21 |
<para>This document is divided into two main sections: |
20 | 22 |
|
21 | 23 |
<itemizedlist> |
22 | 24 |
<listitem> |
23 |
<simpara>Installation of the core system and base components</simpara> |
|
25 |
<simpara>Installation of the core system and base |
|
26 |
components</simpara> |
|
24 | 27 |
</listitem> |
25 | 28 |
<listitem> |
26 |
<simpara>Configuration of the environment for Ganeti</simpara> |
|
29 |
<simpara>Configuration of the environment for |
|
30 |
Ganeti</simpara> |
|
27 | 31 |
</listitem> |
28 | 32 |
</itemizedlist> |
29 | 33 |
|
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 |
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.
|
|
34 | 38 |
</para> |
35 | 39 |
|
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 |
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. |
|
40 | 46 |
</para> |
41 | 47 |
|
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. |
|
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. |
|
45 | 52 |
</para> |
46 | 53 |
|
47 | 54 |
</sect1> |
... | ... | |
52 | 59 |
<sect2> |
53 | 60 |
<title>Installing the base system</title> |
54 | 61 |
|
55 |
<para>Mandatory. |
|
56 |
</para> |
|
62 |
<para><emphasis role="strong">Mandatory.</emphasis></para> |
|
57 | 63 |
|
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. |
|
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. |
|
65 | 73 |
</para> |
66 | 74 |
|
67 | 75 |
</sect2> |
... | ... | |
69 | 77 |
<sect2> |
70 | 78 |
<title>Installing Xen</title> |
71 | 79 |
|
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. |
|
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 Xen. |
|
75 | 85 |
</para> |
76 | 86 |
|
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. |
|
87 |
<para> |
|
88 |
Please follow your distribution's recommended way to install |
|
89 |
and set up Xen, or install Xen from the upstream source, if |
|
90 |
you wish, following their manual. |
|
80 | 91 |
</para> |
81 | 92 |
|
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. |
|
93 |
<para> |
|
94 |
For example under Debian 4.0 or 3.1+backports you can install |
|
95 |
the relevant xen-linux-system package, which will pull in both |
|
96 |
the hypervisor and the relevant kernel. On Ubuntu (from Gutsy |
|
97 |
on) the package is called ubuntu-xen-server. |
|
86 | 98 |
</para> |
87 | 99 |
|
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. |
|
100 |
<para> |
|
101 |
After installing Xen you need to reboot into your xenified |
|
102 |
dom0 system. Again on some distributions this might involve |
|
103 |
configuring GRUB appropriately. |
|
91 | 104 |
</para> |
92 | 105 |
|
93 | 106 |
</sect2> |
... | ... | |
95 | 108 |
<sect2> |
96 | 109 |
<title>Installing DRBD</title> |
97 | 110 |
|
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. |
|
111 |
<para> |
|
112 |
Recommended: DRBD is required if you want to use the high |
|
113 |
availability (HA) features of Ganeti, but optional if you |
|
114 |
don't require HA or only run Ganeti on single-node |
|
115 |
clusters. You can upgrade a non-HA cluster to an HA one later, |
|
116 |
but you might need to export and reimport all your instances |
|
117 |
to take advantage of the new features. |
|
103 | 118 |
</para> |
104 | 119 |
|
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. |
|
120 |
<para> |
|
121 |
Now the bad news: unless your distribution already provides it |
|
122 |
installing DRBD might involve recompiling your kernel or |
|
123 |
anyway fiddling with it. Hopefully at least the xenified |
|
124 |
kernel source to start from will be provided. |
|
109 | 125 |
</para> |
110 | 126 |
|
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: |
|
127 |
<para> |
|
128 |
Under Debian you can just install the drbd0.7-module-source |
|
129 |
and drbd0.7-utils packages, and your kernel source, and then |
|
130 |
run module-assistant to compile the drbd0.7 module. The |
|
131 |
following commands should do it: |
|
132 |
</para> |
|
114 | 133 |
|
115 |
<programlisting>
|
|
134 |
<screen>
|
|
116 | 135 |
m-a update |
117 | 136 |
m-a a-i drbd0.7 |
118 |
</programlisting> |
|
119 |
|
|
120 |
should do it for you. |
|
121 |
</para> |
|
137 |
</screen> |
|
122 | 138 |
|
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. |
|
139 |
<para> |
|
140 |
The good news is that you don't need to configure DRBD at all. |
|
141 |
Ganeti will do it for you for every instance you set up. If |
|
142 |
you have the DRBD utils installed and the module in your |
|
143 |
kernel you're fine. Please check that your system is |
|
144 |
configured to load the module at every boot. |
|
127 | 145 |
</para> |
128 | 146 |
|
129 | 147 |
</sect2> |
... | ... | |
144 | 162 |
</para> |
145 | 163 |
|
146 | 164 |
<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> |
|
165 |
In Debian, in order to enable the default Xen behaviour, you |
|
166 |
have to edit <filename>/etc/xen/xend-config.sxp</filename> and |
|
167 |
replace <computeroutput>(network-script |
|
168 |
network-dummy)</computeroutput> with |
|
169 |
<computeroutput>(network-script |
|
170 |
network-bridge)</computeroutput>. The recommended Debian way to |
|
171 |
configure things, though, is to edit your |
|
172 |
<filename>/etc/network/interfaces</filename> file and substitute |
|
173 |
your normal ethernet stanza with something like:</para> |
|
174 |
|
|
175 |
<screen> |
|
154 | 176 |
auto br0 |
155 | 177 |
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 |
|
178 |
address <replaceable>YOUR_IP_ADDRESS</replaceable> |
|
179 |
netmask <replaceable>YOUR_NETMASK</replaceable> |
|
180 |
network <replaceable>YOUR_NETWORK</replaceable> |
|
181 |
broadcast <replaceable>YOUR_BROADCAST_ADDRESS</replaceable> |
|
182 |
gateway <replaceable>YOUR_GATEWAY</replaceable> |
|
183 |
bridge_ports <replaceable>eth0</replaceable> |
|
165 | 184 |
bridge_stp off |
166 | 185 |
bridge_fd 0 |
167 |
</programlisting> |
|
168 |
|
|
169 |
</para> |
|
186 |
</screen> |
|
170 | 187 |
|
171 | 188 |
<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. |
|
189 |
Beware that the default name Ganeti uses is |
|
190 |
<hardware>xen-br0</hardware> (which was used in Xen 2.0) |
|
191 |
while Xen 3.0 uses <hardware>xenbr0</hardware> by |
|
192 |
default. The default bridge your cluster will use for new |
|
193 |
instances can be specified at cluster initialization time. |
|
176 | 194 |
</para> |
177 | 195 |
|
178 | 196 |
</sect2> |
... | ... | |
181 | 199 |
<title>Configuring LVM</title> |
182 | 200 |
|
183 | 201 |
<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> |
|
202 |
If you haven't configured your LVM volume group at install |
|
203 |
time you need to do it before trying to initialize the Ganeti |
|
204 |
cluster. This is done by formatting the devices/partitions you |
|
205 |
want to use for it and then adding them to the relevant volume |
|
206 |
group: |
|
207 |
</para> |
|
208 |
|
|
209 |
<screen> |
|
190 | 210 |
pvcreate /dev/sda4 |
191 | 211 |
pvcreate /dev/sdb |
192 | 212 |
pvcreate /dev/sdc1 |
193 | 213 |
vgcreate xenvg /dev/sda4 /dev/sdb /dev/sdc1 |
194 |
</programlisting> |
|
195 |
</para> |
|
214 |
</screen> |
|
196 | 215 |
|
197 | 216 |
<para> |
198 |
If you want to add a device later you can do so with the
|
|
217 |
If you want to add a device later you can do so with the |
|
199 | 218 |
<citerefentry><refentrytitle>vgextend</refentrytitle> |
200 |
<manvolnum>8</manvolnum></citerefentry> command. |
|
201 |
<programlisting> |
|
219 |
<manvolnum>8</manvolnum></citerefentry> command: |
|
220 |
</para> |
|
221 |
|
|
222 |
<screen> |
|
202 | 223 |
pvcreate /dev/sdd |
203 | 224 |
vgextend xenvg /dev/sdd |
204 |
</programlisting> |
|
205 |
</para> |
|
225 |
</screen> |
|
206 | 226 |
|
207 | 227 |
<para> |
208 | 228 |
As said before you may choose a different name for the volume group, |
... | ... | |
213 | 233 |
<sect2> |
214 | 234 |
<title>Installing Ganeti</title> |
215 | 235 |
|
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: |
|
236 |
<para>It's now time to install the Ganeti software itself if you |
|
237 |
haven't done it yet. You can do it from source, with the usual |
|
238 |
steps (note that the <option>localstatedir</option> options must |
|
239 |
be set to <filename class="directory">/var</filename>): |
|
218 | 240 |
|
219 |
<programlisting>
|
|
220 |
./configure |
|
241 |
<screen>
|
|
242 |
./configure --localstatedir=/var
|
|
221 | 243 |
make |
222 | 244 |
make install |
223 |
</programlisting>
|
|
245 |
</screen>
|
|
224 | 246 |
|
225 | 247 |
or you can install the package relevant to your distribution, for |
226 | 248 |
example in Debian/Ubuntu: |
227 | 249 |
|
228 |
<programlisting>
|
|
250 |
<screen>
|
|
229 | 251 |
dpkg -i ganeti_VERSION_all.deb |
230 |
</programlisting>
|
|
252 |
</screen>
|
|
231 | 253 |
|
232 | 254 |
or, if you have a source repository that holds the Ganeti software: |
233 | 255 |
|
234 |
<programlisting>
|
|
256 |
<screen>
|
|
235 | 257 |
apt-get install ganeti |
236 |
</programlisting>
|
|
258 |
</screen>
|
|
237 | 259 |
</para> |
238 | 260 |
|
239 | 261 |
</sect2> |
... | ... | |
251 | 273 |
<sect2> |
252 | 274 |
<title>Initializing the cluster</title> |
253 | 275 |
|
254 |
<para>Mandatory: only on one node per cluster.
|
|
255 |
</para> |
|
276 |
<para><emphasis role="strong">Mandatory:</emphasis> only on one
|
|
277 |
node per cluster.</para>
|
|
256 | 278 |
|
257 | 279 |
|
258 | 280 |
<para>The last step is to initialize the cluster. After you've repeated |
259 | 281 |
the above process or some semi-automatic form of it on all of your |
260 | 282 |
nodes choose one as the master, and execute: |
283 |
</para> |
|
261 | 284 |
|
262 |
<programlisting>
|
|
263 |
gnt-cluster init CLUSTERNAME
|
|
264 |
</programlisting>
|
|
285 |
<screen>
|
|
286 |
gnt-cluster init <replaceable>CLUSTERNAME</replaceable>
|
|
287 |
</screen>
|
|
265 | 288 |
|
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. |
|
289 |
<para> |
|
290 |
Options you can pass to <command>gnt-cluster init</command> |
|
291 |
include the default bridge name (<option>-b</option>), the |
|
292 |
cluster-wide name for the volume group (<option>-g</option>) |
|
293 |
and the secondary ip address for the initial node should you |
|
294 |
wish to keep the data replication network separate. Invoke it |
|
295 |
with <option>--help</option> to see all the possibilities. |
|
271 | 296 |
</para> |
272 | 297 |
|
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. |
|
298 |
<para> |
|
299 |
Note that the cluster name must exist in DNS. You must choose |
|
300 |
a name different from any of the nodes names for a multi-node |
|
301 |
cluster. In general the best choice is to have a unique name |
|
302 |
for a cluster, even if it consists of only one machine. |
|
277 | 303 |
</para> |
278 | 304 |
</sect2> |
279 | 305 |
|
280 | 306 |
<sect2> |
281 | 307 |
<title>Joining the nodes to the cluster.</title> |
282 | 308 |
|
283 |
<para>Mandatory: for all the other nodes. |
|
309 |
<para> |
|
310 |
<emphasis role="strong">Mandatory:</emphasis> for all the |
|
311 |
other nodes. |
|
284 | 312 |
</para> |
285 | 313 |
|
286 | 314 |
<para> |
287 | 315 |
If you have already initialized your cluster you need to join the other |
288 | 316 |
nodes to it. You can do so by executing the following command on the |
289 | 317 |
master node: |
290 |
<programlisting>
|
|
291 |
gnt-node add NODENAME
|
|
292 |
</programlisting>
|
|
318 |
<screen>
|
|
319 |
gnt-node add <replaceable>NODENAME</replaceable>
|
|
320 |
</screen>
|
|
293 | 321 |
|
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. |
|
322 |
The only option is <option>-s</option>, which sets the node's |
|
323 |
secondary ip address for replication purposes, if you are |
|
324 |
using a separate replication network. |
|
296 | 325 |
</para> |
297 | 326 |
</sect2> |
298 | 327 |
|
... | ... | |
301 | 330 |
<sect1> |
302 | 331 |
<title>This is it!</title> |
303 | 332 |
|
304 |
<para>Now you can follow the "admin guide" to use your new Ganeti cluster. |
|
333 |
<para> |
|
334 |
Now you can follow the admin guide to use your new Ganeti |
|
335 |
cluster. |
|
305 | 336 |
</para> |
306 | 337 |
|
307 | 338 |
</sect1> |
Also available in: Unified diff