HROLLER(1)

NAME

hroller - Cluster rolling maintenance scheduler for Ganeti

SYNOPSIS

hroller {backend options...} [algorithm options...] [reporting options...]

hroller --version

Backend options:

{ -m cluster | -L[ path ] | -t data-file | -I path }

Algorithm options:

[ -G name ]

[ -O name... ]

Reporting options:

[ -v... | -q ] [ -S file ]

DESCRIPTION

hroller is a cluster maintenance reboot scheduler. It can calculate which set of nodes can be rebooted at the same time while avoiding having both primary and secondary nodes being rebooted at the same time.

For backends that support identifying the master node (currenlty RAPI and LUXI), the master node is scheduled as the last node in the last reboot group.

  ALGORITHM FOR CALCULATING OFFLINE REBOOT GROUPS

hroller will view the nodes as vertices of an undirected graph, connecting by instances which have both a primary and a secondary node. It will then color the graph using a few different heuristics, and return the minimum-size color set found. Node with the same color don't share an edge, and as such don't have an instance with both primary and secondary node on them, so they are safe to be rebooted concurrently.

OPTIONS

Currently only standard htools options are supported. For a description of them check htools(1) and hbal(1).

BUGS

Offline nodes should be ignored.

If instances are online the tool should refuse to do offline rolling maintenances, unless explicitly requested.

End-to-end shelltests should be provided.

Online rolling maintenances (where instance need not be shut down, but are migrated from node to node) are not supported yet. Hroller by design should support them both with and without secondary node replacement.

EXAMPLE

  Offline Rolling node reboot output

With the default options, the program shows one reboot group per line as a comma-separated list.

    $ hroller -L
    'Node Reboot Groups'
    node1.example.com,node3.example.com,node5.example.com
    node8.example.com,node6.example.com,node2.example.com
    node7.example.com,node4.example.com

REPORTING BUGS

Report bugs to project website (http://code.google.com/p/ganeti/) or contact the developers using the Ganeti mailing list (ganeti@googlegroups.com).

SEE ALSO

Ganeti overview and specifications: ganeti(7) (general overview), ganeti-os-interface(7) (guest OS definitions), ganeti-extstorage-interface(7) (external storage providers).

Ganeti commands: gnt-cluster(8) (cluster-wide commands), gnt-job(8) (job-related commands), gnt-node(8) (node-related commands), gnt-instance(8) (instance commands), gnt-os(8) (guest OS commands), gnt-storage(8) (storage commands), gnt-group(8) (node group commands), gnt-backup(8) (instance import/export commands), gnt-debug(8) (debug commands).

Ganeti daemons: ganeti-watcher(8) (automatic instance restarter), ganeti-cleaner(8) (job queue cleaner), ganeti-noded(8) (node daemon), ganeti-masterd(8) (master daemon), ganeti-rapi(8) (remote API daemon).

Ganeti htools: htools(1) (generic binary), hbal(1) (cluster balancer), hspace(1) (capacity calculation), hail(1) (IAllocator plugin), hscan(1) (data gatherer from remote clusters), hinfo(1) (cluster information printer), mon-collector(7) (data collectors interface).

COPYRIGHT

Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Google Inc. Permission is granted to copy, distribute and/or modify under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL.