README 2.57 KB
Newer Older
Iustin Pop's avatar
Iustin Pop committed
1
2
Ganeti Cluster tools (htools)
=============================
Iustin Pop's avatar
Iustin Pop committed
3

Iustin Pop's avatar
Iustin Pop committed
4
These are some simple cluster tools for fixing common problems. Right
Iustin Pop's avatar
Iustin Pop committed
5
6
now N+1 and rebalancing are included. Starting with version 0.1.0,
only Ganeti 2.0 is supported.
Iustin Pop's avatar
Iustin Pop committed
7
8


Iustin Pop's avatar
Iustin Pop committed
9
10
11
12
13
14
15
16
17
Cluster rebalancer
------------------

Compared to the N+1 solver, the rebalancer uses a very simple algorithm:
repeatedly try to move each instance one step, so that the cluster score
becomes better. We stop when no further move can improve the score.

For algorithm details and usage, see the man page hbal(1).

Iustin Pop's avatar
Iustin Pop committed
18
19
20
21
22
23
24
25
Cluster N+1 solver
------------------

This program runs a very simple brute force algorithm over the instance
placement space in order to determine the shortest number of replace-disks
needed to fix the cluster. Note this means we won't get a balanced cluster,
just one that passes N+1 checks.

Iustin Pop's avatar
Iustin Pop committed
26
27
For algorithm details and usage, see the man page hn1(1). **Note**:
this program is deprecated, hbal should be used instead.
Iustin Pop's avatar
Iustin Pop committed
28

Iustin Pop's avatar
Iustin Pop committed
29
30
IAllocator plugin
-----------------
Iustin Pop's avatar
Iustin Pop committed
31

Iustin Pop's avatar
Iustin Pop committed
32
33
34
35
36
The ``hail`` iallocator plugin can be used for allocations of mirrored
and non-mirrored instances and for relocations of mirrored
instances. It needs to be installed in Ganeti's iallocator search
path—usually ``/usr/lib/ganeti/iallocators`` or
``/usr/local/lib/ganeti/iallocators``.
Iustin Pop's avatar
Iustin Pop committed
37
38
39
40

Integration with Ganeti
-----------------------

Iustin Pop's avatar
Iustin Pop committed
41
42
43
44
45
46
The ``hbal`` and ``hn1`` programs can either get their input from text
files, or online from a cluster via RAPI. For online collection via
RAPI, the "-m" argument to both hn1 and hbal should specify the
cluster or master node name. ``hail`` uses the standard iallocator API
and thus doesn't need any special setup (just needs to be installed in
the right directory).
Iustin Pop's avatar
Iustin Pop committed
47
48
49
50
51

For text files, a separate tool (hscan) is provided to automate their
gathering if RAPI is available, which is better since it can extract
more precise information. In case RAPI is not usable for whatever
reason, the following two commands should be run::
Iustin Pop's avatar
Iustin Pop committed
52

Iustin Pop's avatar
Iustin Pop committed
53
    gnt-node list -oname,mtotal,mnode,mfree,dtotal,dfree,offline \
Iustin Pop's avatar
Iustin Pop committed
54
      --separator '|' --no-headers > nodes
Iustin Pop's avatar
Iustin Pop committed
55
    gnt-instance list -oname,admin_ram,sda_size,status,pnode,snodes \
Iustin Pop's avatar
Iustin Pop committed
56
57
      --separator '|' --no-head > instances

Iustin Pop's avatar
Iustin Pop committed
58
59
These two files should be saved under the names of *nodes* and
*instances*.
Iustin Pop's avatar
Iustin Pop committed
60
61
62
63
64
65
66

Installation
------------

If installing from source, you need a working ghc compiler (6.8 at
least) and some extra Haskell libraries which usually need to be
installed manually:
Iustin Pop's avatar
Iustin Pop committed
67

Iustin Pop's avatar
Iustin Pop committed
68
69
- json
- curl
Iustin Pop's avatar
Iustin Pop committed
70

Iustin Pop's avatar
Iustin Pop committed
71
72
Once these are available, just typing *make* in the top-level
directory should be enough.
Iustin Pop's avatar
Iustin Pop committed
73

Iustin Pop's avatar
Iustin Pop committed
74
75
Internal (implementation) documentation is available in the ``apidoc``
directory.