Add maybePrintNodes for abstracting the node list
[ganeti-local] / NEWS
1 Ganeti-htools release notes
2 ===========================
3
4
5 Version 0.2.8 (Thu, 23 Dec 2010)
6 --------------------------------
7
8 A bug fix release:
9
10 - fixed balancing function for big clusters, which will improve corner
11   cases where hbal didn't see any solution even though the cluster was
12   obviously not well balanced
13 - fixed exit code of hbal in case of (Luxi) job errors
14 - changed the signal handling in hbal in order to make hbal control
15   easier: instead of synchronising on the count of signals, make SIGINT
16   cause graceful termination, and SIGTERM an immediate one
17 - increased the tag exclusion weight so that it has greater importance
18   during the balancing
19 - slight improvement to the speed of balancing via algorithm tweaks
20
21
22 Version 0.2.7 (Thu, 07 Oct 2010)
23 --------------------------------
24
25 Bug fixes:
26
27 - fixed the error message for hail multi-evacuation mode
28 - improve evacuation mode for offline secondary nodes (ignore available
29   memory)
30
31 New features:
32
33 - add a new option ``-S`` to hbal and hspace that saves the cluster
34   state at the end of the processing in the text format used by the
35   ``-t`` option, for later re-processing
36 - a two new options to hbal, -g and --min-gain-limit, that should help
37   in limiting the number of balances steps with a low gain in the final
38   stages
39 - hbal, when executing jobs, will now wait for the current jobs to
40   finish at the first stop (e.g. ^C); if the user wants immediate exit,
41   another signal should be sent
42 - added “normalized” physical CPU units in hspace output (NPU), which
43   represents units of physical CPUs free/used, based on the max-cpu
44   ratio
45
46
47 Version 0.2.6 (Mon, 26 Jul 2010)
48 --------------------------------
49
50 Exactly three months since the last release. Many internal changes, plus
51 a couple of important changes in the balancing algorithm.
52
53 First, the balancing may now introduce N+1 errors, if this solves other,
54 more critical problems. For the moment, this means that moving instances
55 away from offline nodes is allowed even if it creates N+1 errors, and
56 that means evacuation can be done in more cases.
57
58 Second, the scoring for N+1 has changed. In previous versions, it simply
59 counted the number of failing N+1 nodes, which means moving an instance
60 away from a N+1 failed node (but without the node 'clearing' the N+1
61 status) was not reflected in the cluster score. As such, the balancing
62 algorithm managed to clear N+1 errors only sometimes, since usually it
63 takes more than one move for this, and the first prerequisite move was
64 not 'rewarded' appropriately and thus it was not selected. Now, it is
65 possible to fix many more error cases than before: on a simulated 40
66 node cluster full with instances (symmetrically allocated on all nodes),
67 around five nodes can be evacuated before N+1 errors can be solved,
68 whereas 0.2.5 could evacuate at best one node.
69
70 There were some other internal changes to the scoring algorithm, such
71 that now the metrics have associated weights, and they are not all of
72 the same importance anymore. As of now, the only change is that offline
73 instances have a higher weight, which should favour proper node
74 evacuations.
75
76 Among the other changes:
77
78 - fixed the hspace KM_POOL_* metrics, which were returned as the final
79   state and not as the delta between the initial and final states
80 - fixed hspace handling of N+1 failing clusters: before, it used to
81   generate a 'fake' response, and the structure of this response was not
82   always in sync with the real responses, leading to missing items;
83   currently it proceeds correctly through the code (skipping the
84   computation), and uses the same display mechanisms as the normal case
85 - fixed hscan exit code for RAPI failures: previously it finished with
86   success even if all the clusters failed, which was creating issues
87   with the live-test script; now it exits with exit code 2 for RAPI
88   failures (unfortunately this is still not optimal as LUXI failures
89   will use exit code 1, the same as the command line)
90 - changed the limit values for CPU/disk, which previously were used
91   optionally, whereas now they are always used; the default cpu ratio
92   limit is now 64 VCPUs per PCPU
93 - changed the internal handling of the short name vs. original
94   (Ganeti-provided) name; now internally we always use the full name,
95   and only in display routines we show the shortened (called 'alias')
96   name; as a result, the -O and --excluded-instances options now accept
97   both the full name and the shortened name
98 - changed internal handling of JSON conversions and errors, such that
99   now we show a better context for failure messages, which should help
100   with diagnosing the malformed message
101 - changed the names for a few node fields, and added some more nodes;
102   this is most likely to help with debugging, and not with regular
103   operation though
104 - changed the node fields option to allow the '+' prefix to mean 'extend
105   the default fields list' rather than start from fresh (similar to
106   Ganeti's implementation)
107 - a few internal changes related to the LUXI protocol implementation,
108   which should make it more safe against potential bugs, one
109   optiomization that should help with large messages, and some patches
110   in preparation for potential expansion of the LUXI backend functionality
111
112 And finally, many improvements on unittests and the live-test
113 script. Test coverage is much enhanced, and the test infrastructure has
114 better error reporting; this should lead down-the-road to better code
115 and fewer bugs…
116
117
118 Version 0.2.5 (Mon, 26 Apr 2010)
119 --------------------------------
120
121 Some internal cleanup plus a few user-visible changes:
122
123 - new option for marking instances as 'do-not-move' during rebalancing
124 - allow ``hscan`` to scan the local cluster via Luxi
125 - add more metrics to ``hspace`` which show the delta between original
126   state and final state better (only valid for tiered allocation)
127
128
129 Version 0.2.4 (Mon, 22 Feb 2010)
130 --------------------------------
131
132 Two improvements for node evacuation:
133
134 - hbal takes a new parameter ``--evac-mode`` that restricts the
135   instances to be moved to the ones on offline/drained nodes, which
136   should reduce the work done
137 - hail supports the new ``multi-evacuate`` mode of the IAllocator
138   protocol, that will be released in a minor release on the Ganeti 2.1
139   branch
140
141
142 Version 0.2.3 (Thu,  4 Feb 2010)
143 --------------------------------
144
145 A small release:
146
147 - Fixes selection of secondary node: previously, if the cluster had
148   many N+1 failures, a N+1 failed node could be selected as secondary
149   even if it did not have enough memory to allow the instance to be
150   migrated/failed over to it; this is bad for automated tools, since
151   we can get the cluster in an unhealthy state
152 - Switch the text backend to a single input file, that is generated
153   now by hscan and shouldn't be generated manually via
154   gnt-node/instance list anymore; this allows richer information to be
155   kept in the file, and simplifies a little the internals of the text
156   backend
157
158
159 Version 0.2.2 (Tue, 29 Dec 2009)
160 --------------------------------
161
162 Small release, 0.2.1 was broken and thus this was released earlier:
163
164 - Release 0.2.1 broke the LUXI backend due to a typo, fixed
165 - Added a live-test script that should catch errors like the above one
166   in the future (needs a working, non-empty cluster)
167 - Changed RAPI and LUXI backends to treat drained nodes as offline,
168   similar to the IAllocator backend change in 0.2.0 (which was wrongly
169   marked as affecting all backends)
170 - Changed the metrics for offline instances and N1 score from percent to
171   count, in order to increase the priority of evacuations
172 - Added a new metric (offline primary instances) which should fix the
173   evacuation of a offline node in a 2-node cluster
174
175
176 Version 0.2.1 (Wed,  2 Dec 2009)
177 --------------------------------
178
179 - Added instance exclusion defined via instance tags
180 - Fixed the output of hspace to be again parseable from the shell
181
182
183 Version 0.2.0 (Tue, 10 Nov 2009)
184 --------------------------------
185
186 A significant release, with a few new major features:
187
188 - Added direct execution of the hbal solution when using the Luxi
189   backend; the steps for each instance moves are submitted as a single
190   jobs, and the different jobs are submitted as groups in order to
191   parallelise the execution of moves
192 - Added support for balancing based on dynamic utilisation data for
193   instances, fed in via a text file; by default, all instances are
194   considered equal and this change also improves the equalisation of
195   secondary instances per node
196 - Added support for tiered capacity calculation in hspace, where we
197   start from a maximum instance spec and decrease the spec when we run
198   out of resources; this should give a better measure of available
199   capacity on 'fragmented' clusters; this is done separately from the
200   current fixed-mode computation
201
202 Also there have been many minor improvements:
203
204 - Added option for showing instances (“--print-instances”), similar to
205   the print nodes option
206 - Added support for customising the node list via an argument to the
207   print nodes option in the form of a comma-separated list of field
208   names; currently the field names are not documented, expecting further
209   changes in a next release
210 - Enhanced the error reporting in the Luxi and Rapi backends
211 - Changed the handling of drained nodes, now being treated the same as
212   offline nodes, for Ganeti 2.0.4+ compatibility
213 - A number of internal changes, simplifying code and merging some
214   disparate functions
215 - Simplify the build system in relation to creation of archives
216
217
218 Version 0.1.8 (Tue, 29 Sep 2009)
219 --------------------------------
220
221 - Brown-paper-bag release fixing haddock issues
222
223
224 Version 0.1.7 (Mon, 28 Sep 2009)
225 --------------------------------
226
227 - Fixed a bug in the Luxi backend for big responses
228 - Fixed test suite exit code in presence of test failures
229 - Changed the migrate operation to run instead failover for instances
230   which were marked as not running in the input data (this could have
231   been changed since then, but it's better than today's always migrate)
232 - Added support for 'cheap' moves only (only migrate/failover) in
233   balancing
234 - Added support for building without curl (thus no RAPI backend)
235
236
237 Version 0.1.6 (Wed, 19 Aug 2009)
238 --------------------------------
239
240 - Added support for Luxi (the native Ganeti protocol)
241 - Added support for simulated clusters (for hspace only)
242 - Added timeouts for the RAPI backend
243 - Fixed a few inconsistencies in the command line handling
244 - Fixed handling of errors while loading data
245 - The 'network' is a new dependency due to the Luxi addition
246
247
248 Version 0.1.5 (Thu, 09 Jul 2009)
249 --------------------------------
250
251 - Removed obsolete hn1 program; this allowed removal of a lot of
252   supporting code
253 - Lots of changes in hspace: the output now is a shell fragment in order
254   for script to source it or parse it easier; added failure reasons;
255   optimised to use less memory for large clusters
256 - Optimized the scoring algorithm (used by all tools) so that now
257   computations should be faster
258
259
260 Version 0.1.4 (Tue, 16 Jun 2009)
261 --------------------------------
262
263 - Added CPU count/ratio of virtual-to-physical CPUs to the cluster
264   scoring methods; this means that now the balancer, the iallocator
265   plugin and so on will try to keep the VCPU-to-PCPU ratio equal across
266   the cluster
267 - Fixed some hscan bugs
268 - Fixed the way iallocator reads the total disk size (was broken and it
269   was always falling back to summing the disk sizes)
270 - Internals: fixed most compile-time warnings
271
272
273 Version 0.1.3 (Fri, 05 Jun 2009)
274 --------------------------------
275
276 - Fix a bug in the ReplacePrimary instance moves, affecting most of the
277   tools
278
279
280 Version 0.1.2 (Tue, 02 Jun 2009)
281 --------------------------------
282
283 - Add a new program, “hspace”, which computes the free space on a
284   cluster (based on a given instance spec)
285 - Improvements in API docs and partially in the user docs
286 - Started adding unittests
287
288
289 Version 0.1.1 (Tue, 26 May 2009)
290 --------------------------------
291
292 - Add a new program, “hail”, which is an iallocator plugin and can
293   allocate/relocate instances
294 - Experimental support for non-mirrored instances (hail supports them,
295   hbal should no longer abort when it finds such instances and simply
296   ignore them)
297 - The RAPI port and/or scheme can be overriden now, and even “file://”
298   schemes can be used if the message body has been saved under the
299   appropriate name
300 - Lots of code reorganization, esp. rewritten loading pipeline
301 - Better data checking and better error messages in case validation
302   fails; tools now consider nodes with error in input data (‘?’ returned
303   by ganeti) as offline
304 - Small enhancement to the makefile for simpler packaging
305
306
307 Version 0.1.0 (Tue, 19 May 2009)
308 --------------------------------
309
310 - Drop compatibility with Ganeti 1.2
311 - Add a new minimum score option (with a very low default), should help
312   with very good clusters (but is still not optimal)
313 - Add a --quiet option to hbal
314 - Add support for reading offline nodes directly from the cluster
315
316
317 Version 0.0.8 (Tue, 21 Apr 2009)
318 --------------------------------
319
320 - hbal: prevent mismatches in wrong node names being passed to -O, by
321   aborting in this case
322 - add the ability to write the commands (-C) to a script via (-C<file>),
323   so that it can be later executed directly; this has also changed the
324   commands to include the ncessary -f flags to skip confirmations
325 - add checks for extra argument in hbal and hn1, so that unintended
326   errors are catched
327 - raise the accepted “missing” memory limit to 512MB, to cover usual Xen
328   reservations
329
330
331 Version 0.0.7 (Mon, 23 Mar 2009)
332 --------------------------------
333
334 - added support for offline nodes, which are not used as targets for
335   instance relocation and if they hold instances the hbal algorithm will
336   attempt to relocate these away
337 - added support for offline instances, which now will no longer skew the
338   free memory estimation of nodes; the algorithm will no longer create
339   conditions for N+1 failures when such instances are later started
340 - implemented a complete model of node resources, in order to prevent an
341   unintended re-occurrence of cases like the offline instance were we
342   miscalculate some node resource; this gives warning now in case the
343   node reported free disk or free memory deviates by more than a set
344   amount from the expected value
345 - a new tool *hscan* that can generate the input text-file for the other
346   tools by collection via RAPI
347 - some small changes to the build system to make it more friendly; also
348   included the generated documentation in the source archive
349
350
351 Version 0.0.6 (Mon, 16 Mar 2009)
352 --------------------------------
353
354 - re-factored the hbal algorithm to make it stable in the sense that it
355   gives the same solution when restarted from the middle; barring
356   rounding of disk/memory and incomplete reporting from Ganeti (for
357   1.2), it should be now feasible to rely on its output without
358   generating moves ad infinitum
359 - the hbal algorithm now uses two more variables: the node N+1 failures
360   and the amount of reserved memory; the first of which tries to ‘fix’
361   the N+1 status, the latter tries to distribute secondaries more
362   equally
363 - the hbal algorithm now uses two more moves at each step:
364   replace+failover and failover+replace (besides the original failover,
365   replace, and failover+replace+failover)
366 - slightly changed the build system to embed GIT version/tags into the
367   binaries so that we know for a binary from which tree it was done,
368   either via ‘--version’ or via “strings hbal|grep version”
369 - changed the solution list and in general the hbal output to be more
370   clear by default, and changed “gnt-instance failover” to “gnt-instance
371   migrate”
372 - added man pages for the two binaries
373
374
375 Version 0.0.5 (Mon, 09 Mar 2009)
376 --------------------------------
377
378 - a few small improvements for hbal (possibly undone by later changes),
379   hbal is now quite faster
380 - fix documentation building
381 - allow hbal to work on non N+1 compliant clusters, but without
382   guarantees that the end cluster will be compliant; in any case, this
383   should give a smaller number of nodes that are not compliant if the
384   cluster state permits it
385 - strip common domain suffix from nodes and instances, so that output is
386   shorter and hopefully clearer
387
388
389 Version 0.0.4 (Sun, 15 Feb 2009)
390 --------------------------------
391
392 - better balancing algorithm in hbal
393 - implemented an RAPI collector, now the cluster data can be gathered
394   automatically via RAPI and doesn't need manual export of node and
395   instance list
396
397
398 Version 0.0.3 (Wed, 28 Jan 2009)
399 --------------------------------
400
401 - initial release of the hbal, a cluster rebalancing tool
402 - input data format changed due to hbal requirements
403
404
405 Version 0.0.2 (Tue, 06 Jan 2009)
406 --------------------------------
407
408 - fix handling of some common cases (cluster N+1 compliant from the
409   start, too big depth given, failure to compute solution)
410 - add option to print the needed command list for reaching the proposed
411   solution
412
413
414 Version 0.0.1 (Tue, 06 Jan 2009)
415 --------------------------------
416
417 - initial release of hn1 tool
418
419 .. vim: set textwidth=72 :
420 .. Local Variables:
421 .. mode: rst
422 .. fill-column: 72
423 .. End: