]> git.proxmox.com Git - mirror_ovs.git/blob - ovsdb/ovsdb-server.1.in
raft: Make backlog thresholds configurable.
[mirror_ovs.git] / ovsdb / ovsdb-server.1.in
1 .\" -*- nroff -*-
2 .so lib/ovs.tmac
3 .TH ovsdb\-server 1 "@VERSION@" "Open vSwitch" "Open vSwitch Manual"
4 .\" This program's name:
5 .ds PN ovsdb\-server
6 .
7 .SH NAME
8 ovsdb\-server \- Open vSwitch database server
9 .
10 .SH SYNOPSIS
11 \fBovsdb\-server\fR
12 [\fIdatabase\fR]\&...
13 [\fB\-\-remote=\fIremote\fR]\&...
14 [\fB\-\-run=\fIcommand\fR]
15 .so lib/daemon-syn.man
16 .so lib/service-syn.man
17 .so lib/vlog-syn.man
18 .IP "Active-backup options:"
19 [\fB\-\-sync\-from=\fIserver\fR]
20 [\fB\-\-sync\-exclude-tables=\fIdb\fB:\fItable\fR[\fB,\fIdb\fB:\fItable\fR]...\fR]
21 [\fB\-\-active\fR]
22 .so lib/ssl-syn.man
23 .so lib/ssl-bootstrap-syn.man
24 .so lib/ssl-peer-ca-cert-syn.man
25 .so lib/ssl-connect-syn.man
26 .so lib/unixctl-syn.man
27 .so lib/common-syn.man
28 .
29 .SH DESCRIPTION
30 The \fBovsdb\-server\fR program provides RPC interfaces to one or more
31 Open vSwitch databases (OVSDBs). It supports JSON-RPC client
32 connections over active or passive TCP/IP or Unix domain sockets.
33 For an introduction to OVSDB and its implementation in Open vSwitch,
34 see \fBovsdb\fR(7).
35 .PP
36 Each OVSDB file may be specified on the command line as \fIdatabase\fR.
37 If none is specified, the default is \fB@DBDIR@/conf.db\fR. The database
38 files must already have been created and initialized using, for
39 example, \fBovsdb\-tool\fR's \fBcreate\fR, \fBcreate\-cluster\fR, or
40 \fBjoin\-cluster\fR command.
41 .PP
42 This OVSDB implementation supports standalone, active-backup, and
43 clustered database service models, as well as database replication.
44 See the Service Models section of \fBovsdb\fR(7) for more information.
45 .PP
46 For clustered databases, when the \fB\-\-detach\fR option is used,
47 \fBovsdb\-server\fR detaches without waiting for the server to
48 successfully join a cluster (if the database file is freshly created
49 with \fBovsdb\-tool join\-cluster\fR) or connect to a cluster that it
50 has already joined. Use \fBovsdb\-client wait\fR (see
51 \fBovsdb\-client\fR(1)) to wait until the server has successfully
52 joined and connected to a cluster.
53 .PP
54 In addition to user-specified databases, \fBovsdb\-server\fR version
55 2.9 and later also always hosts a built-in database named
56 \fB_Server\fR. Please see \fBovsdb\-server\fR(5) for documentation on
57 this database's schema.
58 .
59 .SH OPTIONS
60 .
61 .IP "\fB\-\-remote=\fIremote\fR"
62 Adds \fIremote\fR as a connection method used by \fBovsdb\-server\fR.
63 The \fIremote\fR may be an OVSDB active or passive connection method,
64 e.g. \fBpssl:6640\fR, as described in \fBovsdb\fR(7). The following
65 additional form is also supported:
66 .
67 .RS
68 .IP "\fBdb:\fIdb\fB,\fItable\fB,\fIcolumn\fR"
69 Reads additional connection methods from \fIcolumn\fR in all of the
70 rows in \fItable\fR within \fIdb\fR. As the contents of \fIcolumn\fR changes,
71 \fBovsdb\-server\fR also adds and drops connection methods accordingly.
72 .IP
73 If \fIcolumn\fR's type is string or set of strings, then the
74 connection methods are taken directly from the column. The connection
75 methods in the column must have one of the forms described above.
76 .IP
77 If \fIcolumn\fR's type is UUID or set of UUIDs and references a table,
78 then each UUID is looked up in the referenced table to obtain a row.
79 The following columns in the row, if present and of the correct type,
80 configure a connection method. Any additional columns are ignored.
81 .RS
82 .IP "\fBtarget\fR (string)"
83 Connection method, in one of the forms described above. This column
84 is mandatory: if it is missing or empty then no connection method can
85 be configured.
86 .IP "\fBmax_backoff\fR (integer)"
87 Maximum number of milliseconds to wait between connection attempts.
88 .IP "\fBinactivity_probe\fR (integer)"
89 Maximum number of milliseconds of idle time on connection to
90 client before sending an inactivity probe message.
91 .IP "\fBread_only\fR (boolean)"
92 If true, only read-only transactions are allowed on this connection.
93 .RE
94 .IP
95 It is an error for \fIcolumn\fR to have another type.
96 .RE
97 .
98 .IP
99 To connect or listen on multiple connection methods, use multiple
100 \fB\-\-remote\fR options.
101 .
102 .IP "\fB\-\-run=\fIcommand\fR]"
103 Ordinarily \fBovsdb\-server\fR runs forever, or until it is told to
104 exit (see \fBRUNTIME MANAGEMENT COMMANDS\fR below). With this option,
105 \fBovsdb\-server\fR instead starts a shell subprocess running
106 \fIcommand\fR. When the subprocess terminates, \fBovsdb\-server\fR
107 also exits gracefully. If the subprocess exits normally with exit
108 code 0, then \fBovsdb\-server\fR exits with exit code 0 also;
109 otherwise, it exits with exit code 1.
110 .IP
111 This option can be useful where a database server is needed only to
112 run a single command, e.g.:
113 .B "ovsdb\-server \-\-remote=punix:socket \-\-run='ovsdb\-client dump unix:socket Open_vSwitch'"
114 .IP
115 This option is not supported on Windows platform.
116 .SS "Daemon Options"
117 .ds DD \
118 \fBovsdb\-server\fR detaches only after it starts listening on all \
119 configured remotes. At this point, all standalone and active-backup \
120 databases are ready for use. Clustered databases only become ready \
121 for use after they finish joining their clusters (which could have \
122 already happened in previous runs of \fBovsdb\-server\fR).
123 .so lib/daemon.man
124 .SS "Service Options"
125 .so lib/service.man
126 .SS "Logging Options"
127 .so lib/vlog.man
128 .SS "Active-Backup Options"
129 These options support the \fBovsdb\-server\fR active-backup service
130 model and database replication. These options apply only to databases
131 in the format used for standalone and active-backup databases, which
132 is the database format created by \fBovsdb\-tool create\fR. By
133 default, when it serves a database in this format, \fBovsdb\-server\fR
134 runs as a standalone server. These options can configure it for
135 active-backup use:
136 .IP \(bu
137 Use \fB\-\-sync\-from=\fIserver\fR to start the server in the backup
138 role, replicating data from \fIserver\fR. When \fBovsdb\-server\fR is
139 running as a backup server, it rejects all transactions that can
140 modify the database content, including lock commands. The same form
141 can be used to configure the local database as a replica of
142 \fIserver\fR.
143 .IP \(bu
144 Use \fB\-\-sync\-from=\fIserver\fB \-\-active\fR to start the server
145 in the active role, but prepared to switch to the backup role in which
146 it would replicate data from \fIserver\fR. When \fBovsdb\-server\fR
147 runs in active mode, it allows all transactions, including those that
148 modify the database.
149 .PP
150 At runtime, management commands can change a server's role and otherwise
151 manage active-backup features. See \fBActive-Backup Commands\fR, below,
152 for more information.
153 .TP
154 \fB\-\-sync\-from=\fIserver\fR
155 Sets up \fBovsdb\-server\fR to synchronize its databases with the
156 databases in \fIserver\fR, which must be an active connection method
157 in one of the forms documented in \fBovsdb\-client\fR(1). Every
158 transaction committed by \fIserver\fR will be replicated to
159 \fBovsdb\-server\fR. This option makes \fBovsdb\-server\fR start
160 as a backup server; add \fB\-\-active\fR to make it start as an
161 active server.
162 .TP
163 \fB\-\-sync\-exclude-tables=\fIdb\fB:\fItable\fR[\fB,\fIdb\fB:\fItable\fR]...\fR
164 Causes the specified tables to be excluded from replication.
165 .TP
166 \fB\-\-active\fR
167 By default, \fB\-\-sync\-from\fR makes \fBovsdb\-server\fR start up as
168 a backup for \fIserver\fR. With \fB\-\-active\fR, however,
169 \fBovsdb\-server\fR starts as an active server. Use this option to
170 allow the syncing options to be specified using command line options,
171 yet start the server, as the default, active server. To switch the
172 running server to backup mode, use \fBovs-appctl(1)\fR to execute the
173 \fBovsdb\-server/connect\-active\-ovsdb\-server\fR command.
174 .SS "Public Key Infrastructure Options"
175 The options described below for configuring the SSL public key
176 infrastructure accept a special syntax for obtaining their
177 configuration from the database. If any of these options is given
178 \fBdb:\fIdb\fB,\fItable\fB,\fIcolumn\fR as its argument, then the
179 actual file name is read from the specified \fIcolumn\fR in \fItable\fR
180 within the \fIdb\fR database. The \fIcolumn\fR must have type
181 string or set of strings. The first nonempty string in the table is taken
182 as the file name. (This means that ordinarily there should be at most
183 one row in \fItable\fR.)
184 .so lib/ssl.man
185 .so lib/ssl-bootstrap.man
186 .so lib/ssl-peer-ca-cert.man
187 .SS "SSL Connection Options"
188 .so lib/ssl-connect.man
189 .SS "Other Options"
190 .so lib/unixctl.man
191 .so lib/common.man
192 .SH "RUNTIME MANAGEMENT COMMANDS"
193 \fBovs\-appctl\fR(8) can send commands to a running
194 \fBovsdb\-server\fR process. The currently supported commands are
195 described below.
196 .SS "\fBovsdb\-server\fR Commands"
197 These commands are specific to \fBovsdb\-server\fR.
198 .IP "\fBexit\fR"
199 Causes \fBovsdb\-server\fR to gracefully terminate.
200 .IP "\fBovsdb\-server/compact\fR [\fIdb\fR]"
201 Compacts database \fIdb\fR in-place. If \fIdb\fR is not
202 specified, compacts every database in-place. A database is also
203 compacted automatically when a transaction is logged if it is over 2
204 times as large as its previous compacted size (and at least 10 MB),
205 but not before 100 commits have been added or 10 minutes have elapsed
206 since the last compaction. It will also be compacted automatically
207 after 24 hours since the last compaction if 100 commits were added
208 regardless of its size.
209 .IP "\fBovsdb\-server/memory-trim-on-compaction\fR \fIon\fR|\fIoff\fR"
210 If this option is \fIon\fR, ovsdb-server will try to reclaim all unused
211 heap memory back to the system after each successful database compaction
212 to reduce the memory consumption of the process. \fIoff\fR by default.
213 .
214 .IP "\fBovsdb\-server/reconnect\fR"
215 Makes \fBovsdb\-server\fR drop all of the JSON\-RPC
216 connections to database clients and reconnect.
217 .IP
218 This command might be useful for debugging issues with database
219 clients.
220 .
221 .IP "\fBovsdb\-server/add\-remote \fIremote\fR"
222 Adds a remote, as if \fB\-\-remote=\fIremote\fR had been specified on
223 the \fBovsdb\-server\fR command line. (If \fIremote\fR is already a
224 remote, this command succeeds without changing the configuration.)
225 .
226 .IP "\fBovsdb\-server/remove\-remote \fIremote\fR"
227 Removes the specified \fIremote\fR from the configuration, failing
228 with an error if \fIremote\fR is not configured as a remote. This
229 command only works with remotes that were named on \fB\-\-remote\fR or
230 \fBovsdb\-server/add\-remote\fR, that is, it will not remove remotes
231 added indirectly because they were read from the database by
232 configuring a \fBdb:\fIdb\fB,\fItable\fB,\fIcolumn\fR remote.
233 (You can remove a database source with \fBovsdb\-server/remove\-remote
234 \fBdb:\fIdb\fB,\fItable\fB,\fIcolumn\fR, but not individual
235 remotes found indirectly through the database.)
236 .
237 .IP "\fBovsdb\-server/list\-remotes"
238 Outputs a list of the currently configured remotes named on
239 \fB\-\-remote\fR or \fBovsdb\-server/add\-remote\fR, that is, it does
240 not list remotes added indirectly because they were read from the
241 database by configuring a
242 \fBdb:\fIdb\fB,\fItable\fB,\fIcolumn\fR remote.
243 .
244 .IP "\fBovsdb\-server/add\-db \fIdatabase\fR"
245 Adds the \fIdatabase\fR to the running \fBovsdb\-server\fR. The database
246 file must already have been created and initialized using, for example,
247 \fBovsdb\-tool create\fR.
248 .
249 .IP "\fBovsdb\-server/remove\-db \fIdatabase\fR"
250 Removes \fIdatabase\fR from the running \fBovsdb\-server\fR. \fIdatabase\fR
251 must be a database name as listed by \fBovsdb-server/list\-dbs\fR.
252 .IP
253 If a remote has been configured that points to the specified
254 \fIdatabase\fR (e.g. \fB\-\-remote=db:\fIdatabase\fB,\fR... on the
255 command line), then it will be disabled until another database with
256 the same name is added again (with \fBovsdb\-server/add\-db\fR).
257 .IP
258 Any public key infrastructure options specified through this database
259 (e.g. \fB\-\-private\-key=db:\fIdatabase,\fR... on the command line)
260 will be disabled until another database with the same name is added
261 again (with \fBovsdb\-server/add\-db\fR).
262 .
263 .IP "\fBovsdb\-server/list\-dbs"
264 Outputs a list of the currently configured databases added either through
265 the command line or through the \fBovsdb\-server/add\-db\fR command.
266 .
267 .SS "Active-Backup Commands"
268 .PP
269 These commands query and update the role of \fBovsdb\-server\fR within
270 an active-backup pair of servers. See \fBActive-Backup Options\fR,
271 above, and \fBActive-Backup Database Service Model\fR in
272 \fBovsdb\fR(7) for more information.
273 .
274 .IP "\fBovsdb\-server/set\-active\-ovsdb\-server \fIserver"
275 Sets the active \fIserver\fR from which \fBovsdb\-server\fR connects through
276 \fBovsdb\-server/connect\-active\-ovsdb\-server\fR.
277 This overrides the \fB\-\-sync\-from\fR command-line option.
278 .
279 .IP "\fBovsdb\-server/get\-active\-ovsdb\-server"
280 Gets the active server from which \fBovsdb\-server\fR is currently synchronizing
281 its databases.
282 .
283 .IP "\fBovsdb\-server/connect\-active\-ovsdb\-server"
284 Switches the server to a backup role. The server starts synchronizing
285 its databases with the active server specified by
286 \fBovsdb\-server/set\-active\-ovsdb\-server\fR (or the
287 \fB\-\-sync\-from\fR command-line option) and closes all existing
288 client connections, which requires clients to reconnect.
289 .
290 .IP "\fBovsdb\-server/disconnect\-active\-ovsdb\-server"
291 Switches the server to an active role. The server stops synchronizing
292 its databases with an active server and closes all existing client
293 connections, which requires clients to reconnect.
294 .
295 .IP "\fBovsdb\-server/set\-active\-ovsdb\-server\-probe\-interval \fIprobe interval"
296 Sets the probe interval (in milli seconds) for the connection to
297 active \fIserver\fR.
298 .
299 .
300 .IP "\fBovsdb\-server/set\-sync\-exclude\-tables \fIdb\fB:\fItable\fR[\fB,\fIdb\fB:\fItable\fR]..."
301 Sets the \fItable\fR within \fIdb\fR that will be excluded from synchronization.
302 This overrides the \fB\-\-sync\-exclude-tables\fR command-line option.
303 .
304 .IP "\fBovsdb\-server/get\-sync\-exclude\-tables"
305 Gets the tables that are currently excluded from synchronization.
306 .
307 .IP "\fBovsdb\-server/sync\-status"
308 Prints a summary of replication run time information. The \fBstate\fR
309 information is always provided, indicating whether the server is running
310 in the \fIactive\fR or the \fIbackup\fR mode.
311 When running in backup mode, replication connection status, which
312 can be either \fIconnecting\fR, \fIreplicating\fR or \fIerror\fR, are shown.
313 When the connection is in \fIreplicating\fR state, further output shows
314 the list of databases currently replicating, and the tables that are
315 excluded.
316 .
317 .SS "Cluster Commands"
318 These commands support the \fBovsdb\-server\fR clustered service model.
319 They apply only to databases in the format used for clustered databases,
320 which is the database format created by \fBovsdb\-tool create\-cluster\fR
321 and \fBovsdb\-tool join\-cluster\fR.
322 .
323 .IP "\fBcluster/cid \fIdb\fR"
324 Prints the cluster ID for \fIdb\fR, which is a UUID that identifies
325 the cluster. If \fIdb\fR is a database newly created by
326 \fBovsdb\-tool cluster\-join\fR that has not yet successfully joined
327 its cluster, and \fB\-\-cid\fR was not specified on the
328 \fBcluster\-join\fR command line, then this command will report an
329 error because the cluster ID is not yet known.
330 .
331 .IP "\fBcluster/sid \fIdb\fR"
332 Prints the server ID for \fIdb\fR, which is a UUID that identifies
333 this server within the cluster.
334 .
335 .IP "\fBcluster/status \fIdb\fR"
336 Prints this server's status within the cluster and the status of its
337 connections to other servers in the cluster.
338 .
339 .IP "\fBcluster/leave \fIdb\fR"
340 This command starts the server gracefully
341 removing itself from its cluster. At least one server must remain,
342 and the cluster must be healthy, that is, over half of the cluster's
343 servers must be up.
344 .IP
345 When the server successfully leaves the cluster, it stops serving
346 \fIdb\fR, as if \fBovsdb\-server/remove\-db \fIdb\fR had been
347 executed.
348 .IP
349 Use \fBovsdb\-client wait\fR (see \fBovsdb\-client\fR(1)) to wait
350 until the server has left the cluster.
351 .IP
352 Once a server leaves a cluster, it may never rejoin it. Instead,
353 create a new server and join it to the cluster.
354 .IP
355 Note that removing the server from the cluster alters the total size
356 of the cluster. For example, if you remove two servers from a three
357 server cluster, then the "cluster" becomes a single functioning server.
358 This does not result in a three server cluster that lacks quorum.
359 .
360 .IP "\fBcluster/kick \fIdb server\fR"
361 Start graceful removal of \fIserver\fR from \fIdb\fR's cluster, like
362 \fBcluster/leave\fR (without \fB\-\-force\fR) except that it can
363 remove any server, not just this one.
364 .IP
365 \fIserver\fR may be a server ID, as printed by \fBcluster/sid\fR, or
366 the server's local network address as passed to \fBovsdb-tool\fR's
367 \fBcreate\-cluster\fR or \fBjoin\-cluster\fR command. Use
368 \fBcluster/status\fR to see a list of cluster members.
369 .
370 .IP "\fBcluster/change-election-timer \fIdb time\fR"
371 Change the leader election timeout base value of the cluster, in milliseconds.
372 .IP
373 Leader election will be initiated by a follower if there is no heartbeat
374 received from the leader within this time plus a random time within 1 second.
375 .IP
376 The default value is 1000, if not changed with this command. This command can
377 be used to adjust the value when necessary, according to the expected load and
378 response time of the servers.
379 .IP
380 This command must be executed on the leader. It initiates the change to the
381 cluster. To see if the change takes effect (committed), use
382 \fBcluster/status\fR to show the current setting. Once a change is committed,
383 it persists at server restarts.
384 .IP "\fBcluster/set\-backlog\-threshold \fIdb\fR \fIn_msgs\fR \fIn_bytes\fR"
385 Sets the backlog limits for \fIdb\fR's RAFT connections to a maximum of
386 \fIn_msgs\fR messages or \fIn_bytes\fR bytes. If the backlog on one of the
387 connections reaches the limit, it will be disconnected (and re-established).
388 Values are checked only if the backlog contains more than 50 messages.
389 .
390 .so lib/vlog-unixctl.man
391 .so lib/memory-unixctl.man
392 .so lib/coverage-unixctl.man
393 .SH "BUGS"
394 .
395 In Open vSwitch before version 2.4, when \fBovsdb\-server\fR sent
396 JSON-RPC error responses to some requests, it incorrectly formulated
397 them with the \fBresult\fR and \fBerror\fR swapped, so that the
398 response appeared to indicate success (with a nonsensical result)
399 rather than an error. The requests that suffered from this problem
400 were:
401 .
402 .IP \fBtransact\fR
403 .IQ \fBget_schema\fR
404 Only if the request names a nonexistent database.
405 .IP \fBmonitor\fR
406 .IQ \fBlock\fR
407 .IQ \fBunlock\fR
408 In all error cases.
409 .
410 .PP
411 Of these cases, the only error that a well-written application is
412 likely to encounter in practice is \fBmonitor\fR of tables or columns
413 that do not exist, in an situation where the application has been
414 upgraded but the old database schema is still temporarily in use. To
415 handle this situation gracefully, we recommend that clients should
416 treat a \fBmonitor\fR response with a \fBresult\fR that contains an
417 \fBerror\fR key-value pair as an error (assuming that the database
418 being monitored does not contain a table named \fBerror\fR).
419 .
420 .SH "SEE ALSO"
421 \fBovsdb\fR(7),
422 \fBovsdb\-tool\fR(1),
423 \fBovsdb\-server\fR(5),
424 \fBovsdb\-server\fR(7).