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