Statistics
| Branch: | Tag: | Revision:

root / INSTALL @ 8cb5634a

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