OpenStack Docs: Deployment Guide
https://docs.openstack.org/swift/latest/deployment_guide.html
this page last updated: 2018-10-29 14:49:48
Swift is designed to run on commodity hardware. At Rackspace, our storage servers are currently running fairly generic 4U servers with 24 2T SATA drives and 8 cores of processing power. RAID on the storage drives is not required and not recommended. Swift’s disk usage pattern is the worst case possible for RAID, and performance degrades very quickly using RAID 5 or 6.
The Swift services run completely autonomously, which provides for a lot of flexibility when architecting the hardware deployment for Swift. The 4 main services are:
The Proxy Services are more CPU and network I/O intensive. If you are using 10g networking to the proxy, or are terminating SSL traffic at the proxy, greater CPU power will be required.
The Object, Container, and Account Services (Storage Services) are more disk and network I/O intensive.
The easiest deployment is to install all services on each server. There is nothing wrong with doing this, as it scales each service out horizontally.
At Rackspace, we put the Proxy Services on their own servers and all of the Storage Services on the same server. This allows us to send 10g networking to the proxy and 1g to the storage servers, and keep load balancing to the proxies more manageable. Storage Services scale out horizontally as storage servers are added, and we can scale overall API throughput by adding more Proxies.
If you need more throughput to either Account or Container Services, they may each be deployed to their own servers. For example you might use faster (but more expensive) SAS or even SSD drives to get faster disk I/O to the databases.
A high-availability (HA) deployment of Swift requires that multiple proxy servers are deployed and requests are load-balanced between them. Each proxy server instance is stateless and able to respond to requests for the entire cluster.
Load balancing and network design is left as an exercise to the reader, but this is a very important part of the cluster, so time should be spent designing the network for a Swift cluster.
Swift comes with an integral web front end. However, it can also be deployed as a request processor of an Apache2 using mod_wsgi as described in Apache Deployment Guide.
第一步是确定将在环中的分区数。我们建议每个驱动器至少有100个分区,以确保在驱动器上均匀分布。一个好的起点可能是找出群集将包含的最大驱动器数,然后乘以100,然后向上舍入到最接近的2的幂。
例如,假设我们正在构建一个不超过5,000个驱动器的集群。这意味着我们将拥有总共500,000个分区,这非常接近2^19,向上舍入。
保持分区数量较小(相对)也是一个好主意。分区越多,复制器和其他后端作业必须完成的工作越多,并且环在进程中消耗的内存越多。目标是在最小rings和最大cluster sizes之间找到良好的平衡。
下一步是确定要存储数据的副本数。目前建议使用3(因为这是唯一经过测试的值)。数字越大,使用的存储空间越多,但丢失数据的可能性就越小。
确定群集应具有的zones也很重要。建议至少从5个zones开始。您可以从更少的开始,但我们的测试表明,当发生故障时,至少有五个zones是最佳的。我们还建议尝试将zones配置为尽可能高的级别,以尽可能多地创建隔离。需要考虑的一些事情包括:物理位置,电源可用性和网络连接。例如,在小型集群中,您可能决定按机柜分割zones,每个机柜都有自己的电源和网络连接。zone概念非常抽象,因此可以随意使用它以最佳方式将数据与故障隔离开来。每个zone都存在于一个region中。
region也是一个抽象概念,可用于区分地理上分离的区域,也用于同一数据中心内。Regions and zones需要是正整数。
您现在可以开始构建环:
swift-ring-builder <builder_file> create <part_power> <replicas> <min_part_hours>
这将启动环构建过程,创建带有2^
可以将设备添加到环中:
swift-ring-builder <builder_file> add r<region>z<zone>-<ip>:<port>/<device_name>_<meta> <weight>
这将向环添加设备,其中
将所有设备添加到环中后,运行:
swift-ring-builder <builder_file> rebalance
这将partitions分配到环中的设备。在进行rebalance之前,每当对环进行更改时,进行所有必需的更改,这一点非常重要。这将确保环保持尽可能平衡,并尽可能少地移动分区。
应该执行上述过程,为每个存储服务(帐户,容器和对象)创建一个ring。在将来对环进行更改时将需要builder文件,因此保留和备份这些文件非常重要。应将生成的.tar.gz环文件推送到群集中的所有服务器。有关构建环的更多信息,运行不带选项的swift-ring-builder
将显示帮助文本,包含可用命令和可选项。有关环内部工作原理的更多信息,请参阅Ring Overview。
The lack of true asynchronous file I/O on Linux leaves the object-server workers vulnerable to misbehaving disks. Because any object-server worker can service a request for any disk, and a slow I/O request blocks the eventlet hub, a single slow disk can impair an entire storage node. This also prevents object servers from fully utilizing all their disks during heavy load.
Another way to get full I/O isolation is to give each disk on a storage node a different port in the storage policy rings. Then set the servers_per_port option in the object-server config. NOTE: while the purpose of this config setting is to run one or more object-server worker processes per disk, the implementation just runs object-servers per unique port of local devices in the rings. The deployer must combine this option with appropriately-configured rings to benefit from this feature.
Here’s an example (abbreviated) old-style ring (2 node cluster with 2 disks each):
Devices: id region zone ip address port replication ip replication port name 0 1 1 1.1.0.1 6200 1.1.0.1 6200 d1 1 1 1 1.1.0.1 6200 1.1.0.1 6200 d2 2 1 2 1.1.0.2 6200 1.1.0.2 6200 d3 3 1 2 1.1.0.2 6200 1.1.0.2 6200 d4
And here’s the same ring set up for servers_per_port:
Devices: id region zone ip address port replication ip replication port name 0 1 1 1.1.0.1 6200 1.1.0.1 6200 d1 1 1 1 1.1.0.1 6201 1.1.0.1 6201 d2 2 1 2 1.1.0.2 6200 1.1.0.2 6200 d3 3 1 2 1.1.0.2 6201 1.1.0.2 6201 d4
When migrating from normal to servers_per_port, perform these steps in order:
- Upgrade Swift code to a version capable of doing servers_per_port.
- Enable servers_per_port with a > 0 value
- Restart swift-object-server processes with a SIGHUP. At this point, you will have the servers_per_port number of swift-object-server processes serving all requests for all disks on each node. This preserves availability, but you should perform the next step as quickly as possible.
- Push out new rings that actually have different ports per disk on each server. One of the ports in the new ring should be the same as the port used in the old ring (“6200” in the example above). This will cover existing proxy-server processes who haven’t loaded the new ring yet. They can still talk to any storage node regardless of whether or not that storage node has loaded the ring and started object-server processes on the new ports.
If you do not run a separate object-server for replication, then this setting must be available to the object-replicator and object-reconstructor (i.e. appear in the [DEFAULT] config section).
Most Swift services fall into two categories. Swift’s wsgi servers and background daemons.
For more information specific to the configuration of Swift’s wsgi servers with paste deploy see General Server Configuration.
Configuration for servers and daemons can be expressed together in the same file for each type of server, or separately. If a required section for the service trying to start is missing there will be an error. The sections not used by the service are ignored.
Consider the example of an object storage node. By convention, configuration for the object-server, object-updater, object-replicator, object-auditor, and object-reconstructor exist in a single file /etc/swift/object-server.conf
:
[DEFAULT] reclaim_age = 604800
[pipeline:main] pipeline = object-server
[app:object-server] use = egg:swift#object
[object-replicator]
[object-updater]
[object-auditor]
Swift services expect a configuration path as the first argument:
$ swift-object-auditor Usage: swift-object-auditor CONFIG [options]
Error: missing config path argument
If you omit the object-auditor section this file could not be used as the configuration path when starting the swift-object-auditor
daemon:
$ swift-object-auditor /etc/swift/object-server.conf Unable to find object-auditor config section in /etc/swift/object-server.conf
If the configuration path is a directory instead of a file all of the files in the directory with the file extension “.conf” will be combined to generate the configuration object which is delivered to the Swift service. This is referred to generally as “directory based configuration”.
Directory based configuration leverages ConfigParser’s native multi-file support. Files ending in “.conf” in the given directory are parsed in lexicographical order. Filenames starting with ‘.’ are ignored. A mixture of file and directory configuration paths is not supported - if the configuration path is a file only that file will be parsed.
The Swift service management tool swift-init
has adopted the convention of looking for /etc/swift/{type}-server.conf.d/
if the file /etc/swift/{type}-server.conf
file does not exist.
When using directory based configuration, if the same option under the same section appears more than once in different files, the last value parsed is said to override previous occurrences. You can ensure proper override precedence by prefixing the files in the configuration directory with numerical values.:
/etc/swift/ default.base object-server.conf.d/ 000_default.conf -> ../default.base 001_default-override.conf 010_server.conf 020_replicator.conf 030_updater.conf 040_auditor.conf
You can inspect the resulting combined configuration object using the swift-config
command line tool
Swift uses paste.deploy (http://pythonpaste.org/deploy/) to manage server configurations.
Default configuration options are set in the [DEFAULT] section, and any options specified there can be overridden in any of the other sections BUT ONLY BY USING THE SYNTAX set option_name = value
. This is the unfortunate way paste.deploy works and I’ll try to explain it in full.
First, here’s an example paste.deploy configuration file:
[DEFAULT] name1 = globalvalue name2 = globalvalue name3 = globalvalue set name4 = globalvalue
[pipeline:main] pipeline = myapp
[app:myapp] use = egg:mypkg#myapp name2 = localvalue set name3 = localvalue set name5 = localvalue name6 = localvalue
The resulting configuration that myapp receives is:
global {‘__file__’: ‘/etc/mypkg/wsgi.conf’, ‘here’: ‘/etc/mypkg’, ‘name1’: ‘globalvalue’, ‘name2’: ‘globalvalue’, ‘name3’: ‘localvalue’, ‘name4’: ‘globalvalue’, ‘name5’: ‘localvalue’, ‘set name4’: ‘globalvalue’} local {‘name6’: ‘localvalue’}
So, name1 got the global value which is fine since it’s only in the DEFAULT section anyway.
name2 got the global value from DEFAULT even though it appears to be overridden in the app:myapp subsection. This is just the unfortunate way paste.deploy works (at least at the time of this writing.)
name3 got the local value from the app:myapp subsection because it is using the special paste.deploy syntax of set option_name = value
. So, if you want a default value for most app/filters but want to override it in one subsection, this is how you do it.
name4 got the global value from DEFAULT since it’s only in that section anyway. But, since we used the set
syntax in the DEFAULT section even though we shouldn’t, notice we also got a set name4
variable. Weird, but probably not harmful.
name5 got the local value from the app:myapp subsection since it’s only there anyway, but notice that it is in the global configuration and not the local configuration. This is because we used the set
syntax to set the value. Again, weird, but not harmful since Swift just treats the two sets of configuration values as one set anyway.
name6 got the local value from app:myapp subsection since it’s only there, and since we didn’t use the set
syntax, it’s only in the local configuration and not the global one. Though, as indicated above, there is no special distinction with Swift.
That’s quite an explanation for something that should be so much simpler, but it might be important to know how paste.deploy interprets configuration files. The main rule to remember when working with Swift configuration files is:
Note
Use the set option_name = value
syntax in subsections if the option is also set in the [DEFAULT]
section. Don’t get in the habit of always using the set
syntax or you’ll probably mess up your non-paste.deploy configuration files.
An example of common configuration file can be found at etc/swift.conf-sample
The following configuration options are available:
Option
Default
Description
max_header_size
8192
max_header_size is the max number of bytes in the utf8 encoding of each header. Using 8192 as default because eventlet use 8192 as max size of header line. This value may need to be increased when using identity v3 API tokens including more than 7 catalog entries. See also include_service_catalog in proxy-server.conf-sample (documented in overview_auth.rst).
extra_header_count
0
By default the maximum number of allowed headers depends on the number of max allowed metadata settings plus a default value of 32 for regular http headers. If for some reason this is not enough (custom middleware for example) it can be increased with the extra_header_count constraint.
An Example Object Server configuration can be found at etc/object-server.conf-sample in the source code repository.
The following configuration sections are available:
Option
Default
Description
swift_dir
/etc/swift
Swift configuration directory
devices
/srv/node
Parent directory of where devices are mounted
mount_check
true
Whether or not check if the devices are mounted to prevent accidentally writing to the root device
bind_ip
0.0.0.0
IP Address for server to bind to
bind_port
6200
Port for server to bind to
keep_idle
600
Value to set for socket TCP_KEEPIDLE
bind_timeout
30
Seconds to attempt bind before giving up
backlog
4096
Maximum number of allowed pending connections
workers
auto
Override the number of pre-forked workers that will accept connections. If set it should be an integer, zero means no fork. If unset, it will try to default to the number of effective cpu cores and fallback to one. Increasing the number of workers helps slow filesystem operations in one request from negatively impacting other requests, but only the servers_per_port option provides complete I/O isolation with no measurable overhead.
servers_per_port
0
If each disk in each storage policy ring has unique port numbers for its “ip” value, you can use this setting to have each object-server worker only service requests for the single disk matching the port in the ring. The value of this setting determines how many worker processes run for each port (disk) in the ring. If you have 24 disks per server, and this setting is 4, then each storage node will have 1 + (24 * 4) = 97 total object-server processes running. This gives complete I/O isolation, drastically reducing the impact of slow disks on storage node performance. The object-replicator and object-reconstructor need to see this setting too, so it must be in the [DEFAULT] section. See Running object-servers Per Disk.
max_clients
1024
Maximum number of clients one worker can process simultaneously (it will actually accept(2) N + 1). Setting this to one (1) will only handle one request at a time, without accepting another request concurrently.
disable_fallocate
false
Disable “fast fail” fallocate checks if the underlying filesystem does not support it.
log_name
swift
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_address
/dev/log
Logging directory
log_max_line_length
0
Caps the length of log lines to the value given; no limit if set to 0, the default.
log_custom_handlers
None
Comma-separated list of functions to call to setup custom log handlers.
log_udp_host
Override log_address
log_udp_port
514
UDP log port
log_statsd_host
None
Enables StatsD logging; IPv4/IPv6 address or a hostname. If a hostname resolves to an IPv4 and IPv6 address, the IPv4 address will be used.
log_statsd_port
8125
log_statsd_default_sample_rate
1.0
log_statsd_sample_rate_factor
1.0
log_statsd_metric_prefix
eventlet_debug
false
If true, turn on debug logging for eventlet
fallocate_reserve
1%
You can set fallocate_reserve to the number of bytes or percentage of disk space you’d like fallocate to reserve, whether there is space for the given file size or not. Percentage will be used if the value ends with a ‘%’. This is useful for systems that behave badly when they completely run out of space; you can make the services pretend they’re out of space early.
conn_timeout
0.5
Time to wait while attempting to connect to another backend node.
node_timeout
3
Time to wait while sending each chunk of data to another backend node.
client_timeout
60
Time to wait while receiving each chunk of data from a client or another backend node
network_chunk_size
65536
Size of chunks to read/write over the network
disk_chunk_size
65536
Size of chunks to read/write to disk
container_update_timeout
1
Time to wait while sending a container update on object update.
reclaim_age
604800
Time elapsed in seconds before the tombstone file representing a deleted object can be reclaimed. This is the maximum window for your consistency engine. If a node that was disconnected from the cluster because of a fault is reintroduced into the cluster after this window without having its data purged it will result in dark data. This setting should be consistent across all object services.
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
Option
Default
Description
use
paste.deploy entry point for the object server. For most cases, this should be egg:swift#object.
set log_name
object-server
Label used when logging
set log_facility
LOG_LOCAL0
Syslog log facility
set log_level
INFO
Logging level
set log_requests
True
Whether or not to log each request
set log_address
/dev/log
Logging directory
user
swift
User to run as
max_upload_time
86400
Maximum time allowed to upload an object
slow
0
If > 0, Minimum time in seconds for a PUT or DELETE request to complete. This is only useful to simulate slow devices during testing and development.
mb_per_sync
512
On PUT requests, sync file every n MB
keep_cache_size
5242880
Largest object size to keep in buffer cache
keep_cache_private
false
Allow non-public objects to stay in kernel’s buffer cache
allowed_headers
Content-Disposition, Content-Encoding, X-Delete-At, X-Object-Manifest, X-Static-Large-Object Cache-Control, Content-Language, Expires, X-Robots-Tag
Comma separated list of headers that can be set in metadata on an object. This list is in addition to X-Object-Meta-* headers and cannot include Content-Type, etag, Content-Length, or deleted
auto_create_account_prefix
.
Prefix used when automatically creating accounts.
replication_server
Configure parameter for creating specific server. To handle all verbs, including replication verbs, do not specify “replication_server” (this is the default). To only handle replication, set to a True value (e.g. “True” or “1”). To handle only non-replication verbs, set to “False”. Unless you have a separate replication network, you should not specify any value for “replication_server”.
replication_concurrency
4
Set to restrict the number of concurrent incoming SSYNC requests; set to 0 for unlimited
replication_concurrency_per_device
1
Set to restrict the number of concurrent incoming SSYNC requests per device; set to 0 for unlimited requests per devices. This can help control I/O to each device. This does not override replication_concurrency described above, so you may need to adjust both parameters depending on your hardware or network capacity.
replication_lock_timeout
15
Number of seconds to wait for an existing replication device lock before giving up.
replication_failure_threshold
100
The number of subrequest failures before the replication_failure_ratio is checked
replication_failure_ratio
1.0
If the value of failures / successes of SSYNC subrequests exceeds this ratio, the overall SSYNC request will be aborted
splice
no
Use splice() for zero-copy object GETs. This requires Linux kernel version 3.0 or greater. If you set “splice = yes” but the kernel does not support it, error messages will appear in the object server logs at startup, but your object servers should continue to function.
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
eventlet_tpool_num_threads
auto
The number of threads in eventlet’s thread pool. Most IO will occur in the object server’s main thread, but certain “heavy” IO operations will occur in separate IO threads, managed by eventlet. The default value is auto, whose actual value is dependent on the servers_per_port value. If servers_per_port is zero then it uses eventlet’s default (currently 20 threads). If the servers_per_port is nonzero then it’ll only use 1 thread per process. This value can be overridden with an integer value.
Option
Default
Description
log_name
object-replicator
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_address
/dev/log
Logging directory
daemonize
yes
Whether or not to run replication as a daemon
interval
30
Time in seconds to wait between replication passes
concurrency
1
Number of replication jobs to run per worker process
replicator_workers
0
Number of worker processes to use. No matter how big this number is, at most one worker per disk will be used. The default value of 0 means no forking; all work is done in the main process.
sync_method
rsync
The sync method to use; default is rsync but you can use ssync to try the EXPERIMENTAL all-swift-code-no-rsync-callouts method. Once ssync is verified as or better than, rsync, we plan to deprecate rsync so we can move on with more features for replication.
rsync_timeout
900
Max duration of a partition rsync
rsync_bwlimit
0
Bandwidth limit for rsync in kB/s. 0 means unlimited.
rsync_io_timeout
30
Timeout value sent to rsync –timeout and –contimeout options
rsync_compress
no
Allow rsync to compress data which is transmitted to destination node during sync. However, this is applicable only when destination node is in a different region than the local one. NOTE: Objects that are already compressed (for example: .tar.gz, .mp3) might slow down the syncing process.
stats_interval
300
Interval in seconds between logging replication statistics
handoffs_first
false
If set to True, partitions that are not supposed to be on the node will be replicated first. The default setting should not be changed, except for extreme situations.
handoff_delete
auto
By default handoff partitions will be removed when it has successfully replicated to all the canonical nodes. If set to an integer n, it will remove the partition if it is successfully replicated to n nodes. The default setting should not be changed, except for extreme situations.
node_timeout
DEFAULT or 10
Request timeout to external services. This uses what’s set here, or what’s set in the DEFAULT section, or 10 (though other sections use 3 as the final default).
http_timeout
60
Max duration of an http request. This is for REPLICATE finalization calls and so should be longer than node_timeout.
lockup_timeout
1800
Attempts to kill all workers if nothing replicates for lockup_timeout seconds
rsync_module
{replication_ip}::object
Format of the rsync module where the replicator will send data. The configuration value can include some variables that will be extracted from the ring. Variables must follow the format {NAME} where NAME is one of: ip, port, replication_ip, replication_port, region, zone, device, meta. See etc/rsyncd.conf-sample for some examples.
rsync_error_log_line_length
0
Limits how long rsync error log lines are
ring_check_interval
15
Interval for checking new ring file
recon_cache_path
/var/cache/swift
Path to recon cache
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
Option
Default
Description
log_name
object-reconstructor
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_address
/dev/log
Logging directory
daemonize
yes
Whether or not to run reconstruction as a daemon
interval
30
Time in seconds to wait between reconstruction passes
reconstructor_workers
0
Maximum number of worker processes to spawn. Each worker will handle a subset of devices. Devices will be assigned evenly among the workers so that workers cycle at similar intervals (which can lead to fewer workers than requested). You can not have more workers than devices. If you have no devices only a single worker is spawned.
concurrency
1
Number of reconstruction threads to spawn per reconstructor process.
stats_interval
300
Interval in seconds between logging reconstruction statistics
handoffs_only
false
The handoffs_only mode option is for special case emergency situations during rebalance such as disk full in the cluster. This option SHOULD NOT BE CHANGED, except for extreme situations. When handoffs_only mode is enabled the reconstructor will only revert fragments from handoff nodes to primary nodes and will not sync primary nodes with neighboring primary nodes. This will force the reconstructor to sync and delete handoffs’ fragments more quickly and minimize the time of the rebalance by limiting the number of rebuilds. The handoffs_only option is only for temporary use and should be disabled as soon as the emergency situation has been resolved.
node_timeout
DEFAULT or 10
Request timeout to external services. The value used is the value set in this section, or the value set in the DEFAULT section, or 10.
http_timeout
60
Max duration of an http request. This is for REPLICATE finalization calls and so should be longer than node_timeout.
lockup_timeout
1800
Attempts to kill all threads if no fragment has been reconstructed for lockup_timeout seconds.
ring_check_interval
15
Interval for checking new ring file
recon_cache_path
/var/cache/swift
Path to recon cache
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
Option
Default
Description
log_name
object-updater
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_address
/dev/log
Logging directory
interval
300
Minimum time for a pass to take
updater_workers
1
Number of worker processes
concurrency
8
Number of updates to run concurrently in each worker process
node_timeout
DEFAULT or 10
Request timeout to external services. This uses what’s set here, or what’s set in the DEFAULT section, or 10 (though other sections use 3 as the final default).
objects_per_second
50
Maximum objects updated per second. Should be tuned according to individual system specs. 0 is unlimited.
slowdown
0.01
Time in seconds to wait between objects. Deprecated in favor of objects_per_second.
report_interval
300
Interval in seconds between logging statistics about the current update pass.
recon_cache_path
/var/cache/swift
Path to recon cache
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
Option
Default
Description
log_name
object-auditor
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_address
/dev/log
Logging directory
log_time
3600
Frequency of status logs in seconds.
interval
30
Time in seconds to wait between auditor passes
disk_chunk_size
65536
Size of chunks read during auditing
files_per_second
20
Maximum files audited per second per auditor process. Should be tuned according to individual system specs. 0 is unlimited.
bytes_per_second
10000000
Maximum bytes audited per second per auditor process. Should be tuned according to individual system specs. 0 is unlimited.
concurrency
1
The number of parallel processes to use for checksum auditing.
zero_byte_files_per_second
50
object_size_stats
recon_cache_path
/var/cache/swift
Path to recon cache
rsync_tempfile_timeout
auto
Time elapsed in seconds before rsync tempfiles will be unlinked. Config value of “auto” try to use object-replicator’s rsync_timeout + 900 or fallback to 86400 (1 day).
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
An example Container Server configuration can be found at etc/container-server.conf-sample in the source code repository.
The following configuration sections are available:
Option
Default
Description
swift_dir
/etc/swift
Swift configuration directory
devices
/srv/node
Parent directory of where devices are mounted
mount_check
true
Whether or not check if the devices are mounted to prevent accidentally writing to the root device
bind_ip
0.0.0.0
IP Address for server to bind to
bind_port
6201
Port for server to bind to
keep_idle
600
Value to set for socket TCP_KEEPIDLE
bind_timeout
30
Seconds to attempt bind before giving up
backlog
4096
Maximum number of allowed pending connections
workers
auto
Override the number of pre-forked workers that will accept connections. If set it should be an integer, zero means no fork. If unset, it will try to default to the number of effective cpu cores and fallback to one. Increasing the number of workers may reduce the possibility of slow file system operations in one request from negatively impacting other requests. See General Service Tuning.
max_clients
1024
Maximum number of clients one worker can process simultaneously (it will actually accept(2) N + 1). Setting this to one (1) will only handle one request at a time, without accepting another request concurrently.
user
swift
User to run as
disable_fallocate
false
Disable “fast fail” fallocate checks if the underlying filesystem does not support it.
log_name
swift
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_address
/dev/log
Logging directory
log_max_line_length
0
Caps the length of log lines to the value given; no limit if set to 0, the default.
log_custom_handlers
None
Comma-separated list of functions to call to setup custom log handlers.
log_udp_host
Override log_address
log_udp_port
514
UDP log port
log_statsd_host
None
Enables StatsD logging; IPv4/IPv6 address or a hostname. If a hostname resolves to an IPv4 and IPv6 address, the IPv4 address will be used.
log_statsd_port
8125
log_statsd_default_sample_rate
1.0
log_statsd_sample_rate_factor
1.0
log_statsd_metric_prefix
eventlet_debug
false
If true, turn on debug logging for eventlet
fallocate_reserve
1%
You can set fallocate_reserve to the number of bytes or percentage of disk space you’d like fallocate to reserve, whether there is space for the given file size or not. Percentage will be used if the value ends with a ‘%’. This is useful for systems that behave badly when they completely run out of space; you can make the services pretend they’re out of space early.
db_preallocation
off
If you don’t mind the extra disk space usage in overhead, you can turn this on to preallocate disk space with SQLite databases to decrease fragmentation.
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
Option
Default
Description
use
paste.deploy entry point for the container server. For most cases, this should be egg:swift#container.
set log_name
container-server
Label used when logging
set log_facility
LOG_LOCAL0
Syslog log facility
set log_level
INFO
Logging level
set log_requests
True
Whether or not to log each request
set log_address
/dev/log
Logging directory
node_timeout
3
Request timeout to external services
conn_timeout
0.5
Connection timeout to external services
allow_versions
false
Enable/Disable object versioning feature
auto_create_account_prefix
.
Prefix used when automatically
replication_server
Configure parameter for creating specific server. To handle all verbs, including replication verbs, do not specify “replication_server” (this is the default). To only handle replication, set to a True value (e.g. “True” or “1”). To handle only non-replication verbs, set to “False”. Unless you have a separate replication network, you should not specify any value for “replication_server”.
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
Option
Default
Description
log_name
container-replicator
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_address
/dev/log
Logging directory
per_diff
1000
Maximum number of database rows that will be sync’d in a single HTTP replication request. Databases with less than or equal to this number of differing rows will always be sync’d using an HTTP replication request rather than using rsync.
max_diffs
100
Maximum number of HTTP replication requests attempted on each replication pass for any one container. This caps how long the replicator will spend trying to sync a given database per pass so the other databases don’t get starved.
concurrency
8
Number of replication workers to spawn
interval
30
Time in seconds to wait between replication passes
databases_per_second
50
Maximum databases to process per second. Should be tuned according to individual system specs. 0 is unlimited.
node_timeout
10
Request timeout to external services
conn_timeout
0.5
Connection timeout to external services
reclaim_age
604800
Time elapsed in seconds before a container can be reclaimed
rsync_module
{replication_ip}::container
Format of the rsync module where the replicator will send data. The configuration value can include some variables that will be extracted from the ring. Variables must follow the format {NAME} where NAME is one of: ip, port, replication_ip, replication_port, region, zone, device, meta. See etc/rsyncd.conf-sample for some examples.
rsync_compress
no
Allow rsync to compress data which is transmitted to destination node during sync. However, this is applicable only when destination node is in a different region than the local one. NOTE: Objects that are already compressed (for example: .tar.gz, mp3) might slow down the syncing process.
recon_cache_path
/var/cache/swift
Path to recon cache
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
Option
Default
Description
log_name
container-updater
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_address
/dev/log
Logging directory
interval
300
Minimum time for a pass to take
concurrency
4
Number of updater workers to spawn
node_timeout
3
Request timeout to external services
conn_timeout
0.5
Connection timeout to external services
containers_per_second
50
Maximum containers updated per second. Should be tuned according to individual system specs. 0 is unlimited.
slowdown
0.01
Time in seconds to wait between containers. Deprecated in favor of containers_per_second.
account_suppression_time
60
Seconds to suppress updating an account that has generated an error (timeout, not yet found, etc.)
recon_cache_path
/var/cache/swift
Path to recon cache
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
Option
Default
Description
log_name
container-auditor
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_address
/dev/log
Logging directory
interval
1800
Minimum time for a pass to take
containers_per_second
200
Maximum containers audited per second. Should be tuned according to individual system specs. 0 is unlimited.
recon_cache_path
/var/cache/swift
Path to recon cache
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
An example Account Server configuration can be found at etc/account-server.conf-sample in the source code repository.
The following configuration sections are available:
Option
Default
Description
swift_dir
/etc/swift
Swift configuration directory
devices
/srv/node
Parent directory or where devices are mounted
mount_check
true
Whether or not check if the devices are mounted to prevent accidentally writing to the root device
bind_ip
0.0.0.0
IP Address for server to bind to
bind_port
6202
Port for server to bind to
keep_idle
600
Value to set for socket TCP_KEEPIDLE
bind_timeout
30
Seconds to attempt bind before giving up
backlog
4096
Maximum number of allowed pending connections
workers
auto
Override the number of pre-forked workers that will accept connections. If set it should be an integer, zero means no fork. If unset, it will try to default to the number of effective cpu cores and fallback to one. Increasing the number of workers may reduce the possibility of slow file system operations in one request from negatively impacting other requests. See General Service Tuning.
max_clients
1024
Maximum number of clients one worker can process simultaneously (it will actually accept(2) N + 1). Setting this to one (1) will only handle one request at a time, without accepting another request concurrently.
user
swift
User to run as
db_preallocation
off
If you don’t mind the extra disk space usage in overhead, you can turn this on to preallocate disk space with SQLite databases to decrease fragmentation.
disable_fallocate
false
Disable “fast fail” fallocate checks if the underlying filesystem does not support it.
log_name
swift
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_address
/dev/log
Logging directory
log_max_line_length
0
Caps the length of log lines to the value given; no limit if set to 0, the default.
log_custom_handlers
None
Comma-separated list of functions to call to setup custom log handlers.
log_udp_host
Override log_address
log_udp_port
514
UDP log port
log_statsd_host
None
Enables StatsD logging; IPv4/IPv6 address or a hostname. If a hostname resolves to an IPv4 and IPv6 address, the IPv4 address will be used.
log_statsd_port
8125
log_statsd_default_sample_rate
1.0
log_statsd_sample_rate_factor
1.0
log_statsd_metric_prefix
eventlet_debug
false
If true, turn on debug logging for eventlet
fallocate_reserve
1%
You can set fallocate_reserve to the number of bytes or percentage of disk space you’d like fallocate to reserve, whether there is space for the given file size or not. Percentage will be used if the value ends with a ‘%’. This is useful for systems that behave badly when they completely run out of space; you can make the services pretend they’re out of space early.
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
Option
Default
Description
use
Entry point for paste.deploy for the account server. For most cases, this should be egg:swift#account.
set log_name
account-server
Label used when logging
set log_facility
LOG_LOCAL0
Syslog log facility
set log_level
INFO
Logging level
set log_requests
True
Whether or not to log each request
set log_address
/dev/log
Logging directory
auto_create_account_prefix
.
Prefix used when automatically creating accounts.
replication_server
Configure parameter for creating specific server. To handle all verbs, including replication verbs, do not specify “replication_server” (this is the default). To only handle replication, set to a True value (e.g. “True” or “1”). To handle only non-replication verbs, set to “False”. Unless you have a separate replication network, you should not specify any value for “replication_server”.
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
Option
Default
Description
log_name
account-replicator
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_address
/dev/log
Logging directory
per_diff
1000
Maximum number of database rows that will be sync’d in a single HTTP replication request. Databases with less than or equal to this number of differing rows will always be sync’d using an HTTP replication request rather than using rsync.
max_diffs
100
Maximum number of HTTP replication requests attempted on each replication pass for any one container. This caps how long the replicator will spend trying to sync a given database per pass so the other databases don’t get starved.
concurrency
8
Number of replication workers to spawn
interval
30
Time in seconds to wait between replication passes
databases_per_second
50
Maximum databases to process per second. Should be tuned according to individual system specs. 0 is unlimited.
node_timeout
10
Request timeout to external services
conn_timeout
0.5
Connection timeout to external services
reclaim_age
604800
Time elapsed in seconds before an account can be reclaimed
rsync_module
{replication_ip}::account
Format of the rsync module where the replicator will send data. The configuration value can include some variables that will be extracted from the ring. Variables must follow the format {NAME} where NAME is one of: ip, port, replication_ip, replication_port, region, zone, device, meta. See etc/rsyncd.conf-sample for some examples.
rsync_compress
no
Allow rsync to compress data which is transmitted to destination node during sync. However, this is applicable only when destination node is in a different region than the local one. NOTE: Objects that are already compressed (for example: .tar.gz, mp3) might slow down the syncing process.
recon_cache_path
/var/cache/swift
Path to recon cache
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
Option
Default
Description
log_name
account-auditor
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_address
/dev/log
Logging directory
interval
1800
Minimum time for a pass to take
accounts_per_second
200
Maximum accounts audited per second. Should be tuned according to individual system specs. 0 is unlimited.
recon_cache_path
/var/cache/swift
Path to recon cache
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
Option
Default
Description
log_name
account-reaper
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_address
/dev/log
Logging directory
concurrency
25
Number of replication workers to spawn
interval
3600
Minimum time for a pass to take
node_timeout
10
Request timeout to external services
conn_timeout
0.5
Connection timeout to external services
delay_reaping
0
Normally, the reaper begins deleting account information for deleted accounts immediately; you can set this to delay its work however. The value is in seconds, 2592000 = 30 days, for example. The sum of this value and the container-updater interval
should be less than the account-replicator reclaim_age
. This ensures that once the account-reaper has deleted a container there is sufficient time for the container-updater to report to the account before the account DB is removed.
reap_warn_after
2892000
If the account fails to be be reaped due to a persistent error, the account reaper will log a message such as: Account
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort), and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
An example Proxy Server configuration can be found at etc/proxy-server.conf-sample in the source code repository.
The following configuration sections are available:
Option
Default
Description
bind_ip
0.0.0.0
IP Address for server to bind to
bind_port
80
Port for server to bind to
keep_idle
600
Value to set for socket TCP_KEEPIDLE
bind_timeout
30
Seconds to attempt bind before giving up
backlog
4096
Maximum number of allowed pending connections
swift_dir
/etc/swift
Swift configuration directory
workers
auto
Override the number of pre-forked workers that will accept connections. If set it should be an integer, zero means no fork. If unset, it will try to default to the number of effective cpu cores and fallback to one. See General Service Tuning.
max_clients
1024
Maximum number of clients one worker can process simultaneously (it will actually accept(2) N + 1). Setting this to one (1) will only handle one request at a time, without accepting another request concurrently.
user
swift
User to run as
cert_file
Path to the ssl .crt. This should be enabled for testing purposes only.
key_file
Path to the ssl .key. This should be enabled for testing purposes only.
cors_allow_origin
List of origin hosts that are allowed for CORS requests in addition to what the container has set.
strict_cors_mode
True
If True (default) then CORS requests are only allowed if their Origin header matches an allowed origin. Otherwise, any Origin is allowed.
cors_expose_headers
This is a list of headers that are included in the header Access-Control-Expose-Headers in addition to what the container has set.
client_timeout
60
trans_id_suffix
This optional suffix (default is empty) that would be appended to the swift transaction id allows one to easily figure out from which cluster that X-Trans-Id belongs to. This is very useful when one is managing more than one swift cluster.
log_name
swift
Label used when logging
log_facility
LOG_LOCAL0
Syslog log facility
log_level
INFO
Logging level
log_headers
False
log_address
/dev/log
Logging directory
log_max_line_length
0
Caps the length of log lines to the value given; no limit if set to 0, the default.
log_custom_handlers
None
Comma separated list of functions to call to setup custom log handlers.
log_udp_host
Override log_address
log_udp_port
514
UDP log port
log_statsd_host
None
Enables StatsD logging; IPv4/IPv6 address or a hostname. If a hostname resolves to an IPv4 and IPv6 address, the IPv4 address will be used.
log_statsd_port
8125
log_statsd_default_sample_rate
1.0
log_statsd_sample_rate_factor
1.0
log_statsd_metric_prefix
eventlet_debug
false
If true, turn on debug logging for eventlet
expose_info
true
Enables exposing configuration settings via HTTP GET /info.
admin_key
Key to use for admin calls that are HMAC signed. Default is empty, which will disable admin calls to /info.
disallowed_sections
swift.valid_api_versions
Allows the ability to withhold sections from showing up in the public calls to /info. You can withhold subsections by separating the dict level with a “.”.
expiring_objects_container_divisor
86400
expiring_objects_account_name
expiring_objects
nice_priority
None
Scheduling priority of server processes. Niceness values range from -20 (most favorable to the process) to 19 (least favorable to the process). The default does not modify priority.
ionice_class
None
I/O scheduling class of server processes. I/O niceness class values are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort) and IOPRIO_CLASS_IDLE (idle). The default does not modify class and priority. Linux supports io scheduling priorities and classes since 2.6.13 with the CFQ io scheduler. Work only with ionice_priority.
ionice_priority
None
I/O scheduling priority of server processes. I/O niceness priority is a number which goes from 0 to 7. The higher the value, the lower the I/O priority of the process. Work only with ionice_class. Ignored if IOPRIO_CLASS_IDLE is set.
Option
Default
Description
use
Entry point for paste.deploy for the proxy server. For most cases, this should be egg:swift#proxy.
set log_name
proxy-server
Label used when logging
set log_facility
LOG_LOCAL0
Syslog log facility
set log_level
INFO
Log level
set log_headers
True
If True, log headers in each request
set log_handoffs
True
If True, the proxy will log whenever it has to failover to a handoff node
recheck_account_existence
60
Cache timeout in seconds to send memcached for account existence
recheck_container_existence
60
Cache timeout in seconds to send memcached for container existence
object_chunk_size
65536
Chunk size to read from object servers
client_chunk_size
65536
Chunk size to read from clients
memcache_servers
127.0.0.1:11211
Comma separated list of memcached servers ip:port or [ipv6addr]:port
memcache_max_connections
2
Max number of connections to each memcached server per worker
node_timeout
10
Request timeout to external services
recoverable_node_timeout
node_timeout
Request timeout to external services for requests that, on failure, can be recovered from. For example, object GET.
client_timeout
60
Timeout to read one chunk from a client
conn_timeout
0.5
Connection timeout to external services
error_suppression_interval
60
Time in seconds that must elapse since the last error for a node to be considered no longer error limited
error_suppression_limit
10
Error count to consider a node error limited
allow_account_management
false
Whether account PUTs and DELETEs are even callable
account_autocreate
false
If set to ‘true’ authorized accounts that do not yet exist within the Swift cluster will be automatically created.
max_containers_per_account
0
If set to a positive value, trying to create a container when the account already has at least this maximum containers will result in a 403 Forbidden. Note: This is a soft limit, meaning a user might exceed the cap for recheck_account_existence before the 403s kick in.
max_containers_whitelist
This is a comma separated list of account names that ignore the max_containers_per_account cap.
rate_limit_after_segment
10
Rate limit the download of large object segments after this segment is downloaded.
rate_limit_segments_per_sec
1
Rate limit large object downloads at this rate.
request_node_count
2 * replicas
Set to the number of nodes to contact for a normal request. You can use ‘* replicas’ at the end to have it use the number given times the number of replicas for the ring being used for the request.
swift_owner_headers