root / man / hail.rst @ 9d049fb4
History | View | Annotate | Download (5.3 kB)
1 | 5a19bd35 | Iustin Pop | HAIL(1) Ganeti | Version @GANETI_VERSION@ |
---|---|---|---|
2 | 5a19bd35 | Iustin Pop | ========================================= |
3 | c6702e5e | Iustin Pop | |
4 | 49148d15 | Iustin Pop | NAME |
5 | 49148d15 | Iustin Pop | ---- |
6 | c6702e5e | Iustin Pop | |
7 | 49148d15 | Iustin Pop | hail - Ganeti IAllocator plugin |
8 | 49148d15 | Iustin Pop | |
9 | 49148d15 | Iustin Pop | SYNOPSIS |
10 | 49148d15 | Iustin Pop | -------- |
11 | 49148d15 | Iustin Pop | |
12 | f624fa95 | Iustin Pop | **hail** [ **-t** *file* | **\--simulate** *spec* ] [options...] *input-file* |
13 | 49148d15 | Iustin Pop | |
14 | f624fa95 | Iustin Pop | **hail** \--version |
15 | 49148d15 | Iustin Pop | |
16 | 49148d15 | Iustin Pop | DESCRIPTION |
17 | 49148d15 | Iustin Pop | ----------- |
18 | c6702e5e | Iustin Pop | |
19 | 5b53ca79 | Iustin Pop | hail is a Ganeti IAllocator plugin that implements the instance |
20 | 354c4f62 | Michael Hanselmann | placement and movement using the same algorithm as **hbal**\(1). |
21 | c6702e5e | Iustin Pop | |
22 | 49148d15 | Iustin Pop | The program takes input via a JSON-file containing current cluster |
23 | 49148d15 | Iustin Pop | state and the request details, and output (on stdout) a JSON-formatted |
24 | c6702e5e | Iustin Pop | response. In case of critical failures, the error message is printed |
25 | c6702e5e | Iustin Pop | on stderr and the exit code is changed to show failure. |
26 | c6702e5e | Iustin Pop | |
27 | f183de56 | Iustin Pop | If the input file name is ``-`` (a single minus sign), then the request |
28 | f183de56 | Iustin Pop | data will be read from *stdin*. |
29 | f183de56 | Iustin Pop | |
30 | f30d0610 | Spyros Trigazis | Apart from input data, hail collects data over the network from all |
31 | f30d0610 | Spyros Trigazis | MonDs with the --mond option. Currently it uses only data produced by |
32 | f30d0610 | Spyros Trigazis | the CPUload collector. |
33 | f30d0610 | Spyros Trigazis | |
34 | 49148d15 | Iustin Pop | ALGORITHM |
35 | 49148d15 | Iustin Pop | ~~~~~~~~~ |
36 | c6702e5e | Iustin Pop | |
37 | c6702e5e | Iustin Pop | The program uses a simplified version of the hbal algorithm. |
38 | c6702e5e | Iustin Pop | |
39 | 49148d15 | Iustin Pop | For single-node allocations (non-mirrored instances), again we |
40 | 1cd133d6 | Iustin Pop | select the node which, when chosen as the primary node, gives the best |
41 | 1cd133d6 | Iustin Pop | score. |
42 | c6702e5e | Iustin Pop | |
43 | 49148d15 | Iustin Pop | For dual-node allocations (mirrored instances), we chose the best |
44 | 49148d15 | Iustin Pop | pair; this is the only choice where the algorithm is non-trivial |
45 | c6702e5e | Iustin Pop | with regard to cluster size. |
46 | c6702e5e | Iustin Pop | |
47 | 88df1fa9 | Iustin Pop | For relocations, we try to change the secondary node of the instance to |
48 | 88df1fa9 | Iustin Pop | all the valid other nodes; the node which results in the best cluster |
49 | 88df1fa9 | Iustin Pop | score is chosen. |
50 | 88df1fa9 | Iustin Pop | |
51 | 5b53ca79 | Iustin Pop | For node changes (*change-node* mode), we currently support DRBD |
52 | 5b53ca79 | Iustin Pop | instances only, and all three modes (primary changes, secondary changes |
53 | 5b53ca79 | Iustin Pop | and all node changes). |
54 | 5b53ca79 | Iustin Pop | |
55 | 5b53ca79 | Iustin Pop | For group moves (*change-group* mode), again only DRBD is supported, and |
56 | 5b53ca79 | Iustin Pop | we compute the correct sequence that will result in a group change; job |
57 | 5b53ca79 | Iustin Pop | failure mid-way will result in a split instance. The choice of node(s) |
58 | 5b53ca79 | Iustin Pop | on the target group is based on the group score, and the choice of group |
59 | 5b53ca79 | Iustin Pop | is based on the same algorithm as allocations (group with lowest score |
60 | 5b53ca79 | Iustin Pop | after placement). |
61 | 5b53ca79 | Iustin Pop | |
62 | 88df1fa9 | Iustin Pop | The deprecated *multi-evacuate* modes is no longer supported. |
63 | d06d0636 | Iustin Pop | |
64 | 5b53ca79 | Iustin Pop | In all cases, the cluster (or group) scoring is identical to the hbal |
65 | 5b53ca79 | Iustin Pop | algorithm. |
66 | c6702e5e | Iustin Pop | |
67 | 01fec0a1 | Iustin Pop | OPTIONS |
68 | 01fec0a1 | Iustin Pop | ------- |
69 | 01fec0a1 | Iustin Pop | |
70 | 01fec0a1 | Iustin Pop | The options that can be passed to the program are as follows: |
71 | 01fec0a1 | Iustin Pop | |
72 | f624fa95 | Iustin Pop | -p, \--print-nodes |
73 | d7731f51 | Iustin Pop | Prints the before and after node status, in a format designed to allow |
74 | d7731f51 | Iustin Pop | the user to understand the node's most important parameters. See the |
75 | 354c4f62 | Michael Hanselmann | man page **htools**\(1) for more details about this option. |
76 | 01fec0a1 | Iustin Pop | |
77 | f624fa95 | Iustin Pop | -t *datafile*, \--text-data=*datafile* |
78 | acd9fa11 | Iustin Pop | The name of the file holding cluster information, to override the data |
79 | acd9fa11 | Iustin Pop | in the JSON request itself. This is mostly used for debugging. The |
80 | 354c4f62 | Michael Hanselmann | format of the file is described in the man page **htools**\(1). |
81 | 01fec0a1 | Iustin Pop | |
82 | f30d0610 | Spyros Trigazis | \--mond |
83 | f30d0610 | Spyros Trigazis | If given the program will query all MonDs to fetch data from the |
84 | f30d0610 | Spyros Trigazis | supported data collectors over the network. |
85 | f30d0610 | Spyros Trigazis | |
86 | f30d0610 | Spyros Trigazis | \--mond-data *datafile* |
87 | f30d0610 | Spyros Trigazis | The name of the file holding the data provided by MonD, to override |
88 | f30d0610 | Spyros Trigazis | quering MonDs over the network. This is mostly used for debugging. The |
89 | f30d0610 | Spyros Trigazis | file must be in JSON format and present an array of JSON objects , |
90 | f30d0610 | Spyros Trigazis | one for every node, with two members. The first member named ``node`` |
91 | f30d0610 | Spyros Trigazis | is the name of the node and the second member named ``reports`` is an |
92 | f30d0610 | Spyros Trigazis | array of report objects. The report objects must be in the same format |
93 | f30d0610 | Spyros Trigazis | as produced by the monitoring agent. |
94 | f30d0610 | Spyros Trigazis | |
95 | f30d0610 | Spyros Trigazis | \--ignore-dynu |
96 | f30d0610 | Spyros Trigazis | If given, all dynamic utilisation information will be ignored by |
97 | f30d0610 | Spyros Trigazis | assuming it to be 0. This option will take precedence over any data |
98 | f30d0610 | Spyros Trigazis | passed by the MonDs with the ``--mond`` and the ``--mond-data`` |
99 | f30d0610 | Spyros Trigazis | option. |
100 | f30d0610 | Spyros Trigazis | |
101 | f624fa95 | Iustin Pop | \--simulate *description* |
102 | acd9fa11 | Iustin Pop | Backend specification: similar to the **-t** option, this allows |
103 | acd9fa11 | Iustin Pop | overriding the cluster data with a simulated cluster. For details |
104 | 354c4f62 | Michael Hanselmann | about the description, see the man page **htools**\(1). |
105 | 01fec0a1 | Iustin Pop | |
106 | f624fa95 | Iustin Pop | -S *filename*, \--save-cluster=*filename* |
107 | 4162995d | Iustin Pop | If given, the state of the cluster before and the iallocator run is |
108 | 4162995d | Iustin Pop | saved to a file named *filename.pre-ialloc*, respectively |
109 | 4162995d | Iustin Pop | *filename.post-ialloc*. This allows re-feeding the cluster state to |
110 | acd9fa11 | Iustin Pop | any of the htools utilities via the ``-t`` option. |
111 | 4162995d | Iustin Pop | |
112 | b790839a | Iustin Pop | -v |
113 | b790839a | Iustin Pop | This option increases verbosity and can be used for debugging in order |
114 | b790839a | Iustin Pop | to understand how the IAllocator request is parsed; it can be passed |
115 | b790839a | Iustin Pop | multiple times for successively more information. |
116 | b790839a | Iustin Pop | |
117 | b790839a | Iustin Pop | |
118 | 49148d15 | Iustin Pop | CONFIGURATION |
119 | 49148d15 | Iustin Pop | ------------- |
120 | 73b2e389 | Iustin Pop | |
121 | 73b2e389 | Iustin Pop | For the tag-exclusion configuration (see the manpage of hbal for more |
122 | 73b2e389 | Iustin Pop | details), the list of which instance tags to consider as exclusion |
123 | 73b2e389 | Iustin Pop | tags will be read from the cluster tags, configured as follows: |
124 | 73b2e389 | Iustin Pop | |
125 | 49148d15 | Iustin Pop | - get all cluster tags starting with **htools:iextags:** |
126 | 73b2e389 | Iustin Pop | - use their suffix as the prefix for exclusion tags |
127 | 73b2e389 | Iustin Pop | |
128 | 49148d15 | Iustin Pop | For example, given a cluster tag like **htools:iextags:service**, |
129 | 49148d15 | Iustin Pop | all instance tags of the form **service:X** will be considered as |
130 | 73b2e389 | Iustin Pop | exclusion tags, meaning that (e.g.) two instances which both have a |
131 | 49148d15 | Iustin Pop | tag **service:foo** will not be placed on the same primary node. |
132 | 73b2e389 | Iustin Pop | |
133 | 01fec0a1 | Iustin Pop | OPTIONS |
134 | 01fec0a1 | Iustin Pop | ------- |
135 | 01fec0a1 | Iustin Pop | |
136 | 01fec0a1 | Iustin Pop | The options that can be passed to the program are as follows: |
137 | 01fec0a1 | Iustin Pop | |
138 | 49148d15 | Iustin Pop | EXIT STATUS |
139 | 49148d15 | Iustin Pop | ----------- |
140 | c6702e5e | Iustin Pop | |
141 | c6702e5e | Iustin Pop | The exist status of the command will be zero, unless for some reason |
142 | c6702e5e | Iustin Pop | the algorithm fatally failed (e.g. wrong node or instance data). |
143 | 9ff4f2c0 | Michael Hanselmann | |
144 | d187780c | Guido Trotter | BUGS |
145 | d187780c | Guido Trotter | ---- |
146 | d187780c | Guido Trotter | |
147 | d187780c | Guido Trotter | Networks (as configured by **gnt-network**\(8)) are not taken into |
148 | d187780c | Guido Trotter | account in Ganeti 2.7. The only way to guarantee that they work |
149 | d187780c | Guido Trotter | correctly is having your networks connected to all nodegroups. This will |
150 | d187780c | Guido Trotter | be fixed in a future version. |
151 | d187780c | Guido Trotter | |
152 | 9ff4f2c0 | Michael Hanselmann | .. vim: set textwidth=72 : |
153 | 9ff4f2c0 | Michael Hanselmann | .. Local Variables: |
154 | 9ff4f2c0 | Michael Hanselmann | .. mode: rst |
155 | 9ff4f2c0 | Michael Hanselmann | .. fill-column: 72 |
156 | 9ff4f2c0 | Michael Hanselmann | .. End: |