Statistics
| Branch: | Tag: | Revision:

root / INSTALL @ d1068153

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