X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/6567f1d960dfffd58bbbdb64eb6c6ebf1b9b8005..4041a4e3ca7181fc0158af176e546a9a67abcdd9:/INSTALL diff --git a/INSTALL b/INSTALL index 1408ea1..638b06b 100644 --- a/INSTALL +++ b/INSTALL @@ -9,6 +9,8 @@ the :doc:`install`. A glossary of terms can be found in the Software Requirements --------------------- +.. highlight:: shell-example + Before installing, please verify that you have the following programs: - `Xen Hypervisor `_, version 3.0 or above, if @@ -16,9 +18,11 @@ Before installing, please verify that you have the following programs: - `KVM Hypervisor `_, version 72 or above, if running on KVM. In order to use advanced features, such as live migration, virtio, etc, an even newer version is recommended (qemu-kvm - versions 0.11.X or above have shown good behavior). + versions 0.11.X and above have shown good behavior). - `DRBD `_, kernel module and userspace utils, - version 8.0.7 or above + version 8.0.7 or above; note that Ganeti doesn't yet support version 8.4 +- `RBD `_, kernel modules + (``rbd.ko``/``libceph.ko``) and userspace utils (``ceph-common``) - `LVM2 `_ - `OpenSSH `_ - `bridge utilities `_ @@ -42,14 +46,15 @@ Before installing, please verify that you have the following programs: - `affinity Python module `_, optional python package for supporting CPU pinning under KVM - `ElementTree Python module `_, - if running python 2.4 (optional, used by ovfconverter tool) -- `qemu-img `_, if you want to use ovfconverter + if running python 2.4 (optional, used by the ``ovfconverter`` tool) +- `qemu-img `_, if you want to use ``ovfconverter`` +- `fping `_ These programs are supplied as part of most Linux distributions, so usually they can be installed via the standard package manager. Also many of them will already be installed on a standard machine. On Debian/Ubuntu, you can use this command line to install all required -packages, except for DRBD and Xen:: +packages, except for RBD, DRBD and Xen:: $ apt-get install lvm2 ssh bridge-utils iproute iputils-arping \ ndisc6 python python-pyopenssl openssl \ @@ -57,12 +62,49 @@ packages, except for DRBD and Xen:: python-pyinotify python-pycurl socat \ python-elementtree qemu -If you want to also enable the `htools` components, which is recommended -on bigger deployments (they give you automatic instance placement, -cluster balancing, etc.), then you need to have a Haskell compiler -installed. More specifically: +On Fedora to install all required packages except RBD, DRBD and Xen:: + + $ yum install openssh openssh-clients bridge-utils iproute ndisc6 \ + pyOpenSSL pyparsing python-simplejson python-inotify \ + python-lxml python-paramiko socat qemu-img + + +If you want to build from source, please see doc/devnotes.rst for more +dependencies. + +.. _socat-note: +.. note:: + Ganeti's import/export functionality uses ``socat`` with OpenSSL for + transferring data between nodes. By default, OpenSSL 0.9.8 and above + employ transparent compression of all data using zlib if supported by + both sides of a connection. In cases where a lot of data is + transferred, this can lead to an increased CPU usage. Additionally, + Ganeti already compresses all data using ``gzip`` where it makes sense + (for inter-cluster instance moves). + + To remedey this situation, patches implementing a new ``socat`` option + for disabling OpenSSL compression have been contributed and will + likely be included in the next feature release. Until then, users or + distributions need to apply the patches on their own. + + Ganeti will use the option if it's detected by the ``configure`` + script; auto-detection can be disabled by explicitly passing + ``--enable-socat-compress`` (use the option to disable compression) or + ``--disable-socat-compress`` (don't use the option). + + The patches and more information can be found on + http://www.dest-unreach.org/socat/contrib/socat-opensslcompress.html. + +Haskell requirements +~~~~~~~~~~~~~~~~~~~~ + +If you want to enable the `htools` component, which is recommended on +bigger deployments (this give you automatic instance placement, cluster +balancing, etc.), then you need to have a Haskell compiler installed on +your build machine (but this is not required on the machines which are +just going to run Ganeti). More specifically: -- `GHC `_ version 6.10 or higher +- `GHC `_ version 6.12 or higher - or even better, `The Haskell Platform `_ which gives you a simple way to bootstrap Haskell @@ -80,52 +122,65 @@ All of these are also available as package in Debian/Ubuntu:: $ apt-get install ghc6 libghc6-json-dev libghc6-network-dev \ libghc6-parallel-dev libghc6-curl-dev +Or in Fedora running:: + + $ yum install ghc ghc-json-devel ghc-network-devel ghc-parallel-devel + +The most recent Fedora doesn't provide ``ghc-curl``. So this needs to be +installed using ``cabal`` or alternatively htools can be build without +curl support. + Note that more recent version have switched to GHC 7.x and the packages were renamed:: $ apt-get install ghc libghc-json-dev libghc-network-dev \ libghc-parallel-dev libghc-curl-dev +If using a distribution which does not provide them, the first install +the Haskell platform and then install the additional libraries via +``cabal``:: + + $ cabal install json network parallel curl + The compilation of the htools components is automatically enabled when the compiler and the requisite libraries are found. You can use the ``--enable-htools`` configure flag to force the selection (at which point ``./configure`` will fail if it doesn't find the prerequisites). -If you want to build from source, please see doc/devnotes.rst for more -dependencies. +In Ganeti version 2.6, one of the daemons (``ganeti-confd``) is shipped +in two versions: the Python default version (which has no extra +dependencies), and an experimental Haskell version. This latter version +can be enabled via the ``./configure`` flag ``--enable-confd=haskell`` +and a few has extra dependencies: -.. _socat-note: -.. note:: - Ganeti's import/export functionality uses ``socat`` with OpenSSL for - transferring data between nodes. By default, OpenSSL 0.9.8 and above - employ transparent compression of all data using zlib if supported by - both sides of a connection. In cases where a lot of data is - transferred, this can lead to an increased CPU usage. Additionally, - Ganeti already compresses all data using ``gzip`` where it makes sense - (for inter-cluster instance moves). +- `hslogger `_, version 1.1 and + above (note that Debian Squeeze only has version 1.0.9) +- `Crypto `_, tested with + version 4.2.4 +- `text `_ +- ``bytestring``, which usually comes with the compiler +- `hinotify `_ - To remedey this situation, patches implementing a new ``socat`` option - for disabling OpenSSL compression have been contributed and will - likely be included in the next feature release. Until then, users or - distributions need to apply the patches on their own. +These libraries are available in Debian Wheezy (but not in Squeeze), so +you can use either apt:: - Ganeti will use the option if it's detected by the ``configure`` - script; auto-detection can be disabled by explicitely passing - ``--enable-socat-compress`` (use the option to disable compression) or - ``--disable-socat-compress`` (don't use the option). + $ apt-get install libghc-hslogger-dev libghc-crypto-dev libghc-text-dev \ + libghc-hinotify-dev - The patches and more information can be found on - http://www.dest-unreach.org/socat/contrib/socat-opensslcompress.html. +or ``cabal``:: + + $ cabal install hslogger Crypto text hinotify +to install them. Installation of the software ---------------------------- To install, simply run the following command:: - ./configure --localstatedir=/var --sysconfdir=/etc && \ - make && \ - make install + $ ./configure --localstatedir=/var --sysconfdir=/etc && \ + make && \ + make install This will install the software under ``/usr/local``. You then need to copy ``doc/examples/ganeti.initd`` to ``/etc/init.d/ganeti`` and