Statistics
| Branch: | Tag: | Revision:

root / INSTALL @ 69809ae3

History | View | Annotate | Download (11.4 kB)

1 c27ba1cc Michael Hanselmann
Ganeti quick installation guide
2 c27ba1cc Michael Hanselmann
===============================
3 4096472d Iustin Pop
4 c27ba1cc Michael Hanselmann
Please note that a more detailed installation procedure is described in
5 3913eaa7 Thomas Thrainer
the :doc:`install`. Refer to it if you are setting up Ganeti the first time.
6 3913eaa7 Thomas Thrainer
This quick installation guide is mainly meant as reference for experienced
7 3913eaa7 Thomas Thrainer
users. A glossary of terms can be found in the :doc:`glossary`.
8 4096472d Iustin Pop
9 4096472d Iustin Pop
10 bd785ecd Michael Hanselmann
Software Requirements
11 c27ba1cc Michael Hanselmann
---------------------
12 a8083063 Iustin Pop
13 727ee1ec Iustin Pop
.. highlight:: shell-example
14 727ee1ec Iustin Pop
15 a8083063 Iustin Pop
Before installing, please verify that you have the following programs:
16 c27ba1cc Michael Hanselmann
17 c4b2b2e2 Guido Trotter
- `Xen Hypervisor <http://www.xen.org/>`_, version 3.0 or above, if
18 c4b2b2e2 Guido Trotter
  running on Xen
19 c4b2b2e2 Guido Trotter
- `KVM Hypervisor <http://www.linux-kvm.org>`_, version 72 or above, if
20 c4b2b2e2 Guido Trotter
  running on KVM. In order to use advanced features, such as live
21 c4b2b2e2 Guido Trotter
  migration, virtio, etc, an even newer version is recommended (qemu-kvm
22 727ee1ec Iustin Pop
  versions 0.11.X and above have shown good behavior).
23 c27ba1cc Michael Hanselmann
- `DRBD <http://www.drbd.org/>`_, kernel module and userspace utils,
24 727ee1ec Iustin Pop
  version 8.0.7 or above; note that Ganeti doesn't yet support version 8.4
25 727ee1ec Iustin Pop
- `RBD <http://ceph.newdream.net/>`_, kernel modules
26 727ee1ec Iustin Pop
  (``rbd.ko``/``libceph.ko``) and userspace utils (``ceph-common``)
27 c27ba1cc Michael Hanselmann
- `LVM2 <http://sourceware.org/lvm2/>`_
28 c27ba1cc Michael Hanselmann
- `OpenSSH <http://www.openssh.com/portable.html>`_
29 c27ba1cc Michael Hanselmann
- `bridge utilities <http://www.linuxfoundation.org/en/Net:Bridge>`_
30 c27ba1cc Michael Hanselmann
- `iproute2 <http://www.linuxfoundation.org/en/Net:Iproute2>`_
31 c27ba1cc Michael Hanselmann
- `arping <http://www.skbuff.net/iputils/>`_ (part of iputils)
32 69affe73 Manuel Franceschini
- `ndisc6 <http://www.remlab.net/ndisc6/>`_ (if using IPv6)
33 777ea2c6 Guido Trotter
- `Python <http://www.python.org/>`_, version 2.6 or above, not 3.0
34 c27ba1cc Michael Hanselmann
- `Python OpenSSL bindings <http://pyopenssl.sourceforge.net/>`_
35 c27ba1cc Michael Hanselmann
- `simplejson Python module <http://code.google.com/p/simplejson/>`_
36 7578ab0a Michael Hanselmann
- `pyparsing Python module <http://pyparsing.wikispaces.com/>`_, version
37 7578ab0a Michael Hanselmann
  1.4.6 or above
38 be505f2c Michael Hanselmann
- `pyinotify Python module <https://github.com/seb-m/pyinotify>`_
39 2a7c3583 Michael Hanselmann
- `PycURL Python module <http://pycurl.sourceforge.net/>`_
40 e90739d6 Michael Hanselmann
- `socat <http://www.dest-unreach.org/socat/>`_, see :ref:`note
41 e90739d6 Michael Hanselmann
  <socat-note>` below
42 78062de9 Michael Hanselmann
- `Paramiko <http://www.lag.net/paramiko/>`_, if you want to use
43 78062de9 Michael Hanselmann
  ``ganeti-listrunner``
44 0cd2fe76 Tsachy Shacham
- `affinity Python module <http://pypi.python.org/pypi/affinity/0.1.0>`_,
45 0cd2fe76 Tsachy Shacham
  optional python package for supporting CPU pinning under KVM
46 727ee1ec Iustin Pop
- `qemu-img <http://qemu.org/>`_, if you want to use ``ovfconverter``
47 d9eefcfa Andrea Spadaccini
- `fping <http://fping.sourceforge.net/>`_
48 0a09b080 Michael Hanselmann
- `Python IP address manipulation library
49 0a09b080 Michael Hanselmann
  <http://code.google.com/p/ipaddr-py/>`_
50 0a09b080 Michael Hanselmann
- `Bitarray Python library <http://pypi.python.org/pypi/bitarray/>`_
51 bae473ed Michele Tartara
- `GNU Make <http://www.gnu.org/software/make/>`_
52 bd341bff Thomas Thrainer
- `GNU M4 <http://www.gnu.org/software/m4/>`_
53 c27ba1cc Michael Hanselmann
54 c27ba1cc Michael Hanselmann
These programs are supplied as part of most Linux distributions, so
55 c27ba1cc Michael Hanselmann
usually they can be installed via the standard package manager. Also
56 c27ba1cc Michael Hanselmann
many of them will already be installed on a standard machine. On
57 c27ba1cc Michael Hanselmann
Debian/Ubuntu, you can use this command line to install all required
58 7ed400f0 Stratos Psomadakis
packages, except for RBD, DRBD and Xen::
59 c27ba1cc Michael Hanselmann
60 bd341bff Thomas Thrainer
  $ apt-get install lvm2 ssh bridge-utils iproute iputils-arping make m4 \
61 bbc50106 Klaus Aehlig
                    ndisc6 python python-openssl openssl \
62 db0e97f0 Guido Trotter
                    python-pyparsing python-simplejson python-bitarray \
63 db0e97f0 Guido Trotter
                    python-pyinotify python-pycurl python-ipaddr socat fping
64 db0e97f0 Guido Trotter
65 bbc50106 Klaus Aehlig
For older distributions (eg. Debian  Squeeze) the package names are
66 bbc50106 Klaus Aehlig
different.::
67 db0e97f0 Guido Trotter
68 bae473ed Michele Tartara
  $ apt-get install lvm2 ssh bridge-utils iproute iputils-arping make \
69 bbc50106 Klaus Aehlig
                    ndisc6 python python-pyopenssl openssl \
70 db0e97f0 Guido Trotter
                    python-pyparsing python-simplejson python-bitarray \
71 db0e97f0 Guido Trotter
                    python-pyinotify python-pycurl python-ipaddr socat fping
72 fc6075dd Agata Murawska
73 bbc50106 Klaus Aehlig
If bitarray is missing it can be installed from easy-install::
74 bbc50106 Klaus Aehlig
75 bbc50106 Klaus Aehlig
  $ easy_install bitarray
76 bbc50106 Klaus Aehlig
77 39e169c9 Helga Velroyen
Note that the previous instructions don't install optional packages.
78 39e169c9 Helga Velroyen
To install the optional package, run the following line.::
79 fc6075dd Agata Murawska
80 bd341bff Thomas Thrainer
  $ apt-get install python-paramiko python-affinity qemu-utils
81 fc6075dd Agata Murawska
82 fc6075dd Agata Murawska
If some of the python packages are not available in your system,
83 fc6075dd Agata Murawska
you can try installing them using ``easy_install`` command.
84 fc6075dd Agata Murawska
For example::
85 fc6075dd Agata Murawska
86 958a800a Michele Tartara
  $ apt-get install python-setuptools python-dev
87 bd341bff Thomas Thrainer
  $ cd / && easy_install \
88 8d53117b Michele Tartara
            affinity \
89 8d53117b Michele Tartara
            bitarray \
90 0f4d34a8 Michele Tartara
            ipaddr
91 fc6075dd Agata Murawska
92 c27ba1cc Michael Hanselmann
93 aa9f166a René Nussbaumer
On Fedora to install all required packages except RBD, DRBD and Xen::
94 aa9f166a René Nussbaumer
95 bae473ed Michele Tartara
  $ yum install openssh openssh-clients bridge-utils iproute ndisc6 make \
96 aa9f166a René Nussbaumer
                pyOpenSSL pyparsing python-simplejson python-inotify \
97 8d53117b Michele Tartara
                python-lxm socat fping python-bitarray python-ipaddr
98 fc6075dd Agata Murawska
99 fc6075dd Agata Murawska
For optional packages use the command::
100 aa9f166a René Nussbaumer
101 fc6075dd Agata Murawska
  $ yum install python-paramiko python-affinity qemu-img
102 aa9f166a René Nussbaumer
103 727ee1ec Iustin Pop
If you want to build from source, please see doc/devnotes.rst for more
104 727ee1ec Iustin Pop
dependencies.
105 727ee1ec Iustin Pop
106 727ee1ec Iustin Pop
.. _socat-note:
107 727ee1ec Iustin Pop
.. note::
108 727ee1ec Iustin Pop
  Ganeti's import/export functionality uses ``socat`` with OpenSSL for
109 727ee1ec Iustin Pop
  transferring data between nodes. By default, OpenSSL 0.9.8 and above
110 727ee1ec Iustin Pop
  employ transparent compression of all data using zlib if supported by
111 727ee1ec Iustin Pop
  both sides of a connection. In cases where a lot of data is
112 727ee1ec Iustin Pop
  transferred, this can lead to an increased CPU usage. Additionally,
113 727ee1ec Iustin Pop
  Ganeti already compresses all data using ``gzip`` where it makes sense
114 727ee1ec Iustin Pop
  (for inter-cluster instance moves).
115 727ee1ec Iustin Pop
116 727ee1ec Iustin Pop
  To remedey this situation, patches implementing a new ``socat`` option
117 727ee1ec Iustin Pop
  for disabling OpenSSL compression have been contributed and will
118 727ee1ec Iustin Pop
  likely be included in the next feature release. Until then, users or
119 727ee1ec Iustin Pop
  distributions need to apply the patches on their own.
120 727ee1ec Iustin Pop
121 727ee1ec Iustin Pop
  Ganeti will use the option if it's detected by the ``configure``
122 2ed0e208 Iustin Pop
  script; auto-detection can be disabled by explicitly passing
123 727ee1ec Iustin Pop
  ``--enable-socat-compress`` (use the option to disable compression) or
124 727ee1ec Iustin Pop
  ``--disable-socat-compress`` (don't use the option).
125 727ee1ec Iustin Pop
126 727ee1ec Iustin Pop
  The patches and more information can be found on
127 727ee1ec Iustin Pop
  http://www.dest-unreach.org/socat/contrib/socat-opensslcompress.html.
128 727ee1ec Iustin Pop
129 727ee1ec Iustin Pop
Haskell requirements
130 727ee1ec Iustin Pop
~~~~~~~~~~~~~~~~~~~~
131 727ee1ec Iustin Pop
132 21a5e56c Iustin Pop
Starting with Ganeti 2.7, the Haskell GHC compiler and a few base
133 21a5e56c Iustin Pop
libraries are required in order to build Ganeti (but not to run and
134 21a5e56c Iustin Pop
deploy Ganeti on production machines). More specifically:
135 77a180f6 Iustin Pop
136 7345b69b Iustin Pop
- `GHC <http://www.haskell.org/ghc/>`_ version 6.12 or higher
137 77a180f6 Iustin Pop
- or even better, `The Haskell Platform
138 77a180f6 Iustin Pop
  <http://hackage.haskell.org/platform/>`_ which gives you a simple way
139 77a180f6 Iustin Pop
  to bootstrap Haskell
140 77a180f6 Iustin Pop
- `json <http://hackage.haskell.org/package/json>`_, a JSON library
141 77a180f6 Iustin Pop
- `network <http://hackage.haskell.org/package/network>`_, a basic
142 77a180f6 Iustin Pop
  network library
143 ee041788 Iustin Pop
- `parallel <http://hackage.haskell.org/package/parallel>`_, a parallel
144 ee041788 Iustin Pop
  programming library (note: tested with up to version 3.x)
145 e821050d Iustin Pop
- `bytestring <http://hackage.haskell.org/package/bytestring>`_ and
146 e821050d Iustin Pop
  `utf8-string <http://hackage.haskell.org/package/utf8-string>`_
147 e821050d Iustin Pop
  libraries; these usually come with the GHC compiler
148 5a5a64c6 Petr Pudlak
- `text <http://hackage.haskell.org/package/text>`_
149 21a5e56c Iustin Pop
- `deepseq <http://hackage.haskell.org/package/deepseq>`_
150 1ca709c1 Iustin Pop
- `curl <http://hackage.haskell.org/package/curl>`_, tested with
151 1ca709c1 Iustin Pop
  versions 1.3.4 and above
152 f7b9f4c1 Klaus Aehlig
- `hslogger <http://software.complete.org/hslogger>`_, version 1.1 and
153 f7b9f4c1 Klaus Aehlig
  above (note that Debian Squeeze only has version 1.0.9)
154 5a5a64c6 Petr Pudlak
- `hinotify <http://hackage.haskell.org/package/hinotify>`_, tested with
155 5a5a64c6 Petr Pudlak
  version 0.3.2
156 5a5a64c6 Petr Pudlak
- `Crypto <http://hackage.haskell.org/package/Crypto>`_, tested with
157 5a5a64c6 Petr Pudlak
  version 4.2.4
158 5a5a64c6 Petr Pudlak
- `regex-pcre <http://hackage.haskell.org/package/regex-pcre>`_,
159 5a5a64c6 Petr Pudlak
  bindings for the ``pcre`` library
160 5a5a64c6 Petr Pudlak
- `attoparsec <http://hackage.haskell.org/package/attoparsec>`_
161 5a5a64c6 Petr Pudlak
- `vector <http://hackage.haskell.org/package/vector>`_
162 5a5a64c6 Petr Pudlak
- `process <http://hackage.haskell.org/package/process>`_, version 1.0.1.1 and
163 5a5a64c6 Petr Pudlak
  above
164 e1b9b5c6 Petr Pudlak
- `lifted-base <http://hackage.haskell.org/package/lifted-base>`_,
165 e1b9b5c6 Petr Pudlak
  version 0.1.1 and above.
166 77a180f6 Iustin Pop
167 8a65c02b Iustin Pop
Some of these are also available as package in Debian/Ubuntu::
168 77a180f6 Iustin Pop
169 21a5e56c Iustin Pop
  $ apt-get install ghc libghc-json-dev libghc-network-dev \
170 1ca709c1 Iustin Pop
                    libghc-parallel-dev libghc-deepseq-dev \
171 f7b9f4c1 Klaus Aehlig
                    libghc-utf8-string-dev libghc-curl-dev \
172 5a5a64c6 Petr Pudlak
                    libghc-hslogger-dev \
173 5a5a64c6 Petr Pudlak
                    libghc-crypto-dev libghc-text-dev \
174 5a5a64c6 Petr Pudlak
                    libghc-hinotify-dev libghc-regex-pcre-dev \
175 5a5a64c6 Petr Pudlak
                    libpcre3-dev \
176 39e169c9 Helga Velroyen
                    libghc-attoparsec-dev libghc-vector-dev \
177 39e169c9 Helga Velroyen
                    libghc6-zlib-dev
178 aa9f166a René Nussbaumer
179 bbc50106 Klaus Aehlig
Or in older versions of these distributions (using GHC 6.x)::
180 bbc50106 Klaus Aehlig
181 bbc50106 Klaus Aehlig
  $ apt-get install ghc6 libghc6-json-dev libghc6-network-dev \
182 bbc50106 Klaus Aehlig
                    libghc6-parallel-dev libghc6-deepseq-dev \
183 bbc50106 Klaus Aehlig
                    libghc6-curl-dev
184 bbc50106 Klaus Aehlig
185 1ca709c1 Iustin Pop
In Fedora, some of them are available via packages as well::
186 ee041788 Iustin Pop
187 21a5e56c Iustin Pop
  $ yum install ghc ghc-json-devel ghc-network-devel \
188 5a5a64c6 Petr Pudlak
                    ghc-parallel-devel ghc-deepseq-devel \
189 5a5a64c6 Petr Pudlak
                    ghc-hslogger-devel ghc-text-devel \
190 5a5a64c6 Petr Pudlak
                    ghc-regex-pcre-devel
191 ee041788 Iustin Pop
192 5a5a64c6 Petr Pudlak
The most recent Fedora doesn't provide ``crypto``, ``inotify``. So these
193 5a5a64c6 Petr Pudlak
need to be installed using ``cabal``.
194 5a5a64c6 Petr Pudlak
195 5a5a64c6 Petr Pudlak
If using a distribution which does not provide these libraries, first
196 5a5a64c6 Petr Pudlak
install the Haskell platform. You can also install ``cabal`` manually::
197 fc6075dd Agata Murawska
198 fc6075dd Agata Murawska
  $ apt-get install cabal-install
199 09bf829d Michele Tartara
  $ cabal update
200 fc6075dd Agata Murawska
201 5a5a64c6 Petr Pudlak
Then install the additional native libraries::
202 5a5a64c6 Petr Pudlak
203 5a5a64c6 Petr Pudlak
  $ apt-get install libpcre3-dev libcurl4-openssl-dev
204 5a5a64c6 Petr Pudlak
205 5a5a64c6 Petr Pudlak
And finally the libraries required for building the packages (only the
206 5a5a64c6 Petr Pudlak
ones not available in your distribution packages) via ``cabal``::
207 727ee1ec Iustin Pop
208 5a5a64c6 Petr Pudlak
  $ cabal install json network parallel utf8-string curl hslogger \
209 5a5a64c6 Petr Pudlak
                  Crypto text hinotify==0.3.2 regex-pcre \
210 39e169c9 Helga Velroyen
                  attoparsec vector base64-bytestring
211 5cd0d9c0 Iustin Pop
212 21a5e56c Iustin Pop
Haskell optional features
213 21a5e56c Iustin Pop
~~~~~~~~~~~~~~~~~~~~~~~~~
214 21a5e56c Iustin Pop
215 21a5e56c Iustin Pop
Optionally, more functionality can be enabled if your build machine has
216 5a5a64c6 Petr Pudlak
a few more Haskell libraries enabled: the ``ganeti-confd`` daemon
217 5a5a64c6 Petr Pudlak
(``--enable-confd``) and the monitoring daemon (``--enable-mond``).
218 5a5a64c6 Petr Pudlak
The extra dependency for these is:
219 21a5e56c Iustin Pop
220 2fa8f963 Michele Tartara
- `snap-server` <http://hackage.haskell.org/package/snap-server>`_, version
221 2fa8f963 Michele Tartara
  0.8.1 and above.
222 e90739d6 Michael Hanselmann
223 5a5a64c6 Petr Pudlak
This library is available in Debian Wheezy (but not in Squeeze), so you
224 25f8d59c Michele Tartara
can use either apt::
225 e90739d6 Michael Hanselmann
226 5a5a64c6 Petr Pudlak
  $ apt-get install libghc-snap-server-dev
227 e90739d6 Michael Hanselmann
228 5a5a64c6 Petr Pudlak
or ``cabal``::
229 727ee1ec Iustin Pop
230 5a5a64c6 Petr Pudlak
  $ cabal install snap-server
231 e90739d6 Michael Hanselmann
232 5a5a64c6 Petr Pudlak
to install it.
233 bd785ecd Michael Hanselmann
234 2fa8f963 Michele Tartara
In case you still use ghc-6.12, note that ``cabal`` would automatically try to
235 2fa8f963 Michele Tartara
install newer versions of some of the libraries snap-server depends on, that
236 2fa8f963 Michele Tartara
cannot be compiled with ghc-6.12, so you have to install snap-server on its
237 bd341bff Thomas Thrainer
own, explicitly forcing the installation of compatible versions::
238 2fa8f963 Michele Tartara
239 2fa8f963 Michele Tartara
  $ cabal install MonadCatchIO-transformers==0.2.2.0 mtl==2.0.1.0 \
240 2fa8f963 Michele Tartara
                  hashable==1.1.2.0 case-insensitive==0.3 parsec==3.0.1 \
241 2fa8f963 Michele Tartara
                  network==2.3 snap-server==0.8.1
242 2fa8f963 Michele Tartara
243 fc6075dd Agata Murawska
.. _cabal-note:
244 fc6075dd Agata Murawska
.. note::
245 fc6075dd Agata Murawska
  If one of the cabal packages fails to install due to unfulfilled
246 fc6075dd Agata Murawska
  dependencies, you can try enabling symlinks in ``~/.cabal/config``.
247 fc6075dd Agata Murawska
248 fc6075dd Agata Murawska
  Make sure that your ``~/.cabal/bin`` directory (or whatever else
249 fc6075dd Agata Murawska
  is defined as ``bindir``) is in your ``PATH``.
250 fc6075dd Agata Murawska
251 bd785ecd Michael Hanselmann
Installation of the software
252 c27ba1cc Michael Hanselmann
----------------------------
253 c27ba1cc Michael Hanselmann
254 c27ba1cc Michael Hanselmann
To install, simply run the following command::
255 a8083063 Iustin Pop
256 727ee1ec Iustin Pop
  $ ./configure --localstatedir=/var --sysconfdir=/etc && \
257 727ee1ec Iustin Pop
    make && \
258 727ee1ec Iustin Pop
    make install
259 a8083063 Iustin Pop
260 c27ba1cc Michael Hanselmann
This will install the software under ``/usr/local``. You then need to
261 c27ba1cc Michael Hanselmann
copy ``doc/examples/ganeti.initd`` to ``/etc/init.d/ganeti`` and
262 c27ba1cc Michael Hanselmann
integrate it into your boot sequence (``chkconfig``, ``update-rc.d``,
263 4dbc4c85 Klaus Aehlig
etc.). Also, Ganeti uses symbolic links in the sysconfdir to determine,
264 4dbc4c85 Klaus Aehlig
which of potentially many installed versions currently is used. If these
265 4dbc4c85 Klaus Aehlig
symbolic links should be added by the install as well, add the
266 4dbc4c85 Klaus Aehlig
option ``--enable-symlinks`` to the ``configure`` call.
267 a8083063 Iustin Pop
268 bd785ecd Michael Hanselmann
269 a8083063 Iustin Pop
Cluster initialisation
270 c27ba1cc Michael Hanselmann
----------------------
271 a8083063 Iustin Pop
272 c27ba1cc Michael Hanselmann
Before initialising the cluster, on each node you need to create the
273 c27ba1cc Michael Hanselmann
following directories:
274 a8083063 Iustin Pop
275 c27ba1cc Michael Hanselmann
- ``/etc/ganeti``
276 c27ba1cc Michael Hanselmann
- ``/var/lib/ganeti``
277 c27ba1cc Michael Hanselmann
- ``/var/log/ganeti``
278 c27ba1cc Michael Hanselmann
- ``/srv/ganeti``
279 c27ba1cc Michael Hanselmann
- ``/srv/ganeti/os``
280 c27ba1cc Michael Hanselmann
- ``/srv/ganeti/export``
281 a8083063 Iustin Pop
282 a8083063 Iustin Pop
After this, use ``gnt-cluster init``.
283 c27ba1cc Michael Hanselmann
284 c27ba1cc Michael Hanselmann
.. vim: set textwidth=72 syntax=rst :
285 c27ba1cc Michael Hanselmann
.. Local Variables:
286 c27ba1cc Michael Hanselmann
.. mode: rst
287 c27ba1cc Michael Hanselmann
.. fill-column: 72
288 c27ba1cc Michael Hanselmann
.. End: