Statistics
| Branch: | Tag: | Revision:

root / INSTALL @ eb9d2acc

History | View | Annotate | Download (10.3 kB)

1
Ganeti quick installation guide
2
===============================
3

    
4
Please note that a more detailed installation procedure is described in
5
the :doc:`install`. Refer to it if you are setting up Ganeti the first time.
6
This quick installation guide is mainly meant as reference for experienced
7
users. A glossary of terms can be found in the :doc:`glossary`.
8

    
9

    
10
Software Requirements
11
---------------------
12

    
13
.. highlight:: shell-example
14

    
15
Before installing, please verify that you have the following programs:
16

    
17
- `Xen Hypervisor <http://www.xen.org/>`_, version 3.0 or above, if
18
  running on Xen
19
- `KVM Hypervisor <http://www.linux-kvm.org>`_, version 72 or above, if
20
  running on KVM. In order to use advanced features, such as live
21
  migration, virtio, etc, an even newer version is recommended (qemu-kvm
22
  versions 0.11.X and above have shown good behavior).
23
- `DRBD <http://www.drbd.org/>`_, kernel module and userspace utils,
24
  version 8.0.7 or above; note that Ganeti doesn't yet support version 8.4
25
- `RBD <http://ceph.newdream.net/>`_, kernel modules
26
  (``rbd.ko``/``libceph.ko``) and userspace utils (``ceph-common``)
27
- `LVM2 <http://sourceware.org/lvm2/>`_
28
- `OpenSSH <http://www.openssh.com/portable.html>`_
29
- `bridge utilities <http://www.linuxfoundation.org/en/Net:Bridge>`_
30
- `iproute2 <http://www.linuxfoundation.org/en/Net:Iproute2>`_
31
- `arping <http://www.skbuff.net/iputils/>`_ (part of iputils)
32
- `ndisc6 <http://www.remlab.net/ndisc6/>`_ (if using IPv6)
33
- `Python <http://www.python.org/>`_, version 2.6 or above, not 3.0
34
- `Python OpenSSL bindings <http://pyopenssl.sourceforge.net/>`_
35
- `simplejson Python module <http://code.google.com/p/simplejson/>`_
36
- `pyparsing Python module <http://pyparsing.wikispaces.com/>`_, version
37
  1.4.6 or above
38
- `pyinotify Python module <https://github.com/seb-m/pyinotify>`_
39
- `PycURL Python module <http://pycurl.sourceforge.net/>`_
40
- `socat <http://www.dest-unreach.org/socat/>`_, see :ref:`note
41
  <socat-note>` below
42
- `Paramiko <http://www.lag.net/paramiko/>`_, if you want to use
43
  ``ganeti-listrunner``
44
- `affinity Python module <http://pypi.python.org/pypi/affinity/0.1.0>`_,
45
  optional python package for supporting CPU pinning under KVM
46
- `qemu-img <http://qemu.org/>`_, if you want to use ``ovfconverter``
47
- `fping <http://fping.sourceforge.net/>`_
48
- `Python IP address manipulation library
49
  <http://code.google.com/p/ipaddr-py/>`_
50
- `Bitarray Python library <http://pypi.python.org/pypi/bitarray/>`_
51
- `GNU Make <http://www.gnu.org/software/make/>`_
52
- `GNU M4 <http://www.gnu.org/software/m4/>`_
53

    
54
These programs are supplied as part of most Linux distributions, so
55
usually they can be installed via the standard package manager. Also
56
many of them will already be installed on a standard machine. On
57
Debian/Ubuntu, you can use this command line to install all required
58
packages, except for RBD, DRBD and Xen::
59

    
60
  $ apt-get install lvm2 ssh bridge-utils iproute iputils-arping make m4 \
61
                    ndisc6 python python-openssl openssl \
62
                    python-pyparsing python-simplejson python-bitarray \
63
                    python-pyinotify python-pycurl python-ipaddr socat fping
64

    
65
Note that the previous instructions don't install optional packages.
66
To install the optional package, run the following line.::
67

    
68
  $ apt-get install python-paramiko python-affinity qemu-utils
69

    
70
If some of the python packages are not available in your system,
71
you can try installing them using ``easy_install`` command.
72
For example::
73

    
74
  $ apt-get install python-setuptools python-dev
75
  $ cd / && easy_install \
76
            affinity \
77
            bitarray \
78
            ipaddr
79

    
80

    
81
On Fedora to install all required packages except RBD, DRBD and Xen::
82

    
83
  $ yum install openssh openssh-clients bridge-utils iproute ndisc6 make \
84
                pyOpenSSL pyparsing python-simplejson python-inotify \
85
                python-lxm socat fping python-bitarray python-ipaddr
86

    
87
For optional packages use the command::
88

    
89
  $ yum install python-paramiko python-affinity qemu-img
90

    
91
If you want to build from source, please see doc/devnotes.rst for more
92
dependencies.
93

    
94
.. _socat-note:
95
.. note::
96
  Ganeti's import/export functionality uses ``socat`` with OpenSSL for
97
  transferring data between nodes. By default, OpenSSL 0.9.8 and above
98
  employ transparent compression of all data using zlib if supported by
99
  both sides of a connection. In cases where a lot of data is
100
  transferred, this can lead to an increased CPU usage. Additionally,
101
  Ganeti already compresses all data using ``gzip`` where it makes sense
102
  (for inter-cluster instance moves).
103

    
104
  To remedey this situation, patches implementing a new ``socat`` option
105
  for disabling OpenSSL compression have been contributed and will
106
  likely be included in the next feature release. Until then, users or
107
  distributions need to apply the patches on their own.
108

    
109
  Ganeti will use the option if it's detected by the ``configure``
110
  script; auto-detection can be disabled by explicitly passing
111
  ``--enable-socat-compress`` (use the option to disable compression) or
112
  ``--disable-socat-compress`` (don't use the option).
113

    
114
  The patches and more information can be found on
115
  http://www.dest-unreach.org/socat/contrib/socat-opensslcompress.html.
116

    
117
Haskell requirements
118
~~~~~~~~~~~~~~~~~~~~
119

    
120
Starting with Ganeti 2.7, the Haskell GHC compiler and a few base
121
libraries are required in order to build Ganeti (but not to run and
122
deploy Ganeti on production machines). More specifically:
123

    
124
- `GHC <http://www.haskell.org/ghc/>`_ version 7 or higher
125
- or even better, `The Haskell Platform
126
  <http://hackage.haskell.org/platform/>`_ which gives you a simple way
127
  to bootstrap Haskell
128
- `json <http://hackage.haskell.org/package/json>`_, a JSON library
129
- `network <http://hackage.haskell.org/package/network>`_, a basic
130
  network library
131
- `parallel <http://hackage.haskell.org/package/parallel>`_, a parallel
132
  programming library (note: tested with up to version 3.x)
133
- `bytestring <http://hackage.haskell.org/package/bytestring>`_ and
134
  `utf8-string <http://hackage.haskell.org/package/utf8-string>`_
135
  libraries; these usually come with the GHC compiler
136
- `text <http://hackage.haskell.org/package/text>`_
137
- `deepseq <http://hackage.haskell.org/package/deepseq>`_
138
- `curl <http://hackage.haskell.org/package/curl>`_, tested with
139
  versions 1.3.4 and above
140
- `hslogger <http://software.complete.org/hslogger>`_, version 1.1 and
141
  above.
142
- `hinotify <http://hackage.haskell.org/package/hinotify>`_, tested with
143
  version 0.3.2
144
- `Crypto <http://hackage.haskell.org/package/Crypto>`_, tested with
145
  version 4.2.4
146
- `regex-pcre <http://hackage.haskell.org/package/regex-pcre>`_,
147
  bindings for the ``pcre`` library
148
- `attoparsec <http://hackage.haskell.org/package/attoparsec>`_
149
- `vector <http://hackage.haskell.org/package/vector>`_
150
- `process <http://hackage.haskell.org/package/process>`_, version 1.0.1.1 and
151
  above
152
- `lifted-base <http://hackage.haskell.org/package/lifted-base>`_,
153
  version 0.1.1 and above.
154
- `lens <http://hackage.haskell.org/package/lens>`_,
155
  version 3.0 and above.
156

    
157
Some of these are also available as package in Debian/Ubuntu::
158

    
159
  $ apt-get install ghc libghc-json-dev libghc-network-dev \
160
                    libghc-parallel-dev libghc-deepseq-dev \
161
                    libghc-utf8-string-dev libghc-curl-dev \
162
                    libghc-hslogger-dev \
163
                    libghc-crypto-dev libghc-text-dev \
164
                    libghc-hinotify-dev libghc-regex-pcre-dev \
165
                    libpcre3-dev \
166
                    libghc-attoparsec-dev libghc-vector-dev \
167
                    libghc6-zlib-dev
168

    
169
In Fedora, some of them are available via packages as well::
170

    
171
  $ yum install ghc ghc-json-devel ghc-network-devel \
172
                    ghc-parallel-devel ghc-deepseq-devel \
173
                    ghc-hslogger-devel ghc-text-devel \
174
                    ghc-regex-pcre-devel
175

    
176
The most recent Fedora doesn't provide ``crypto``, ``inotify``. So these
177
need to be installed using ``cabal``.
178

    
179
If using a distribution which does not provide these libraries, first
180
install the Haskell platform. You can also install ``cabal`` manually::
181

    
182
  $ apt-get install cabal-install
183
  $ cabal update
184

    
185
Then install the additional native libraries::
186

    
187
  $ apt-get install libpcre3-dev libcurl4-openssl-dev
188

    
189
And finally the libraries required for building the packages (only the
190
ones not available in your distribution packages) via ``cabal``::
191

    
192
  $ cabal install json network parallel utf8-string curl hslogger \
193
                  Crypto text hinotify==0.3.2 regex-pcre \
194
                  attoparsec vector base64-bytestring lens
195

    
196
Haskell optional features
197
~~~~~~~~~~~~~~~~~~~~~~~~~
198

    
199
Optionally, more functionality can be enabled if your build machine has
200
a few more Haskell libraries enabled: the ``ganeti-confd`` daemon
201
(``--enable-confd``) and the monitoring daemon (``--enable-mond``).
202
The extra dependency for these is:
203

    
204
- `snap-server` <http://hackage.haskell.org/package/snap-server>`_, version
205
  0.8.1 and above.
206

    
207
This library is available in Debian Wheezy, so you can use either apt::
208

    
209
  $ apt-get install libghc-snap-server-dev
210

    
211
or ``cabal``::
212

    
213
  $ cabal install snap-server
214

    
215
to install it.
216

    
217
.. _cabal-note:
218
.. note::
219
  If one of the cabal packages fails to install due to unfulfilled
220
  dependencies, you can try enabling symlinks in ``~/.cabal/config``.
221

    
222
  Make sure that your ``~/.cabal/bin`` directory (or whatever else
223
  is defined as ``bindir``) is in your ``PATH``.
224

    
225
Installation of the software
226
----------------------------
227

    
228
To install, simply run the following command::
229

    
230
  $ ./configure --localstatedir=/var --sysconfdir=/etc && \
231
    make && \
232
    make install
233

    
234
This will install the software under ``/usr/local``. You then need to
235
copy ``doc/examples/ganeti.initd`` to ``/etc/init.d/ganeti`` and
236
integrate it into your boot sequence (``chkconfig``, ``update-rc.d``,
237
etc.). Also, Ganeti uses symbolic links in the sysconfdir to determine,
238
which of potentially many installed versions currently is used. If these
239
symbolic links should be added by the install as well, add the
240
option ``--enable-symlinks`` to the ``configure`` call.
241

    
242

    
243
Cluster initialisation
244
----------------------
245

    
246
Before initialising the cluster, on each node you need to create the
247
following directories:
248

    
249
- ``/etc/ganeti``
250
- ``/var/lib/ganeti``
251
- ``/var/log/ganeti``
252
- ``/srv/ganeti``
253
- ``/srv/ganeti/os``
254
- ``/srv/ganeti/export``
255

    
256
After this, use ``gnt-cluster init``.
257

    
258
.. vim: set textwidth=72 syntax=rst :
259
.. Local Variables:
260
.. mode: rst
261
.. fill-column: 72
262
.. End: