swift/doc/manpages/swift-init.1
Darrell Bishop 1107f24179 Seamlessly reload servers with SIGUSR1
Swift servers can now be seamlessly reloaded by sending them a SIGUSR1
(instead of a SIGHUP).  The server forks off a synchronized child to
wait to close the old listen socket(s) until the new server has started
up and bound its listen socket(s).  The new server is exec'ed from the
old one so its PID doesn't change.  This makes Systemd happier, so a
ReloadExec= stanza can now be used.

The seamless part means that incoming connections will alwyas get
accepted either by the old server or the new one.  This eliminates
client-perceived "downtime" during server reloads, while allowing the
server to fully reload, re-reading configuration, becoming a fresh
Python interpreter instance, etc.  The SO_REUSEPORT socket option has
already been getting used, so nothing had to change there.

This patch also includes a non-invasive fix for a current eventlet bug;
see https://github.com/eventlet/eventlet/pull/590
That bug prevents a SIGHUP "reload" from properly servicing existing
requests before old worker processes close sockets and exit.  The
existing probtests missed this, but the new ones, in this patch, caught
it.

New probe tests cover both old SIGHUP "reload" behavior as well as the
new SIGUSR1 seamless reload behavior.

Change-Id: I3e5229d2fb04be67e53533ff65b0870038accbb7
2019-11-07 10:15:26 -08:00

125 lines
4.0 KiB
Groff

.\"
.\" Author: Joao Marcelo Martins <marcelo.martins@rackspace.com> or <btorch@gmail.com>
.\" Copyright (c) 2010-2011 OpenStack Foundation.
.\"
.\" Licensed under the Apache License, Version 2.0 (the "License");
.\" you may not use this file except in compliance with the License.
.\" You may obtain a copy of the License at
.\"
.\" http://www.apache.org/licenses/LICENSE-2.0
.\"
.\" Unless required by applicable law or agreed to in writing, software
.\" distributed under the License is distributed on an "AS IS" BASIS,
.\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
.\" implied.
.\" See the License for the specific language governing permissions and
.\" limitations under the License.
.\"
.TH swift-init 1 "8/26/2011" "Linux" "OpenStack Swift"
.SH NAME
.LP
.B swift-init
\- OpenStack Swift swift-init tool
.SH SYNOPSIS
.LP
.B swift-init
<server> [<server> ...] <command> [options]
.SH DESCRIPTION
.PP
The swift-init tool can be used to initialize all swift daemons available as part of
OpenStack Swift. Instead of calling individual init scripts for each
swift daemon, one can just use swift-init. With swift-init you can initialize
just one swift service, such as the "proxy", or a combination of them. The tool also
allows one to use the keywords such as "all", "main" and "rest" for the <server> argument.
\fBServers:\fR
.PD 0
.RS 4
.IP "\fIproxy\fR" "4"
.IP " - Initializes the swift proxy daemon"
.RE
.RS 4
.IP "\fIobject\fR, \fIobject-replicator\fR, \fIobject-auditor\fR, \fIobject-updater\fR"
.IP " - Initializes the swift object daemons above"
.RE
.RS 4
.IP "\fIcontainer\fR, \fIcontainer-update\fR, \fIcontainer-replicator\fR, \fIcontainer-auditor\fR"
.IP " - Initializes the swift container daemons above"
.RE
.RS 4
.IP "\fIaccount\fR, \fIaccount-auditor\fR, \fIaccount-reaper\fR, \fIaccount-replicator\fR"
.IP " - Initializes the swift account daemons above"
.RE
.RS 4
.IP "\fIall\fR"
.IP " - Initializes \fBall\fR the swift daemons"
.RE
.RS 4
.IP "\fImain\fR"
.IP " - Initializes all the \fBmain\fR swift daemons"
.IP " (proxy, container, account and object servers)"
.RE
.RS 4
.IP "\fIrest\fR"
.IP " - Initializes all the other \fBswift background daemons\fR"
.IP " (updater, replicator, auditor, reaper, etc)"
.RE
.PD
\fBCommands:\fR
.RS 4
.PD 0
.IP "\fIforce-reload\fR: \t\t alias for reload"
.IP "\fIno-daemon\fR: \t\t start a server interactively"
.IP "\fIno-wait\fR: \t\t\t spawn server and return immediately"
.IP "\fIonce\fR: \t\t\t start server and run one pass on supporting daemons"
.IP "\fIreload\fR: \t\t\t graceful shutdown then restart on supporting servers"
.IP "\fIreload-seamless\fR: \t\t reload supporting servers with no downtime"
.IP "\fIrestart\fR: \t\t\t stops then restarts server"
.IP "\fIshutdown\fR: \t\t allow current requests to finish on supporting servers"
.IP "\fIstart\fR: \t\t\t starts a server"
.IP "\fIstatus\fR: \t\t\t display status of tracked pids for server"
.IP "\fIstop\fR: \t\t\t stops a server"
.PD
.RE
\fBOptions:\fR
.RS 4
.PD 0
.IP "-h, --help \t\t\t show this help message and exit"
.IP "-v, --verbose \t\t\t display verbose output"
.IP "-w, --no-wait \t\t\t won't wait for server to start before returning
.IP "-o, --once \t\t\t only run one pass of daemon
.IP "-n, --no-daemon \t\t start server interactively
.IP "-g, --graceful \t\t send SIGHUP to supporting servers
.IP "-c N, --config-num=N \t send command to the Nth server only
.IP "-k N, --kill-wait=N \t wait N seconds for processes to die (default 15)
.IP "-r RUN_DIR, --run-dir=RUN_DIR directory where the pids will be stored (default /var/run/swift)
.IP "--strict return non-zero status code if some config is missing. Default mode if server is explicitly named."
.IP "--non-strict return zero status code even if some config is missing. Default mode if server is one of aliases `all`, `main` or `rest`."
.IP "--kill-after-timeout kill daemon and all children after kill-wait period."
.PD
.RE
.SH DOCUMENTATION
.LP
More documentation about OpenStack Swift can be found at
.BI https://docs.openstack.org/swift/latest/