Name

ganeti-masterd - Ganeti master daemon

Synopsis

ganeti-masterd [-f] [-d] [--no-voting]

DESCRIPTION

The ganeti-masterd is the daemon which is responsible for the overall cluster coordination. Without it, no change can be performed on the cluster.

For testing purposes, you can give the -f option and the program won't detach from the running terminal.

Debug-level message can be activated by giving the -d option.

ROLE

The role of the master daemon is to coordinate all the actions that change the state of the cluster. Things like accepting new jobs, coordinating the changes on nodes (via RPC calls to the respective node daemons), maintaining the configuration and so on are done via this daemon.

The only action that can be done without the master daemon is the failover of the master role to another node in the cluster, via the gnt-cluster master-failover command.

If the master daemon is stopped, the instances are not affected, but they won't be restarted automatically in case of failure.

STARTUP

At startup, the master daemon will confirm with the node daemons that the node it is running is indeed the master node of the cluster. It will abort if it doesn't get half plus one positive answers (offline nodes are queried too, just in case our configuration is stale).

For small clusters with a number of nodes down, and especially for two-node clusters where the other has gone done, this creates a problem. In this case the --no-voting option can be used to skip this process. The option requires interactive confirmation, as having two masters on the same cluster is a very dangerous situation and will most likely lead to data loss.

SHUTDOWN

When the master daemon receives a SIGINT (Ctrl-C) or SIGTERM signal, it stops accepting new jobs and prepares to shut down shortly after jobs running at the time finish. Meanwhile it still responds to LUXI requests. Pending jobs are re-queued after the daemon is started again. When a second signal is received, the master daemon terminates without waiting (it might still need to wait for some threads to finish). Note that the latter, as well as sending SIGKILL, may leave the cluster in an inconsistent state.

JOB QUEUE

The master daemon maintains a job queue (located under the directory /var/lib/ganeti/queue) in which all current jobs are stored, one job per file serialized in JSON format; in this directory a subdirectory called archive holds archived job files.

The moving of jobs from the current to the queue directory is done via a request to the master; this can be accomplished from the command line with the gnt-job archive or gnt-job autoarchive commands. In case of problems with the master, a job file can simply be moved away or deleted (but this might leave the cluster inconsistent).

COMMUNICATION PROTOCOL

The master accepts commands over a Unix socket, using JSON serialized messages separated by a specific byte sequence. For more details, see the design documentation supplied with Ganeti.

REPORTING BUGS

Report bugs to project website or contact the developers using the Ganeti mailing list.

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-2014 Google Inc. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.