Revision 320d986d
b/Makefile.am | ||
---|---|---|
179 | 179 |
|
180 | 180 |
man_MANS = \ |
181 | 181 |
man/ganeti.7 \ |
182 |
man/ganeti-masterd.8 \ |
|
182 | 183 |
man/ganeti-noded.8 \ |
183 | 184 |
man/ganeti-os-interface.7 \ |
185 |
man/ganeti-rapi.8 \ |
|
184 | 186 |
man/ganeti-watcher.8 \ |
185 | 187 |
man/gnt-backup.8 \ |
186 | 188 |
man/gnt-cluster.8 \ |
b/man/ganeti-masterd.sgml | ||
---|---|---|
1 |
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [ |
|
2 |
|
|
3 |
<!-- Please adjust the date whenever revising the manpage. --> |
|
4 |
<!ENTITY dhdate "<date>February 11, 2009</date>"> |
|
5 |
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are |
|
6 |
allowed: see man(7), man(1). --> |
|
7 |
<!ENTITY dhsection "<manvolnum>8</manvolnum>"> |
|
8 |
<!ENTITY dhucpackage "<refentrytitle>ganeti-masterd</refentrytitle>"> |
|
9 |
<!ENTITY dhpackage "ganeti-masterd"> |
|
10 |
|
|
11 |
<!ENTITY debian "<productname>Debian</productname>"> |
|
12 |
<!ENTITY gnu "<acronym>GNU</acronym>"> |
|
13 |
<!ENTITY gpl "&gnu; <acronym>GPL</acronym>"> |
|
14 |
<!ENTITY footer SYSTEM "footer.sgml"> |
|
15 |
]> |
|
16 |
|
|
17 |
<refentry> |
|
18 |
<refentryinfo> |
|
19 |
<copyright> |
|
20 |
<year>2008</year> |
|
21 |
<year>2009</year> |
|
22 |
<holder>Google Inc.</holder> |
|
23 |
</copyright> |
|
24 |
&dhdate; |
|
25 |
</refentryinfo> |
|
26 |
<refmeta> |
|
27 |
&dhucpackage; |
|
28 |
|
|
29 |
&dhsection; |
|
30 |
<refmiscinfo>ganeti 2.0</refmiscinfo> |
|
31 |
</refmeta> |
|
32 |
<refnamediv> |
|
33 |
<refname>&dhpackage;</refname> |
|
34 |
|
|
35 |
<refpurpose>ganeti master daemon</refpurpose> |
|
36 |
</refnamediv> |
|
37 |
<refsynopsisdiv> |
|
38 |
<cmdsynopsis> |
|
39 |
<command>&dhpackage; </command> |
|
40 |
<arg>-f</arg> |
|
41 |
<arg>-d</arg> |
|
42 |
<arg>--no-voting</arg> |
|
43 |
|
|
44 |
</cmdsynopsis> |
|
45 |
</refsynopsisdiv> |
|
46 |
<refsect1> |
|
47 |
<title>DESCRIPTION</title> |
|
48 |
|
|
49 |
<para> |
|
50 |
The <command>&dhpackage;</command> is the daemon which is |
|
51 |
responsible for the overall cluster coordination. Without it, no |
|
52 |
change can be performed on the cluster. |
|
53 |
</para> |
|
54 |
|
|
55 |
<para> |
|
56 |
For testing purposes, you can give the <option>-f</option> |
|
57 |
option and the program won't detach from the running terminal. |
|
58 |
</para> |
|
59 |
|
|
60 |
<para> |
|
61 |
Debug-level message can be activated by giving the |
|
62 |
<option>-d</option> option. |
|
63 |
</para> |
|
64 |
<refsect2> |
|
65 |
<title>ROLE</title> |
|
66 |
<para> |
|
67 |
The role of the master daemon is to coordinate all the actions |
|
68 |
that change the state of the cluster. Things like accepting |
|
69 |
new jobs, coordinating the changes on nodes (via RPC calls to |
|
70 |
the respective node daemons), maintaining the configuration |
|
71 |
and so on are done via this daemon. |
|
72 |
</para> |
|
73 |
|
|
74 |
<para> |
|
75 |
The only action that can be done without the master daemon is |
|
76 |
the failover of the master role to another node in the |
|
77 |
cluster, via the <command>gnt-cluster masterfailover</command> |
|
78 |
command. |
|
79 |
</para> |
|
80 |
|
|
81 |
<para> |
|
82 |
If the master daemon is stopped, the instances are not |
|
83 |
affected, but they won't be restarted automatically in case of |
|
84 |
failure. |
|
85 |
</para> |
|
86 |
</refsect2> |
|
87 |
|
|
88 |
<refsect2> |
|
89 |
<title>STARTUP</title> |
|
90 |
<para> |
|
91 |
At startup, the master daemon will confirm with the node |
|
92 |
daemons that the node it is running is indeed the master node |
|
93 |
of the cluster. It will abort if it doesn't get half plus one |
|
94 |
positive answers (offline nodes are queried too, just in case |
|
95 |
our configuration is stale). |
|
96 |
</para> |
|
97 |
|
|
98 |
<para> |
|
99 |
For small clusters with a number of nodes down, and especially |
|
100 |
for two-node clusters where the other has gone done, this |
|
101 |
creates a problem. In this case the |
|
102 |
<option>--no-voting</option> option can be used to skip this |
|
103 |
process. The option requires interactive confirmation, as |
|
104 |
having two masters on the same cluster is a very dangerous |
|
105 |
situation and will most likely lead to data loss. |
|
106 |
</para> |
|
107 |
</refsect2> |
|
108 |
|
|
109 |
<refsect2> |
|
110 |
<title>JOB QUEUE</title> |
|
111 |
<para> |
|
112 |
The master daemon maintains a job queue (located under |
|
113 |
<filename |
|
114 |
class="directory">@LOCALSTATEDIR@/lib/ganeti/queue</filename>) in |
|
115 |
which all current jobs are stored, one job per file serialized |
|
116 |
in JSON format; in this directory a subdirectory called |
|
117 |
<filename class="directory">archive</filename> holds archived |
|
118 |
job files. |
|
119 |
</para> |
|
120 |
|
|
121 |
<para> |
|
122 |
The moving of jobs from the current to the queue directory is |
|
123 |
done via a request to the master; this can be accomplished |
|
124 |
from the command line with the <command>gnt-job |
|
125 |
archive</command> or <command>gnt-job autoarchive</command> |
|
126 |
commands. In case of problems with the master, a job file can |
|
127 |
simply be moved away or deleted (but this might leave the |
|
128 |
cluster inconsistent). |
|
129 |
</para> |
|
130 |
|
|
131 |
</refsect2> |
|
132 |
|
|
133 |
<refsect2> |
|
134 |
<title>COMMUNICATION PROTOCOL</title> |
|
135 |
<para> |
|
136 |
The master accepts commands over a Unix socket, using JSON |
|
137 |
serialized messages separated by a specific byte sequence. For |
|
138 |
more details, see the design documentation supplied with |
|
139 |
Ganeti. |
|
140 |
</para> |
|
141 |
</refsect2> |
|
142 |
|
|
143 |
</refsect1> |
|
144 |
|
|
145 |
&footer; |
|
146 |
|
|
147 |
</refentry> |
|
148 |
|
|
149 |
<!-- Keep this comment at the end of the file |
|
150 |
Local variables: |
|
151 |
mode: sgml |
|
152 |
sgml-omittag:t |
|
153 |
sgml-shorttag:t |
|
154 |
sgml-minimize-attributes:nil |
|
155 |
sgml-always-quote-attributes:t |
|
156 |
sgml-indent-step:2 |
|
157 |
sgml-indent-data:t |
|
158 |
sgml-parent-document:nil |
|
159 |
sgml-default-dtd-file:nil |
|
160 |
sgml-exposed-tags:nil |
|
161 |
sgml-local-catalogs:nil |
|
162 |
sgml-local-ecat-files:nil |
|
163 |
End: |
|
164 |
--> |
b/man/ganeti-noded.sgml | ||
---|---|---|
1 | 1 |
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [ |
2 | 2 |
|
3 | 3 |
<!-- Please adjust the date whenever revising the manpage. --> |
4 |
<!ENTITY dhdate "<date>June 16, 2007</date>">
|
|
4 |
<!ENTITY dhdate "<date>February 11, 2009</date>">
|
|
5 | 5 |
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are |
6 | 6 |
allowed: see man(7), man(1). --> |
7 | 7 |
<!ENTITY dhsection "<manvolnum>8</manvolnum>"> |
... | ... | |
19 | 19 |
<copyright> |
20 | 20 |
<year>2006</year> |
21 | 21 |
<year>2007</year> |
22 |
<year>2008</year> |
|
23 |
<year>2009</year> |
|
22 | 24 |
<holder>Google Inc.</holder> |
23 | 25 |
</copyright> |
24 | 26 |
&dhdate; |
... | ... | |
27 | 29 |
&dhucpackage; |
28 | 30 |
|
29 | 31 |
&dhsection; |
30 |
<refmiscinfo>ganeti 1.2</refmiscinfo>
|
|
32 |
<refmiscinfo>ganeti 2.0</refmiscinfo>
|
|
31 | 33 |
</refmeta> |
32 | 34 |
<refnamediv> |
33 | 35 |
<refname>&dhpackage;</refname> |
34 | 36 |
|
35 |
<refpurpose>ganeti daemon</refpurpose> |
|
37 |
<refpurpose>ganeti node daemon</refpurpose>
|
|
36 | 38 |
</refnamediv> |
37 | 39 |
<refsynopsisdiv> |
38 | 40 |
<cmdsynopsis> |
39 | 41 |
<command>&dhpackage; </command> |
40 | 42 |
<arg>-f</arg> |
43 |
<arg>-d</arg> |
|
41 | 44 |
|
42 | 45 |
</cmdsynopsis> |
43 | 46 |
</refsynopsisdiv> |
... | ... | |
46 | 49 |
|
47 | 50 |
<para> |
48 | 51 |
The <command>&dhpackage;</command> is the daemon which is |
49 |
responsible for the cluster functions in the ganeti system.
|
|
52 |
responsible for the node functions in the ganeti system.
|
|
50 | 53 |
</para> |
51 | 54 |
|
52 | 55 |
<para> |
53 | 56 |
For testing purposes, you can give the <option>-f</option> |
54 | 57 |
option and the program won't detach from the running terminal. |
55 | 58 |
</para> |
59 |
|
|
60 |
<para> |
|
61 |
Debug-level message can be activated by giving the |
|
62 |
<option>-d</option> option. |
|
63 |
</para> |
|
56 | 64 |
<refsect2> |
57 | 65 |
<title>ROLE</title> |
58 | 66 |
<para> |
... | ... | |
63 | 71 |
</para> |
64 | 72 |
|
65 | 73 |
<para> |
74 |
Also, in some cases the startup/shutdown of the master daemon |
|
75 |
are done via the node daemon, and the cluster IP address is |
|
76 |
also added/removed to the master node via it. |
|
77 |
</para> |
|
78 |
|
|
79 |
<para> |
|
66 | 80 |
If the node daemon is stopped, the instances are not affected, |
67 | 81 |
but the master won't be able to talk to that node. |
68 | 82 |
</para> |
... | ... | |
71 | 85 |
<refsect2> |
72 | 86 |
<title>COMMUNICATION PROTOCOL</title> |
73 | 87 |
<para> |
74 |
Currently the master-node protocol is done using the Twisted
|
|
75 |
perspective broker libraries.
|
|
88 |
Currently the master-node RPC is done using a simple json-RPC
|
|
89 |
over HTTP(S).
|
|
76 | 90 |
</para> |
77 | 91 |
</refsect2> |
78 | 92 |
|
b/man/ganeti-rapi.sgml | ||
---|---|---|
1 |
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [ |
|
2 |
|
|
3 |
<!-- Fill in your name for FIRSTNAME and SURNAME. --> |
|
4 |
<!-- Please adjust the date whenever revising the manpage. --> |
|
5 |
<!ENTITY dhdate "<date>February 11, 2009</date>"> |
|
6 |
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are |
|
7 |
allowed: see man(7), man(1). --> |
|
8 |
<!ENTITY dhsection "<manvolnum>8</manvolnum>"> |
|
9 |
<!ENTITY dhucpackage "<refentrytitle>ganeti-rapi</refentrytitle>"> |
|
10 |
<!ENTITY dhpackage "ganeti-rapi"> |
|
11 |
|
|
12 |
<!ENTITY debian "<productname>Debian</productname>"> |
|
13 |
<!ENTITY gnu "<acronym>GNU</acronym>"> |
|
14 |
<!ENTITY gpl "&gnu; <acronym>GPL</acronym>"> |
|
15 |
<!ENTITY footer SYSTEM "footer.sgml"> |
|
16 |
]> |
|
17 |
|
|
18 |
<refentry> |
|
19 |
<refentryinfo> |
|
20 |
<copyright> |
|
21 |
<year>2008</year> |
|
22 |
<year>2009</year> |
|
23 |
<holder>Google Inc.</holder> |
|
24 |
</copyright> |
|
25 |
&dhdate; |
|
26 |
</refentryinfo> |
|
27 |
<refmeta> |
|
28 |
&dhucpackage; |
|
29 |
|
|
30 |
&dhsection; |
|
31 |
<refmiscinfo>ganeti 2.0</refmiscinfo> |
|
32 |
</refmeta> |
|
33 |
<refnamediv> |
|
34 |
<refname>&dhpackage;</refname> |
|
35 |
|
|
36 |
<refpurpose>ganeti remote API daemon</refpurpose> |
|
37 |
</refnamediv> |
|
38 |
<refsynopsisdiv> |
|
39 |
<cmdsynopsis> |
|
40 |
<command>&dhpackage; </command> |
|
41 |
<arg>-d</arg> |
|
42 |
<arg>-f</arg> |
|
43 |
<arg>-p <replaceable>PORT</replaceable></arg> |
|
44 |
<arg>--no-ssl</arg> |
|
45 |
<arg>-K <replaceable>SSL_KEY_FILE</replaceable></arg> |
|
46 |
<arg>-C <replaceable>SSL_CERT_FILE</replaceable></arg> |
|
47 |
|
|
48 |
</cmdsynopsis> |
|
49 |
</refsynopsisdiv> |
|
50 |
<refsect1> |
|
51 |
<title>DESCRIPTION</title> |
|
52 |
|
|
53 |
<para> |
|
54 |
<command>&dhpackage;</command> is the daemon providing a remote |
|
55 |
API for Ganeti clusters. |
|
56 |
</para> |
|
57 |
|
|
58 |
<para> |
|
59 |
It is automatically started on the master node, and by default |
|
60 |
it uses SSL encryption. This can be disabled by passing the |
|
61 |
<option>--no-ssl</option> option, or alternatively the |
|
62 |
certificate used can be changed via the <option>-C</option> |
|
63 |
option and the key via the <option>-K</option> option. |
|
64 |
</para> |
|
65 |
|
|
66 |
<para> |
|
67 |
The daemon will listen by default on the port 5080, but this can |
|
68 |
be changed via the <option>-p</option> option. |
|
69 |
</para> |
|
70 |
|
|
71 |
<para> |
|
72 |
See the <emphasis>Ganeti remote API</emphasis> documentation for |
|
73 |
further information. |
|
74 |
</para> |
|
75 |
|
|
76 |
<para> |
|
77 |
Requests are logged to |
|
78 |
<filename>@LOCALSTATEDIR@/log/ganeti/rapi-daemon.log</filename>, |
|
79 |
in the same format as for the node and master daemon. |
|
80 |
</para> |
|
81 |
|
|
82 |
</refsect1> |
|
83 |
|
|
84 |
&footer; |
|
85 |
|
|
86 |
</refentry> |
|
87 |
|
|
88 |
<!-- Keep this comment at the end of the file |
|
89 |
Local variables: |
|
90 |
mode: sgml |
|
91 |
sgml-omittag:t |
|
92 |
sgml-shorttag:t |
|
93 |
sgml-minimize-attributes:nil |
|
94 |
sgml-always-quote-attributes:t |
|
95 |
sgml-indent-step:2 |
|
96 |
sgml-indent-data:t |
|
97 |
sgml-parent-document:nil |
|
98 |
sgml-default-dtd-file:nil |
|
99 |
sgml-exposed-tags:nil |
|
100 |
sgml-local-catalogs:nil |
|
101 |
sgml-local-ecat-files:nil |
|
102 |
End: |
|
103 |
--> |
b/man/ganeti-watcher.sgml | ||
---|---|---|
2 | 2 |
|
3 | 3 |
<!-- Fill in your name for FIRSTNAME and SURNAME. --> |
4 | 4 |
<!-- Please adjust the date whenever revising the manpage. --> |
5 |
<!ENTITY dhdate "<date>June 20, 2007</date>">
|
|
5 |
<!ENTITY dhdate "<date>February 11, 2009</date>">
|
|
6 | 6 |
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are |
7 | 7 |
allowed: see man(7), man(1). --> |
8 | 8 |
<!ENTITY dhsection "<manvolnum>8</manvolnum>"> |
... | ... | |
19 | 19 |
<refentryinfo> |
20 | 20 |
<copyright> |
21 | 21 |
<year>2007</year> |
22 |
<year>2008</year> |
|
23 |
<year>2009</year> |
|
22 | 24 |
<holder>Google Inc.</holder> |
23 | 25 |
</copyright> |
24 | 26 |
&dhdate; |
... | ... | |
27 | 29 |
&dhucpackage; |
28 | 30 |
|
29 | 31 |
&dhsection; |
30 |
<refmiscinfo>ganeti 1.2</refmiscinfo>
|
|
32 |
<refmiscinfo>ganeti 2.0</refmiscinfo>
|
|
31 | 33 |
</refmeta> |
32 | 34 |
<refnamediv> |
33 | 35 |
<refname>&dhpackage;</refname> |
... | ... | |
61 | 63 |
secondaries on nodes that have been rebooted. |
62 | 64 |
</para> |
63 | 65 |
|
64 |
<para>In order to prevent piling up commands, all the |
|
65 |
<emphasis>gnt-*</emphasis> commands executed by ganeti-watcher are |
|
66 |
run with a timeout of 15 seconds. |
|
66 |
<para> |
|
67 |
The watcher does synchronous queries but will submit jobs for |
|
68 |
executing the changes. Due to locking, it could be that the jobs |
|
69 |
execute much later than the watcher executes them. |
|
67 | 70 |
</para> |
68 | 71 |
|
69 | 72 |
<para> |
Also available in: Unified diff