Statistics
| Branch: | Tag: | Revision:

root / INSTALL @ f7f03738

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