Revision c2e818b6
/dev/null | ||
---|---|---|
1 |
<refsect1> |
|
2 |
<title>REPORTING BUGS</title> |
|
3 |
<para> |
|
4 |
Report bugs to <ulink |
|
5 |
url="http://code.google.com/p/ganeti/"></ulink> or contact the |
|
6 |
developers using the Ganeti mailing list |
|
7 |
<ganeti@googlegroups.com>. |
|
8 |
</para> |
|
9 |
</refsect1> |
|
10 |
|
|
11 |
<refsect1> |
|
12 |
<title>SEE ALSO</title> |
|
13 |
|
|
14 |
<para> |
|
15 |
Ganeti overview and specifications: |
|
16 |
<citerefentry> |
|
17 |
<refentrytitle>ganeti</refentrytitle> |
|
18 |
<manvolnum>7</manvolnum> |
|
19 |
</citerefentry> (general overview), |
|
20 |
<citerefentry> |
|
21 |
<refentrytitle>ganeti-os-interface</refentrytitle> |
|
22 |
<manvolnum>7</manvolnum> |
|
23 |
</citerefentry> (guest OS definitions). |
|
24 |
|
|
25 |
</para> |
|
26 |
<para>Ganeti commands: |
|
27 |
<citerefentry> |
|
28 |
<refentrytitle>gnt-cluster</refentrytitle> |
|
29 |
<manvolnum>8</manvolnum> |
|
30 |
</citerefentry> (cluster-wide commands), |
|
31 |
<citerefentry> |
|
32 |
<refentrytitle>gnt-job</refentrytitle> |
|
33 |
<manvolnum>8</manvolnum> |
|
34 |
</citerefentry> (job-related commands), |
|
35 |
<citerefentry> |
|
36 |
<refentrytitle>gnt-node</refentrytitle> |
|
37 |
<manvolnum>8</manvolnum> |
|
38 |
</citerefentry> (node-related commands), |
|
39 |
<citerefentry> |
|
40 |
<refentrytitle>gnt-instance</refentrytitle> |
|
41 |
<manvolnum>8</manvolnum> |
|
42 |
</citerefentry> (instance commands), |
|
43 |
<citerefentry> |
|
44 |
<refentrytitle>gnt-os</refentrytitle> |
|
45 |
<manvolnum>8</manvolnum> |
|
46 |
</citerefentry> (guest OS commands), |
|
47 |
<citerefentry> |
|
48 |
<refentrytitle>gnt-backup</refentrytitle> |
|
49 |
<manvolnum>8</manvolnum> |
|
50 |
</citerefentry> (instance import/export commands), |
|
51 |
<citerefentry> |
|
52 |
<refentrytitle>gnt-debug</refentrytitle> |
|
53 |
<manvolnum>8</manvolnum> |
|
54 |
</citerefentry> (debug commands). |
|
55 |
</para> |
|
56 |
|
|
57 |
<para>Ganeti daemons: |
|
58 |
<citerefentry> |
|
59 |
<refentrytitle>ganeti-watcher</refentrytitle> |
|
60 |
<manvolnum>8</manvolnum> |
|
61 |
</citerefentry> (automatic instance restarter), |
|
62 |
<citerefentry> |
|
63 |
<refentrytitle>ganeti-cleaner</refentrytitle> |
|
64 |
<manvolnum>8</manvolnum> |
|
65 |
</citerefentry> (job queue cleaner), |
|
66 |
<citerefentry> |
|
67 |
<refentrytitle>ganeti-noded</refentrytitle> |
|
68 |
<manvolnum>8</manvolnum> |
|
69 |
</citerefentry> (node daemon), |
|
70 |
<citerefentry> |
|
71 |
<refentrytitle>ganeti-masterd</refentrytitle> |
|
72 |
<manvolnum>8</manvolnum> |
|
73 |
</citerefentry> (master daemon), |
|
74 |
<citerefentry> |
|
75 |
<refentrytitle>ganeti-rapi</refentrytitle> |
|
76 |
<manvolnum>8</manvolnum> |
|
77 |
</citerefentry> (remote API daemon). |
|
78 |
</para> |
|
79 |
|
|
80 |
</refsect1> |
|
81 |
|
|
82 |
<refsect1> |
|
83 |
<title>COPYRIGHT</title> |
|
84 |
|
|
85 |
<para> |
|
86 |
Copyright (C) 2006, 2007, 2008, 2009, 2010 Google Inc. Permission is |
|
87 |
granted to copy, distribute and/or modify under the terms of the |
|
88 |
&gnu; General Public License as published by the Free Software |
|
89 |
Foundation; either version 2 of the License, or (at your option) |
|
90 |
any later version. |
|
91 |
</para> |
|
92 |
|
|
93 |
<para> |
|
94 |
On Debian systems, the complete text of the GNU General Public |
|
95 |
License can be found in /usr/share/common-licenses/GPL. |
|
96 |
</para> |
|
97 |
|
|
98 |
</refsect1> |
/dev/null | ||
---|---|---|
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>June 08, 2010</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-cleaner</refentrytitle>"> |
|
10 |
<!ENTITY dhpackage "ganeti-cleaner"> |
|
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>2009</year> |
|
22 |
<year>2010</year> |
|
23 |
<holder>Google Inc.</holder> |
|
24 |
</copyright> |
|
25 |
&dhdate; |
|
26 |
</refentryinfo> |
|
27 |
<refmeta> |
|
28 |
&dhucpackage; |
|
29 |
|
|
30 |
&dhsection; |
|
31 |
<refmiscinfo>Ganeti 2.2</refmiscinfo> |
|
32 |
</refmeta> |
|
33 |
<refnamediv> |
|
34 |
<refname>&dhpackage;</refname> |
|
35 |
|
|
36 |
<refpurpose>Ganeti job queue cleaner</refpurpose> |
|
37 |
</refnamediv> |
|
38 |
<refsynopsisdiv> |
|
39 |
<cmdsynopsis> |
|
40 |
<command>&dhpackage;</command> |
|
41 |
|
|
42 |
</cmdsynopsis> |
|
43 |
</refsynopsisdiv> |
|
44 |
<refsect1> |
|
45 |
<title>DESCRIPTION</title> |
|
46 |
|
|
47 |
<para> |
|
48 |
The <command>&dhpackage;</command> is a periodically run script to clean |
|
49 |
old job files from the job queue archive and to remove expired X509 |
|
50 |
certificates and keys. |
|
51 |
</para> |
|
52 |
|
|
53 |
<para> |
|
54 |
<command>&dhpackage;</command> automatically removes all files older than |
|
55 |
21 days from |
|
56 |
<filename>@LOCALSTATEDIR@/lib/ganeti/queue/archive</filename> and all |
|
57 |
expired certificates and keys from |
|
58 |
<filename>@LOCALSTATEDIR@/run/ganeti/crypto</filename> |
|
59 |
</para> |
|
60 |
|
|
61 |
</refsect1> |
|
62 |
|
|
63 |
&footer; |
|
64 |
|
|
65 |
</refentry> |
|
66 |
|
|
67 |
<!-- Keep this comment at the end of the file |
|
68 |
Local variables: |
|
69 |
mode: sgml |
|
70 |
sgml-omittag:t |
|
71 |
sgml-shorttag:t |
|
72 |
sgml-minimize-attributes:nil |
|
73 |
sgml-always-quote-attributes:t |
|
74 |
sgml-indent-step:2 |
|
75 |
sgml-indent-data:t |
|
76 |
sgml-parent-document:nil |
|
77 |
sgml-default-dtd-file:nil |
|
78 |
sgml-exposed-tags:nil |
|
79 |
sgml-local-catalogs:nil |
|
80 |
sgml-local-ecat-files:nil |
|
81 |
End: |
|
82 |
--> |
/dev/null | ||
---|---|---|
1 |
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [ |
|
2 |
|
|
3 |
<!-- Please adjust the date whenever revising the manpage. --> |
|
4 |
<!ENTITY dhdate "<date>June 08, 2010</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-confd</refentrytitle>"> |
|
9 |
<!ENTITY dhpackage "ganeti-confd"> |
|
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>2009</year> |
|
21 |
<holder>Google Inc.</holder> |
|
22 |
</copyright> |
|
23 |
&dhdate; |
|
24 |
</refentryinfo> |
|
25 |
<refmeta> |
|
26 |
&dhucpackage; |
|
27 |
|
|
28 |
&dhsection; |
|
29 |
<refmiscinfo>Ganeti 2.2</refmiscinfo> |
|
30 |
</refmeta> |
|
31 |
<refnamediv> |
|
32 |
<refname>&dhpackage;</refname> |
|
33 |
|
|
34 |
<refpurpose>Ganeti conf daemon</refpurpose> |
|
35 |
</refnamediv> |
|
36 |
<refsynopsisdiv> |
|
37 |
<cmdsynopsis> |
|
38 |
<command>&dhpackage; </command> |
|
39 |
<arg>-f</arg> |
|
40 |
<arg>-d</arg> |
|
41 |
|
|
42 |
</cmdsynopsis> |
|
43 |
</refsynopsisdiv> |
|
44 |
<refsect1> |
|
45 |
<title>DESCRIPTION</title> |
|
46 |
|
|
47 |
<para> |
|
48 |
<command>&dhpackage;</command> is a daemon used to answer queries related |
|
49 |
to the configuration of a Ganeti cluster. |
|
50 |
</para> |
|
51 |
|
|
52 |
<para> |
|
53 |
For testing purposes, you can give the <option>-f</option> |
|
54 |
option and the program won't detach from the running terminal. |
|
55 |
</para> |
|
56 |
|
|
57 |
<para> |
|
58 |
Debug-level message can be activated by giving the |
|
59 |
<option>-d</option> option. |
|
60 |
</para> |
|
61 |
<refsect2> |
|
62 |
<title>ROLE</title> |
|
63 |
<para> |
|
64 |
The role of the conf daemon is to make sure we have a highly available |
|
65 |
and very fast way to query cluster configuration values. This daemon is |
|
66 |
automatically active on all master candidates, and so has no single |
|
67 |
point of failure. It communicates via UDP so each query can easily be |
|
68 |
sent to multiple servers, and it answers queries from a cached copy of |
|
69 |
the config it keeps in memory, so no disk access is required to get an |
|
70 |
answer. |
|
71 |
</para> |
|
72 |
|
|
73 |
<para> |
|
74 |
The config is reloaded from disk automatically when it changes, with a |
|
75 |
rate limit of once per second. |
|
76 |
</para> |
|
77 |
|
|
78 |
<para> |
|
79 |
If the conf daemon is stopped on all nodes, its clients won't be able |
|
80 |
to get query answers. |
|
81 |
</para> |
|
82 |
</refsect2> |
|
83 |
|
|
84 |
<refsect2> |
|
85 |
<title>COMMUNICATION PROTOCOL</title> |
|
86 |
<para> |
|
87 |
The confd protocol is an HMAC authenticated json-encoded custom format, |
|
88 |
over UDP. A client library is provided to make it easy to write |
|
89 |
software to query confd. More information can be found in the Ganeti |
|
90 |
2.1 design doc, and an example usage can be seen in the (external) NBMA |
|
91 |
daemon for Ganeti. |
|
92 |
</para> |
|
93 |
</refsect2> |
|
94 |
|
|
95 |
</refsect1> |
|
96 |
|
|
97 |
&footer; |
|
98 |
|
|
99 |
</refentry> |
|
100 |
|
|
101 |
<!-- Keep this comment at the end of the file |
|
102 |
Local variables: |
|
103 |
mode: sgml |
|
104 |
sgml-omittag:t |
|
105 |
sgml-shorttag:t |
|
106 |
sgml-minimize-attributes:nil |
|
107 |
sgml-always-quote-attributes:t |
|
108 |
sgml-indent-step:2 |
|
109 |
sgml-indent-data:t |
|
110 |
sgml-parent-document:nil |
|
111 |
sgml-default-dtd-file:nil |
|
112 |
sgml-exposed-tags:nil |
|
113 |
sgml-local-catalogs:nil |
|
114 |
sgml-local-ecat-files:nil |
|
115 |
End: |
|
116 |
--> |
/dev/null | ||
---|---|---|
1 |
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [ |
|
2 |
|
|
3 |
<!-- Please adjust the date whenever revising the manpage. --> |
|
4 |
<!ENTITY dhdate "<date>June 08, 2010</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 |
<year>2010</year> |
|
23 |
<holder>Google Inc.</holder> |
|
24 |
</copyright> |
|
25 |
&dhdate; |
|
26 |
</refentryinfo> |
|
27 |
<refmeta> |
|
28 |
&dhucpackage; |
|
29 |
|
|
30 |
&dhsection; |
|
31 |
<refmiscinfo>Ganeti 2.2</refmiscinfo> |
|
32 |
</refmeta> |
|
33 |
<refnamediv> |
|
34 |
<refname>&dhpackage;</refname> |
|
35 |
|
|
36 |
<refpurpose>Ganeti master daemon</refpurpose> |
|
37 |
</refnamediv> |
|
38 |
<refsynopsisdiv> |
|
39 |
<cmdsynopsis> |
|
40 |
<command>&dhpackage; </command> |
|
41 |
<arg>-f</arg> |
|
42 |
<arg>-d</arg> |
|
43 |
<arg>--no-voting</arg> |
|
44 |
|
|
45 |
</cmdsynopsis> |
|
46 |
</refsynopsisdiv> |
|
47 |
<refsect1> |
|
48 |
<title>DESCRIPTION</title> |
|
49 |
|
|
50 |
<para> |
|
51 |
The <command>&dhpackage;</command> is the daemon which is |
|
52 |
responsible for the overall cluster coordination. Without it, no |
|
53 |
change can be performed on the cluster. |
|
54 |
</para> |
|
55 |
|
|
56 |
<para> |
|
57 |
For testing purposes, you can give the <option>-f</option> |
|
58 |
option and the program won't detach from the running terminal. |
|
59 |
</para> |
|
60 |
|
|
61 |
<para> |
|
62 |
Debug-level message can be activated by giving the |
|
63 |
<option>-d</option> option. |
|
64 |
</para> |
|
65 |
<refsect2> |
|
66 |
<title>ROLE</title> |
|
67 |
<para> |
|
68 |
The role of the master daemon is to coordinate all the actions |
|
69 |
that change the state of the cluster. Things like accepting |
|
70 |
new jobs, coordinating the changes on nodes (via RPC calls to |
|
71 |
the respective node daemons), maintaining the configuration |
|
72 |
and so on are done via this daemon. |
|
73 |
</para> |
|
74 |
|
|
75 |
<para> |
|
76 |
The only action that can be done without the master daemon is |
|
77 |
the failover of the master role to another node in the |
|
78 |
cluster, via the <command>gnt-cluster |
|
79 |
master-failover</command> command. |
|
80 |
</para> |
|
81 |
|
|
82 |
<para> |
|
83 |
If the master daemon is stopped, the instances are not |
|
84 |
affected, but they won't be restarted automatically in case of |
|
85 |
failure. |
|
86 |
</para> |
|
87 |
</refsect2> |
|
88 |
|
|
89 |
<refsect2> |
|
90 |
<title>STARTUP</title> |
|
91 |
<para> |
|
92 |
At startup, the master daemon will confirm with the node |
|
93 |
daemons that the node it is running is indeed the master node |
|
94 |
of the cluster. It will abort if it doesn't get half plus one |
|
95 |
positive answers (offline nodes are queried too, just in case |
|
96 |
our configuration is stale). |
|
97 |
</para> |
|
98 |
|
|
99 |
<para> |
|
100 |
For small clusters with a number of nodes down, and especially |
|
101 |
for two-node clusters where the other has gone done, this |
|
102 |
creates a problem. In this case the |
|
103 |
<option>--no-voting</option> option can be used to skip this |
|
104 |
process. The option requires interactive confirmation, as |
|
105 |
having two masters on the same cluster is a very dangerous |
|
106 |
situation and will most likely lead to data loss. |
|
107 |
</para> |
|
108 |
</refsect2> |
|
109 |
|
|
110 |
<refsect2> |
|
111 |
<title>JOB QUEUE</title> |
|
112 |
<para> |
|
113 |
The master daemon maintains a job queue (located under |
|
114 |
<filename |
|
115 |
class="directory">@LOCALSTATEDIR@/lib/ganeti/queue</filename>) in |
|
116 |
which all current jobs are stored, one job per file serialized |
|
117 |
in JSON format; in this directory a subdirectory called |
|
118 |
<filename class="directory">archive</filename> holds archived |
|
119 |
job files. |
|
120 |
</para> |
|
121 |
|
|
122 |
<para> |
|
123 |
The moving of jobs from the current to the queue directory is |
|
124 |
done via a request to the master; this can be accomplished |
|
125 |
from the command line with the <command>gnt-job |
|
126 |
archive</command> or <command>gnt-job autoarchive</command> |
|
127 |
commands. In case of problems with the master, a job file can |
|
128 |
simply be moved away or deleted (but this might leave the |
|
129 |
cluster inconsistent). |
|
130 |
</para> |
|
131 |
|
|
132 |
</refsect2> |
|
133 |
|
|
134 |
<refsect2> |
|
135 |
<title>COMMUNICATION PROTOCOL</title> |
|
136 |
<para> |
|
137 |
The master accepts commands over a Unix socket, using JSON |
|
138 |
serialized messages separated by a specific byte sequence. For |
|
139 |
more details, see the design documentation supplied with |
|
140 |
Ganeti. |
|
141 |
</para> |
|
142 |
</refsect2> |
|
143 |
|
|
144 |
</refsect1> |
|
145 |
|
|
146 |
&footer; |
|
147 |
|
|
148 |
</refentry> |
|
149 |
|
|
150 |
<!-- Keep this comment at the end of the file |
|
151 |
Local variables: |
|
152 |
mode: sgml |
|
153 |
sgml-omittag:t |
|
154 |
sgml-shorttag:t |
|
155 |
sgml-minimize-attributes:nil |
|
156 |
sgml-always-quote-attributes:t |
|
157 |
sgml-indent-step:2 |
|
158 |
sgml-indent-data:t |
|
159 |
sgml-parent-document:nil |
|
160 |
sgml-default-dtd-file:nil |
|
161 |
sgml-exposed-tags:nil |
|
162 |
sgml-local-catalogs:nil |
|
163 |
sgml-local-ecat-files:nil |
|
164 |
End: |
|
165 |
--> |
/dev/null | ||
---|---|---|
1 |
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [ |
|
2 |
|
|
3 |
<!-- Please adjust the date whenever revising the manpage. --> |
|
4 |
<!ENTITY dhdate "<date>June 08, 2010</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-noded</refentrytitle>"> |
|
9 |
<!ENTITY dhpackage "ganeti-noded"> |
|
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>2006</year> |
|
21 |
<year>2007</year> |
|
22 |
<year>2008</year> |
|
23 |
<year>2009</year> |
|
24 |
<year>2010</year> |
|
25 |
<holder>Google Inc.</holder> |
|
26 |
</copyright> |
|
27 |
&dhdate; |
|
28 |
</refentryinfo> |
|
29 |
<refmeta> |
|
30 |
&dhucpackage; |
|
31 |
|
|
32 |
&dhsection; |
|
33 |
<refmiscinfo>Ganeti 2.2</refmiscinfo> |
|
34 |
</refmeta> |
|
35 |
<refnamediv> |
|
36 |
<refname>&dhpackage;</refname> |
|
37 |
|
|
38 |
<refpurpose>Ganeti node daemon</refpurpose> |
|
39 |
</refnamediv> |
|
40 |
<refsynopsisdiv> |
|
41 |
<cmdsynopsis> |
|
42 |
<command>&dhpackage; </command> |
|
43 |
<arg>-f</arg> |
|
44 |
<arg>-d</arg> |
|
45 |
|
|
46 |
</cmdsynopsis> |
|
47 |
</refsynopsisdiv> |
|
48 |
<refsect1> |
|
49 |
<title>DESCRIPTION</title> |
|
50 |
|
|
51 |
<para> |
|
52 |
The <command>&dhpackage;</command> is the daemon which is |
|
53 |
responsible for the node functions in the Ganeti system. |
|
54 |
</para> |
|
55 |
|
|
56 |
<para> |
|
57 |
By default, in order to be able to support features such as node |
|
58 |
powercycling even on systems with a very damaged root disk, |
|
59 |
<command>ganeti-noded</command> locks itself in RAM using |
|
60 |
<citerefentry> |
|
61 |
<refentrytitle>mlockall</refentrytitle> |
|
62 |
<manvolnum>2</manvolnum> |
|
63 |
</citerefentry>. You can disable this feature by passing in the |
|
64 |
<option>--no-mlock</option> to the daemon. |
|
65 |
</para> |
|
66 |
|
|
67 |
<para> |
|
68 |
For testing purposes, you can give the <option>-f</option> |
|
69 |
option and the program won't detach from the running terminal. |
|
70 |
</para> |
|
71 |
|
|
72 |
<para> |
|
73 |
Debug-level message can be activated by giving the |
|
74 |
<option>-d</option> option. |
|
75 |
</para> |
|
76 |
|
|
77 |
<para> |
|
78 |
Logging to syslog, rather than its own log file, can be enabled by |
|
79 |
passing in the <option>--syslog</option> option. |
|
80 |
</para> |
|
81 |
|
|
82 |
<para> |
|
83 |
The <command>ganeti-noded</command> daemon listens to port 1811 TCP, on |
|
84 |
all interfaces, by default. This can be overridden by an entry the |
|
85 |
services database (<filename>/etc/services</filename>) or by passing the |
|
86 |
<option>-p</option> option. The <option>-b</option> option can be used to |
|
87 |
specify the address to bind to (defaults to 0.0.0.0). |
|
88 |
</para> |
|
89 |
|
|
90 |
<para> |
|
91 |
Ganeti noded communication is protected via SSL, with a key generated at |
|
92 |
cluster init time. This can be disabled with the |
|
93 |
<option>--no-ssl</option> option, or a different SSL key and certificate |
|
94 |
can be specified using the <option>-K</option> and <option>-C</option> |
|
95 |
options. |
|
96 |
</para> |
|
97 |
|
|
98 |
<refsect2> |
|
99 |
<title>ROLE</title> |
|
100 |
<para> |
|
101 |
The role of the node daemon is to do almost all the actions |
|
102 |
that change the state of the node. Things like creating disks |
|
103 |
for instances, activating disks, starting/stopping instance |
|
104 |
and so on are done via the node daemon. |
|
105 |
</para> |
|
106 |
|
|
107 |
<para> |
|
108 |
Also, in some cases the startup/shutdown of the master daemon |
|
109 |
are done via the node daemon, and the cluster IP address is |
|
110 |
also added/removed to the master node via it. |
|
111 |
</para> |
|
112 |
|
|
113 |
<para> |
|
114 |
If the node daemon is stopped, the instances are not affected, |
|
115 |
but the master won't be able to talk to that node. |
|
116 |
</para> |
|
117 |
</refsect2> |
|
118 |
|
|
119 |
<refsect2> |
|
120 |
<title>COMMUNICATION PROTOCOL</title> |
|
121 |
<para> |
|
122 |
Currently the master-node RPC is done using a simple RPC protocol built |
|
123 |
using JSON over HTTP(S). |
|
124 |
</para> |
|
125 |
</refsect2> |
|
126 |
|
|
127 |
</refsect1> |
|
128 |
|
|
129 |
&footer; |
|
130 |
|
|
131 |
</refentry> |
|
132 |
|
|
133 |
<!-- Keep this comment at the end of the file |
|
134 |
Local variables: |
|
135 |
mode: sgml |
|
136 |
sgml-omittag:t |
|
137 |
sgml-shorttag:t |
|
138 |
sgml-minimize-attributes:nil |
|
139 |
sgml-always-quote-attributes:t |
|
140 |
sgml-indent-step:2 |
|
141 |
sgml-indent-data:t |
|
142 |
sgml-parent-document:nil |
|
143 |
sgml-default-dtd-file:nil |
|
144 |
sgml-exposed-tags:nil |
|
145 |
sgml-local-catalogs:nil |
|
146 |
sgml-local-ecat-files:nil |
|
147 |
End: |
|
148 |
--> |
/dev/null | ||
---|---|---|
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>June 08, 2010</date>"> |
|
6 |
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are |
|
7 |
allowed: see man(7), man(1). --> |
|
8 |
<!ENTITY dhsection "<manvolnum>7</manvolnum>"> |
|
9 |
<!ENTITY dhucpackage "<refentrytitle>ganeti-os-interface</refentrytitle>"> |
|
10 |
<!ENTITY dhpackage "ganeti"> |
|
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>2006</year> |
|
22 |
<year>2007</year> |
|
23 |
<year>2008</year> |
|
24 |
<year>2009</year> |
|
25 |
<year>2010</year> |
|
26 |
<holder>Google Inc.</holder> |
|
27 |
</copyright> |
|
28 |
&dhdate; |
|
29 |
</refentryinfo> |
|
30 |
<refmeta> |
|
31 |
&dhucpackage; |
|
32 |
|
|
33 |
&dhsection; |
|
34 |
<refmiscinfo>Ganeti 2.2</refmiscinfo> |
|
35 |
</refmeta> |
|
36 |
<refnamediv> |
|
37 |
<refname>ganeti-os-interface</refname> |
|
38 |
|
|
39 |
<refpurpose>Specifications for guest OS types</refpurpose> |
|
40 |
</refnamediv> |
|
41 |
|
|
42 |
<refsect1> |
|
43 |
<title>DESCRIPTION</title> |
|
44 |
|
|
45 |
<para> |
|
46 |
The method of supporting guest operating systems in Ganeti is to |
|
47 |
have, for each guest OS type, a directory containing a number of |
|
48 |
required files. |
|
49 |
</para> |
|
50 |
|
|
51 |
|
|
52 |
</refsect1> |
|
53 |
<refsect1> |
|
54 |
<title>REFERENCE</title> |
|
55 |
|
|
56 |
<para> |
|
57 |
There are six required files: <filename>create</filename>, |
|
58 |
<filename>import</filename>, <filename>export</filename>, |
|
59 |
<filename>rename</filename> (executables), |
|
60 |
<filename>ganeti_api_version</filename> and |
|
61 |
<filename>variants.list</filename> (text file). |
|
62 |
</para> |
|
63 |
|
|
64 |
<refsect2> |
|
65 |
<title>Common environment</title> |
|
66 |
<para> |
|
67 |
All commands will get their input via environment variables. A |
|
68 |
common set of variables will be exported for all commands, and |
|
69 |
some of them might have extra ones. Note that all counts are |
|
70 |
zero-based. |
|
71 |
</para> |
|
72 |
<variablelist> |
|
73 |
<varlistentry> |
|
74 |
<term>OS_API_VERSION</term> |
|
75 |
<listitem> |
|
76 |
<simpara>The OS API version that the rest of the |
|
77 |
environment conforms to.</simpara> |
|
78 |
</listitem> |
|
79 |
</varlistentry> |
|
80 |
<varlistentry> |
|
81 |
<term>INSTANCE_NAME</term> |
|
82 |
<listitem> |
|
83 |
<simpara>The instance name the script should operate |
|
84 |
on.</simpara> |
|
85 |
</listitem> |
|
86 |
</varlistentry> |
|
87 |
<varlistentry> |
|
88 |
<term>INSTANCE_OS</term> |
|
89 |
<term>OS_NAME</term> |
|
90 |
<listitem> |
|
91 |
<simpara>Both names point to the name of the instance's OS |
|
92 |
as Ganeti knows it. This can simplify the OS scripts by |
|
93 |
providing the same scripts under multiple names, and then |
|
94 |
the scripts can use this name to alter their |
|
95 |
behaviour.</simpara> <simpara>With OS API 15 changing the |
|
96 |
script behavior based on this variable is deprecated: |
|
97 |
OS_VARIANT should be used instead (see below).</simpara> |
|
98 |
</listitem> |
|
99 |
</varlistentry> |
|
100 |
<varlistentry> |
|
101 |
<term>OS_VARIANT</term> |
|
102 |
<listitem> |
|
103 |
<simpara>The variant of the OS which should be installed. Each OS |
|
104 |
must support all variants listed under its |
|
105 |
<filename>variants.list</filename> file, and may support more. |
|
106 |
Any more supported variants should be properly documented in the |
|
107 |
per-OS documentation.</simpara> |
|
108 |
</listitem> |
|
109 |
</varlistentry> |
|
110 |
<varlistentry> |
|
111 |
<term>HYPERVISOR</term> |
|
112 |
<listitem> |
|
113 |
<simpara>The hypervisor of this instance.</simpara> |
|
114 |
</listitem> |
|
115 |
</varlistentry> |
|
116 |
<varlistentry> |
|
117 |
<term>DISK_COUNT</term> |
|
118 |
<listitem> |
|
119 |
<simpara>The number of disks the instance has. The actual |
|
120 |
disk defitions are in a set of additional variables. The |
|
121 |
instance's disk will be numbered from 0 to this value |
|
122 |
minus one.</simpara> |
|
123 |
</listitem> |
|
124 |
</varlistentry> |
|
125 |
<varlistentry> |
|
126 |
<term>DISK_%N_PATH</term> |
|
127 |
<listitem> |
|
128 |
<simpara>The path to the storage for disk N of the |
|
129 |
instance. This might be either a block device or a regular |
|
130 |
file, in which case the OS scripts should use |
|
131 |
<emphasis>losetup</emphasis> (if they need to mount |
|
132 |
it). E.g. the first disk of the instance might be exported |
|
133 |
as <envar>DISK_0_PATH=/dev/drbd0</envar>.</simpara> |
|
134 |
</listitem> |
|
135 |
</varlistentry> |
|
136 |
<varlistentry> |
|
137 |
<term>DISK_%N_ACCESS</term> |
|
138 |
<listitem> |
|
139 |
<simpara>This is how the hypervisor will export the |
|
140 |
instance disks: either read-write (<emphasis>rw</emphasis>) or |
|
141 |
read-only (<emphasis>ro</emphasis>).</simpara> |
|
142 |
</listitem> |
|
143 |
</varlistentry> |
|
144 |
<varlistentry> |
|
145 |
<term>DISK_%N_FRONTEND_TYPE</term> |
|
146 |
<listitem> |
|
147 |
<simpara>(Optional) If applicable to the current |
|
148 |
hypervisor type: the type of the device exported by the |
|
149 |
hypervisor. For example, the Xen HVM hypervisor can export |
|
150 |
disks as either <emphasis>paravirtual</emphasis> or |
|
151 |
<emphasis>ioemu</emphasis>.</simpara> |
|
152 |
</listitem> |
|
153 |
</varlistentry> |
|
154 |
<varlistentry> |
|
155 |
<term>DISK_%N_BACKEND_TYPE</term> |
|
156 |
<listitem> |
|
157 |
<simpara>How files are visible on the node side. This can |
|
158 |
be either <emphasis>block</emphasis> (when using block |
|
159 |
devices) or <emphasis>file:type</emphasis>, where |
|
160 |
<emphasis>type</emphasis> is either |
|
161 |
<emphasis>loop</emphasis> <emphasis>blktap</emphasis> |
|
162 |
depending on how the hypervisor will be configured. Note |
|
163 |
that not all backend types apply to all |
|
164 |
hypervisors.</simpara> |
|
165 |
</listitem> |
|
166 |
</varlistentry> |
|
167 |
<varlistentry> |
|
168 |
<term>NIC_COUNT</term> |
|
169 |
<listitem> |
|
170 |
<simpara>Similar to the <envar>DISK_COUNT</envar>, this |
|
171 |
represents the number of NICs of the instance.</simpara> |
|
172 |
</listitem> |
|
173 |
</varlistentry> |
|
174 |
<varlistentry> |
|
175 |
<term>NIC_%N_MAC</term> |
|
176 |
<listitem> |
|
177 |
<simpara>The MAC address associated with this |
|
178 |
interface.</simpara> |
|
179 |
</listitem> |
|
180 |
</varlistentry> |
|
181 |
<varlistentry> |
|
182 |
<term>NIC_%N_IP</term> |
|
183 |
<listitem> |
|
184 |
<simpara>The IP address, if any, associated with the N-th |
|
185 |
NIC of the instance.</simpara> |
|
186 |
</listitem> |
|
187 |
</varlistentry> |
|
188 |
<varlistentry> |
|
189 |
<term>NIC_%N_MODE</term> |
|
190 |
<listitem> |
|
191 |
<simpara>The NIC mode, either routed or bridged</simpara> |
|
192 |
</listitem> |
|
193 |
</varlistentry> |
|
194 |
<varlistentry> |
|
195 |
<term>NIC_%N_BRIDGE</term> |
|
196 |
<listitem> |
|
197 |
<simpara>The bridge to which this NIC will be attached. This |
|
198 |
variable is defined only when the NIC is in bridged mode.</simpara> |
|
199 |
</listitem> |
|
200 |
</varlistentry> |
|
201 |
<varlistentry> |
|
202 |
<term>NIC_%N_LINK</term> |
|
203 |
<listitem> |
|
204 |
<simpara>If the NIC is in bridged mode, this is the same as |
|
205 |
NIC_%N_BRIDGE. If it is in routed mode, the routing table |
|
206 |
which will be used by the hypervisor to insert the appropriate |
|
207 |
routes.</simpara> </listitem> |
|
208 |
</varlistentry> |
|
209 |
<varlistentry> |
|
210 |
<term>NIC_%N_FRONTEND_TYPE</term> |
|
211 |
<listitem> |
|
212 |
<para>(Optional) If applicable, the type of the exported |
|
213 |
NIC to the instance, this can be one of of: <simplelist |
|
214 |
type="inline"> <member>rtl8139</member> |
|
215 |
<member>ne2k_pci</member> <member>ne2k_isa</member> |
|
216 |
<member>paravirtual</member> </simplelist>. |
|
217 |
</para> |
|
218 |
</listitem> |
|
219 |
</varlistentry> |
|
220 |
<varlistentry> |
|
221 |
<term>DEBUG_LEVEL</term> |
|
222 |
<listitem> |
|
223 |
<simpara>If non-zero, this should cause the OS script to |
|
224 |
generate verbose logs of its execution, for |
|
225 |
troubleshooting purposes. Currently only |
|
226 |
<emphasis>0</emphasis> and <emphasis>1</emphasis> are |
|
227 |
valid values.</simpara> |
|
228 |
</listitem> |
|
229 |
</varlistentry> |
|
230 |
</variablelist> |
|
231 |
</refsect2> |
|
232 |
|
|
233 |
<refsect2> |
|
234 |
<title>create</title> |
|
235 |
|
|
236 |
<para>The <command>create</command> command is used for creating |
|
237 |
a new instance from scratch. It has no additional environment |
|
238 |
variables bside the common ones.</para> |
|
239 |
|
|
240 |
<para>The <envar>INSTANCE_NAME</envar> variable denotes the name |
|
241 |
of the instance, which is guaranteed to resolve to an IP |
|
242 |
address. The create script should configure the instance |
|
243 |
according to this name. It can configure the IP statically or |
|
244 |
not, depending on the deployment environment.</para> |
|
245 |
|
|
246 |
<para>The <envar>INSTANCE_REINSTALL</envar> variable is set to '1' when |
|
247 |
this create request is reinstalling and existing instance, rather than |
|
248 |
creating one anew. This can be used, for example, to preserve some |
|
249 |
data in the old instance in an OS-specific way.</para> |
|
250 |
|
|
251 |
</refsect2> |
|
252 |
|
|
253 |
<refsect2> |
|
254 |
<title>export</title> |
|
255 |
|
|
256 |
<para> |
|
257 |
This command is used in order to make a backup of a given disk |
|
258 |
of the instance. The command should write to stdout a dump of |
|
259 |
the given block device. The output of this program will be |
|
260 |
passed during restore to the <command>import</command> |
|
261 |
command. |
|
262 |
</para> |
|
263 |
|
|
264 |
<para> |
|
265 |
The specific disk to backup is denoted by two additional |
|
266 |
environment variables: <envar>EXPORT_INDEX</envar> which |
|
267 |
denotes the index in the instance disks structure (and could |
|
268 |
be used for example to skip the second disk if not needed for |
|
269 |
backup) and <envar>EXPORT_PATH</envar> which has the same |
|
270 |
value as <emphasis>DISK_N_PATH</emphasis> but is duplicate |
|
271 |
here for easier usage by shell scripts (rather than parse the |
|
272 |
DISK_... variables). |
|
273 |
</para> |
|
274 |
|
|
275 |
<para> |
|
276 |
To provide the user with an estimate on how long the export will take, |
|
277 |
a predicted size can be written to the file descriptor passed in the |
|
278 |
variable <envar>EXP_SIZE_FD</envar>. The value is in bytes and must be |
|
279 |
terminated by a newline character (\n). Older versions of Ganeti don't |
|
280 |
support this feature, hence the variable should be checked before use. |
|
281 |
Example: <screen> |
|
282 |
if test -n "$EXP_SIZE_FD"; then |
|
283 |
blockdev --getsize64 $blockdev >&$EXP_SIZE_FD |
|
284 |
fi |
|
285 |
</screen> |
|
286 |
</para> |
|
287 |
|
|
288 |
</refsect2> |
|
289 |
|
|
290 |
<refsect2> |
|
291 |
<title>import</title> |
|
292 |
|
|
293 |
<para> |
|
294 |
The <command>import</command> command is used for restoring an |
|
295 |
instance from a backup as done by |
|
296 |
<command>export</command>. The arguments are the similar to |
|
297 |
those passed to <command>export</command>, whose output will |
|
298 |
be provided on <acronym>stdin</acronym>. |
|
299 |
</para> |
|
300 |
|
|
301 |
<para> |
|
302 |
The difference in variables is that the current disk is called |
|
303 |
by <envar>IMPORT_DEVICE</envar> and <envar>IMPORT_INDEX</envar> |
|
304 |
(instead of <emphasis>EXPORT_</emphasis>). |
|
305 |
</para> |
|
306 |
|
|
307 |
</refsect2> |
|
308 |
|
|
309 |
<refsect2> |
|
310 |
<title>rename</title> |
|
311 |
|
|
312 |
<para> |
|
313 |
This command is used in order to perform a rename at the |
|
314 |
instance OS level, after the instance has been renamed in |
|
315 |
Ganeti. The command should do whatever steps are required to |
|
316 |
ensure that the instance is updated to use the new name, if |
|
317 |
the operating system supports it. |
|
318 |
</para> |
|
319 |
|
|
320 |
<para> |
|
321 |
Note that it is acceptable for the rename script to do nothing |
|
322 |
at all, however be warned that in this case, there will be a |
|
323 |
desynchronization between what <computeroutput>gnt-instance |
|
324 |
list</computeroutput> shows you and the actual hostname of the |
|
325 |
instance. |
|
326 |
</para> |
|
327 |
|
|
328 |
<para>The script will be passed one additional environment |
|
329 |
variable called <envar>OLD_INSTANCE_NAME</envar> which holds the |
|
330 |
old instance name. The <envar>INSTANCE_NAME</envar> variable |
|
331 |
holds the new instance name.</para> |
|
332 |
|
|
333 |
<para> |
|
334 |
A very simple rename script should at least change the |
|
335 |
hostname and IP address of the instance, leaving the |
|
336 |
administrator to update the other services. |
|
337 |
</para> |
|
338 |
</refsect2> |
|
339 |
|
|
340 |
<refsect2> |
|
341 |
<title>ganeti_api_version</title> |
|
342 |
<para> |
|
343 |
The <filename>ganeti_api_version</filename> file is a plain |
|
344 |
text file containing the version(s) of the guest OS API that |
|
345 |
this OS definition complies with, one per line. The version |
|
346 |
documented by this man page is 15, so this file must contain |
|
347 |
the number 15 followed by a newline if only this version is |
|
348 |
supported. A script compatible with more than one Ganeti version |
|
349 |
should contain the most recent version first (i.e. 15), |
|
350 |
followed by the old version(s) (in this case 10 and/or 5). |
|
351 |
</para> |
|
352 |
</refsect2> |
|
353 |
|
|
354 |
<refsect2> |
|
355 |
<title>variants.list</title> |
|
356 |
<para> |
|
357 |
<filename>variants.list</filename> is a plain text file |
|
358 |
containing all the declared supported variants for this |
|
359 |
OS, one per line. At least one variant must be supported. |
|
360 |
</para> |
|
361 |
</refsect2> |
|
362 |
|
|
363 |
</refsect1> |
|
364 |
|
|
365 |
<refsect1> |
|
366 |
<title>NOTES</title> |
|
367 |
|
|
368 |
<refsect2> |
|
369 |
<title>Backwards compatibility</title> |
|
370 |
|
|
371 |
<para> |
|
372 |
Ganeti 2.2 is compatible with both API version 10, and 15. |
|
373 |
In API version 10 the <filename>variants.list</filename> |
|
374 |
file is ignored and no OS_VARIANT environment variable is |
|
375 |
passed. |
|
376 |
</para> |
|
377 |
</refsect2> |
|
378 |
|
|
379 |
<refsect2> |
|
380 |
<title>Common behaviour</title> |
|
381 |
|
|
382 |
<para>All the scripts should display an usage message when |
|
383 |
called with a wrong number of arguments or when the first |
|
384 |
argument is <option>-h</option> or |
|
385 |
<option>--help</option>.</para> |
|
386 |
|
|
387 |
</refsect2> |
|
388 |
|
|
389 |
<refsect2> |
|
390 |
<title>Upgrading from old versions</title> |
|
391 |
<refsect3> |
|
392 |
|
|
393 |
<title>Version 10 to 15</title> |
|
394 |
|
|
395 |
<para> |
|
396 |
The <filename>variants.list</filename> file has been |
|
397 |
added, so OSes should support at least one variant, |
|
398 |
declaring it in that file and must be prepared to parse |
|
399 |
the OS_VARIANT environment variable. OSes are free to |
|
400 |
support more variants than just the declared ones. |
|
401 |
</para> |
|
402 |
|
|
403 |
</refsect3> |
|
404 |
|
|
405 |
<refsect3> |
|
406 |
|
|
407 |
<title>Version 5 to 10</title> |
|
408 |
|
|
409 |
<para> |
|
410 |
The method for passing data has changed from command line |
|
411 |
options to environment variables, so scripts should be |
|
412 |
modified to use these. For an example of how this can be |
|
413 |
done in a way compatible with both versions, feel free to |
|
414 |
look at the debootstrap instance's |
|
415 |
<filename>common.sh</filename> auxiliary script. |
|
416 |
</para> |
|
417 |
|
|
418 |
<para> |
|
419 |
Also, instances can have now a variable number of disks, not |
|
420 |
only two, and a variable number of NICs (instead of fixed |
|
421 |
one), so the scripts should deal with this. The biggest |
|
422 |
change is in the import/export, which are called once per |
|
423 |
disk, instead of once per instance. |
|
424 |
</para> |
|
425 |
|
|
426 |
</refsect3> |
|
427 |
|
|
428 |
<refsect3> |
|
429 |
<title>Version 4 to 5</title> |
|
430 |
<para> |
|
431 |
The <filename>rename</filename> script has been added. If |
|
432 |
you don't want to do any changes on the instances after a |
|
433 |
rename, you can migrate the OS definition to version 5 by |
|
434 |
creating the <filename>rename</filename> script simply as: |
|
435 |
<screen> |
|
436 |
#!/bin/sh |
|
437 |
|
|
438 |
exit 0 |
|
439 |
</screen> |
|
440 |
</para> |
|
441 |
|
|
442 |
<para>Note that the script must be executable.</para> |
|
443 |
</refsect3> |
|
444 |
</refsect2> |
|
445 |
|
|
446 |
<!-- |
|
447 |
<refsect2> |
|
448 |
|
|
449 |
<title>Export/import format</title> |
|
450 |
|
|
451 |
<para> |
|
452 |
It is up to the export and import scripts to define the format |
|
453 |
they use. It is only required for these two to work |
|
454 |
together. It is not recommended that |
|
455 |
</para> |
|
456 |
|
|
457 |
</refsect2> |
|
458 |
--> |
|
459 |
|
|
460 |
</refsect1> |
|
461 |
|
|
462 |
&footer; |
|
463 |
|
|
464 |
</refentry> |
|
465 |
|
|
466 |
<!-- Keep this comment at the end of the file |
|
467 |
Local variables: |
|
468 |
mode: sgml |
|
469 |
sgml-omittag:t |
|
470 |
sgml-shorttag:t |
|
471 |
sgml-minimize-attributes:nil |
|
472 |
sgml-always-quote-attributes:t |
|
473 |
sgml-indent-step:2 |
|
474 |
sgml-indent-data:t |
|
475 |
sgml-parent-document:nil |
|
476 |
sgml-default-dtd-file:nil |
|
477 |
sgml-exposed-tags:nil |
|
478 |
sgml-local-catalogs:nil |
|
479 |
sgml-local-ecat-files:nil |
|
480 |
End: |
|
481 |
--> |
/dev/null | ||
---|---|---|
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>June 08, 2010</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 |
<year>2010</year> |
|
24 |
<holder>Google Inc.</holder> |
|
25 |
</copyright> |
|
26 |
&dhdate; |
|
27 |
</refentryinfo> |
|
28 |
<refmeta> |
|
29 |
&dhucpackage; |
|
30 |
|
|
31 |
&dhsection; |
|
32 |
<refmiscinfo>Ganeti 2.2</refmiscinfo> |
|
33 |
</refmeta> |
|
34 |
<refnamediv> |
|
35 |
<refname>&dhpackage;</refname> |
|
36 |
|
|
37 |
<refpurpose>Ganeti remote API daemon</refpurpose> |
|
38 |
</refnamediv> |
|
39 |
<refsynopsisdiv> |
|
40 |
<cmdsynopsis> |
|
41 |
<command>&dhpackage; </command> |
|
42 |
<arg>-d</arg> |
|
43 |
<arg>-f</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 |
|
|
51 |
<refsect1> |
|
52 |
<title>DESCRIPTION</title> |
|
53 |
|
|
54 |
<para> |
|
55 |
<command>&dhpackage;</command> is the daemon providing a remote |
|
56 |
API for Ganeti clusters. |
|
57 |
</para> |
|
58 |
|
|
59 |
<para> |
|
60 |
It is automatically started on the master node, and by default |
|
61 |
it uses SSL encryption. This can be disabled by passing the |
|
62 |
<option>--no-ssl</option> option, or alternatively the |
|
63 |
certificate used can be changed via the <option>-C</option> |
|
64 |
option and the key via the <option>-K</option> option. |
|
65 |
</para> |
|
66 |
|
|
67 |
<para> |
|
68 |
The daemon will listen to the "ganeti-rapi" tcp port, as listed in the |
|
69 |
system services database, or to port 5080 by default. |
|
70 |
</para> |
|
71 |
|
|
72 |
<para> |
|
73 |
See the <emphasis>Ganeti remote API</emphasis> documentation for |
|
74 |
further information. |
|
75 |
</para> |
|
76 |
|
|
77 |
<para> |
|
78 |
Requests are logged to |
|
79 |
<filename>@LOCALSTATEDIR@/log/ganeti/rapi-daemon.log</filename>, |
|
80 |
in the same format as for the node and master daemon. |
|
81 |
</para> |
|
82 |
|
|
83 |
</refsect1> |
|
84 |
|
|
85 |
<refsect1> |
|
86 |
<title>ACCESS CONTROLS</title> |
|
87 |
|
|
88 |
<para> |
|
89 |
All query operations are allowed without authentication. Only |
|
90 |
the modification operations require authentication, in the form |
|
91 |
of basic authentication. |
|
92 |
</para> |
|
93 |
|
|
94 |
<para> |
|
95 |
The users and their rights are defined in a file named |
|
96 |
<filename>rapi_users</filename>, located in the <filename |
|
97 |
class="directory">@LOCALSTATEDIR@/lib/ganeti</filename> |
|
98 |
directory. The users should be listed one per line, in the |
|
99 |
following format: |
|
100 |
</para> |
|
101 |
|
|
102 |
<screen>username password options</screen> |
|
103 |
|
|
104 |
<para> |
|
105 |
Currently the <replaceable>options</replaceable> field should |
|
106 |
equal the string <emphasis>write</emphasis> in order to actually |
|
107 |
give write permission for the given users. Example: |
|
108 |
</para> |
|
109 |
<screen>rclient secret write |
|
110 |
guest tespw |
|
111 |
</screen> |
|
112 |
<para>The first user (<userinput>rclient</userinput>) will have |
|
113 |
read-write rights, whereas the second user does only have read |
|
114 |
(query) rights, and as such is no different than not using |
|
115 |
authentication at all.</para> |
|
116 |
|
|
117 |
<para>More details (including on how to use hashed passwords) can be found |
|
118 |
in the Ganeti documentation.</para> |
|
119 |
|
|
120 |
</refsect1> |
|
121 |
&footer; |
|
122 |
|
|
123 |
</refentry> |
|
124 |
|
|
125 |
<!-- Keep this comment at the end of the file |
|
126 |
Local variables: |
|
127 |
mode: sgml |
|
128 |
sgml-omittag:t |
|
129 |
sgml-shorttag:t |
|
130 |
sgml-minimize-attributes:nil |
|
131 |
sgml-always-quote-attributes:t |
|
132 |
sgml-indent-step:2 |
|
133 |
sgml-indent-data:t |
|
134 |
sgml-parent-document:nil |
|
135 |
sgml-default-dtd-file:nil |
|
136 |
sgml-exposed-tags:nil |
|
137 |
sgml-local-catalogs:nil |
|
138 |
sgml-local-ecat-files:nil |
|
139 |
End: |
|
140 |
--> |
/dev/null | ||
---|---|---|
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>June 08, 2010</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-watcher</refentrytitle>"> |
|
10 |
<!ENTITY dhpackage "ganeti-watcher"> |
|
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>2007</year> |
|
22 |
<year>2008</year> |
|
23 |
<year>2009</year> |
|
24 |
<year>2010</year> |
|
25 |
<holder>Google Inc.</holder> |
|
26 |
</copyright> |
|
27 |
&dhdate; |
|
28 |
</refentryinfo> |
|
29 |
<refmeta> |
|
30 |
&dhucpackage; |
|
31 |
|
|
32 |
&dhsection; |
|
33 |
<refmiscinfo>Ganeti 2.2</refmiscinfo> |
|
34 |
</refmeta> |
|
35 |
<refnamediv> |
|
36 |
<refname>&dhpackage;</refname> |
|
37 |
|
|
38 |
<refpurpose>Ganeti cluster watcher</refpurpose> |
|
39 |
</refnamediv> |
|
40 |
<refsynopsisdiv> |
|
41 |
<cmdsynopsis> |
|
42 |
<command>&dhpackage; </command> |
|
43 |
|
|
44 |
<arg><option>--debug</option></arg> |
|
45 |
<arg><option>--job-age=<replaceable>age</replaceable></option></arg> |
|
46 |
<arg><option>--ignore-pause</option></arg> |
|
47 |
|
|
48 |
</cmdsynopsis> |
|
49 |
</refsynopsisdiv> |
|
50 |
<refsect1> |
|
51 |
<title>DESCRIPTION</title> |
|
52 |
|
|
53 |
<para> |
|
54 |
The <command>&dhpackage;</command> is a periodically run script |
|
55 |
which is responsible for keeping the instances in the correct |
|
56 |
status. It has two separate functions, one for the master node |
|
57 |
and another one that runs on every node. |
|
58 |
</para> |
|
59 |
|
|
60 |
<para> |
|
61 |
If the watcher is disabled at cluster level (via |
|
62 |
the <command>gnt-cluster watcher pause</command> command), it |
|
63 |
will exit without doing anything. The cluster-level pause can be |
|
64 |
overriden via the <option>--ignore-pause</option> option, for |
|
65 |
example if during a maintenance the watcher needs to be disabled |
|
66 |
in general, but the administrator wants to run it just once. |
|
67 |
</para> |
|
68 |
|
|
69 |
<para> |
|
70 |
The <option>--debug</option> option will increase the verbosity |
|
71 |
of the watcher and also activate logging to the standard error. |
|
72 |
</para> |
|
73 |
|
|
74 |
<refsect2> |
|
75 |
<title>Master operations</title> |
|
76 |
|
|
77 |
<para> |
|
78 |
Its primary function is to try to keep running all instances |
|
79 |
which are marked as <emphasis>up</emphasis> in the configuration |
|
80 |
file, by trying to start them a limited number of times. |
|
81 |
</para> |
|
82 |
|
|
83 |
<para> |
|
84 |
Another function is to <quote>repair</quote> DRBD links by |
|
85 |
reactivating the block devices of instances which have |
|
86 |
secondaries on nodes that have been rebooted. |
|
87 |
</para> |
|
88 |
|
|
89 |
<para> |
|
90 |
The watcher will also archive old jobs (older than the age |
|
91 |
given via the <option>--job-age</option> option, which |
|
92 |
defaults to 6 hours), in order to keep the job queue |
|
93 |
manageable. |
|
94 |
</para> |
|
95 |
|
|
96 |
</refsect2> |
|
97 |
|
|
98 |
<refsect2> |
|
99 |
|
|
100 |
<title>Node operations</title> |
|
101 |
|
|
102 |
<para> |
|
103 |
The watcher will restart any down daemons that are appropriate |
|
104 |
for the current node. |
|
105 |
</para> |
|
106 |
|
|
107 |
<para> |
|
108 |
In addition, it will execute any scripts which exist under the |
|
109 |
<quote>watcher</quote> directory in the Ganeti hooks directory |
|
110 |
(@SYSCONFDIR@/ganeti/hooks). This should be used for |
|
111 |
lightweight actions, like starting any extra daemons. |
|
112 |
</para> |
|
113 |
|
|
114 |
<para> |
|
115 |
If the cluster |
|
116 |
parameter <literal>maintain_node_health</literal> is enabled, |
|
117 |
then the watcher will also shutdown instances and DRBD devices |
|
118 |
if the node is declared as offline by known master candidates. |
|
119 |
</para> |
|
120 |
|
|
121 |
<para> |
|
122 |
The watcher does synchronous queries but will submit jobs for |
|
123 |
executing the changes. Due to locking, it could be that the jobs |
|
124 |
execute much later than the watcher submits them. |
|
125 |
</para> |
|
126 |
|
|
127 |
</refsect2> |
|
128 |
|
|
129 |
|
|
130 |
</refsect1> |
|
131 |
|
|
132 |
<refsect1> |
|
133 |
<title>FILES</title> |
|
134 |
|
|
135 |
<para> |
|
136 |
The command has a state file located at |
|
137 |
<filename>@LOCALSTATEDIR@/lib/ganeti/watcher.data</filename> |
|
138 |
(only used on the master) and a log file at |
|
139 |
<filename>@LOCALSTATEDIR@/log/ganeti/watcher.log</filename>. Removal of |
|
140 |
either file will not affect correct operation; the removal of |
|
141 |
the state file will just cause the restart counters for the |
|
142 |
instances to reset to zero. |
|
143 |
</para> |
|
144 |
|
|
145 |
</refsect1> |
|
146 |
|
|
147 |
&footer; |
|
148 |
|
|
149 |
</refentry> |
|
150 |
|
|
151 |
<!-- Keep this comment at the end of the file |
|
152 |
Local variables: |
|
153 |
mode: sgml |
|
154 |
sgml-omittag:t |
|
155 |
sgml-shorttag:t |
|
156 |
sgml-minimize-attributes:nil |
|
157 |
sgml-always-quote-attributes:t |
|
158 |
sgml-indent-step:2 |
|
159 |
sgml-indent-data:t |
|
160 |
sgml-parent-document:nil |
|
161 |
sgml-default-dtd-file:nil |
|
162 |
sgml-exposed-tags:nil |
|
163 |
sgml-local-catalogs:nil |
|
164 |
sgml-local-ecat-files:nil |
|
165 |
End: |
|
166 |
--> |
/dev/null | ||
---|---|---|
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>June 08, 2010</date>"> |
|
6 |
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are |
|
7 |
allowed: see man(7), man(1). --> |
|
8 |
<!ENTITY dhsection "<manvolnum>7</manvolnum>"> |
|
9 |
<!ENTITY dhucpackage "<refentrytitle>ganeti</refentrytitle>"> |
|
10 |
<!ENTITY dhpackage "ganeti"> |
|
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>2006</year> |
|
22 |
<year>2007</year> |
|
23 |
<year>2008</year> |
|
24 |
<year>2009</year> |
|
25 |
<year>2010</year> |
|
26 |
<holder>Google Inc.</holder> |
|
27 |
</copyright> |
|
28 |
&dhdate; |
|
29 |
</refentryinfo> |
|
30 |
<refmeta> |
|
31 |
&dhucpackage; |
|
32 |
|
|
33 |
&dhsection; |
|
34 |
<refmiscinfo>Ganeti 2.2</refmiscinfo> |
|
35 |
</refmeta> |
|
36 |
<refnamediv> |
|
37 |
<refname>&dhpackage;</refname> |
|
38 |
|
|
39 |
<refpurpose>cluster-based virtualization management</refpurpose> |
|
40 |
|
Also available in: Unified diff