Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

10.5. Container server configuration

Find an example container server configuration at etc/container-server.conf-sample in the source code repository.
The available configuration options are:

Table 10.18. Description of configuration options for [DEFAULT] in container-server.conf

Configuration option = Default value Description
allowed_sync_hosts = 127.0.0.1 No help text available for this option.
backlog = 4096 Maximum number of allowed pending TCP connections
bind_ip = 0.0.0.0 IP Address for server to bind to
bind_port = 6001 Port for server to bind to
bind_timeout = 30 Seconds to attempt bind before giving up
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. underlying filesystem does not support it. to setup custom log handlers. bytes you'd like fallocate to reserve, whether there is space for the given file size or not. 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. server. For most cases, this should be `egg:swift#account`. replication passes account can be reclaimed
devices = /srv/node Parent directory of where devices are mounted
disable_fallocate = false Disable "fast fail" fallocate checks if the underlying filesystem does not support it.
eventlet_debug = false If true, turn on debug logging for eventlet
fallocate_reserve = 0 You can set fallocate_reserve to the number of bytes you'd like fallocate to reserve, whether there is space for the given file size or not. 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. server. For most cases, this should be `egg:swift#object`.
log_address = /dev/log Location where syslog sends the logs to
log_custom_handlers = Comma-separated list of functions to call to setup custom log handlers.
log_facility = LOG_LOCAL0 Syslog log facility
log_level = INFO Logging level
log_max_line_length = 0 Caps the length of log lines to the value given; no limit if set to 0, the default.
log_name = swift Label used when logging
log_statsd_default_sample_rate = 1.0 Defines the probability of sending a sample for any given event or timing measurement.
log_statsd_host = localhost If not set, the StatsD feature is disabled.
log_statsd_metric_prefix = Value will be prepended to every metric sent to the StatsD server.
log_statsd_port = 8125 Port value for the StatsD server.
log_statsd_sample_rate_factor = 1.0 Not recommended to set this to a value less than 1.0, if frequency of logging is too high, tune the log_statsd_default_sample_rate instead.
log_udp_host = If not set, the UDP receiver for syslog is disabled.
log_udp_port = 514 Port value for UDP receiver, if enabled.
max_clients = 1024 Maximum number of clients one worker can process simultaneously Lowering the number of clients handled per worker, and raising the number of workers can lessen the impact that a CPU intensive, or blocking, request can have on other requests served by the same worker. If the maximum number of clients is set to one, then a given worker will not perform another call while processing, allowing other workers a chance to process it.
mount_check = true Whether or not check if the devices are mounted to prevent accidentally writing to the root device
swift_dir = /etc/swift Swift configuration directory
user = swift User to run as
workers = auto a much higher value, one can reduce the impact of slow file system operations in one request from negatively impacting other requests.

Table 10.19. Description of configuration options for [app-container-server] in container-server.conf

Configuration option = Default value Description
allow_versions = false Enable/Disable object versioning feature
auto_create_account_prefix = . Prefix to use when automatically creating accounts
conn_timeout = 0.5 Connection timeout to external services
node_timeout = 3 Request timeout to external services
replication_server = false If defined, tells server how to handle replication verbs in requests. When set to True (or 1), only replication verbs will be accepted. When set to False, replication verbs will be rejected. When undefined, server will accept any verb in the request.
set log_address = /dev/log Location where syslog sends the logs to
set log_facility = LOG_LOCAL0 Syslog log facility
set log_level = INFO Log level
set log_name = container-server Label to use when logging
set log_requests = true Whether or not to log requests
use = egg:swift#container Entry point of paste.deploy in the server

Table 10.20. Description of configuration options for [pipeline-main] in container-server.conf

Configuration option = Default value Description
pipeline = healthcheck recon container-server No help text available for this option.

Table 10.21. Description of configuration options for [container-replicator] in container-server.conf

Configuration option = Default value Description
concurrency = 8 Number of replication workers to spawn
conn_timeout = 0.5 Connection timeout to external services
interval = 30 Minimum time for a pass to take
log_address = /dev/log Location where syslog sends the logs to
log_facility = LOG_LOCAL0 Syslog log facility
log_level = INFO Logging level
log_name = container-replicator Label used when logging
max_diffs = 100 Caps how long the replicator spends trying to sync a database per pass
node_timeout = 10 Request timeout to external services
per_diff = 1000 Limit number of items to get per diff
reclaim_age = 604800 Time elapsed in seconds before an object can be reclaimed
recon_cache_path = /var/cache/swift Directory where stats for a few items will be stored
run_pause = 30 Time in seconds to wait between replication passes
vm_test_mode = no Indicates that you are using a VM environment

Table 10.22. Description of configuration options for [container-updater] in container-server.conf

Configuration option = Default value Description
account_suppression_time = 60 Seconds to suppress updating an account that has generated an error (timeout, not yet found, etc.)
concurrency = 4 Number of replication workers to spawn
conn_timeout = 0.5 Connection timeout to external services
interval = 300 Minimum time for a pass to take
log_address = /dev/log Location where syslog sends the logs to
log_facility = LOG_LOCAL0 Syslog log facility
log_level = INFO Logging level
log_name = container-updater Label used when logging
node_timeout = 3 Request timeout to external services
recon_cache_path = /var/cache/swift Directory where stats for a few items will be stored
slowdown = 0.01 Time in seconds to wait between objects

Table 10.23. Description of configuration options for [container-auditor] in container-server.conf

Configuration option = Default value Description
containers_per_second = 200 Maximum containers audited per second. Should be tuned according to individual system specs. 0 is unlimited. mounted to prevent accidentally writing to the root device 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. By increasing the number of workers to a much higher value, one can reduce the impact of slow file system operations in one request from negatively impacting other requests.
interval = 1800 Minimum time for a pass to take
log_address = /dev/log Location where syslog sends the logs to
log_facility = LOG_LOCAL0 Syslog log facility
log_level = INFO Logging level
log_name = container-auditor Label used when logging
recon_cache_path = /var/cache/swift Directory where stats for a few items will be stored

Table 10.24. Description of configuration options for [container-sync] in container-server.conf

Configuration option = Default value Description
conn_timeout = 5 Connection timeout to external services
container_time = 60 Maximum amount of time to spend syncing each container
internal_client_conf_path = /etc/swift/internal-client.conf No help text available for this option.
interval = 300 Minimum time for a pass to take
log_address = /dev/log Location where syslog sends the logs to
log_facility = LOG_LOCAL0 Syslog log facility
log_level = INFO Logging level
log_name = container-sync Label used when logging
request_tries = 3 No help text available for this option.
sync_proxy = http://10.1.1.1:8888,http://10.1.1.2:8888 If you need to use an HTTP proxy, set it here. Defaults to no proxy.

Table 10.25. Description of configuration options for [filter-healthcheck] in container-server.conf

Configuration option = Default value Description
disable_path = No help text available for this option.
use = egg:swift#healthcheck Entry point of paste.deploy in the server

Table 10.26. Description of configuration options for [filter-recon] in container-server.conf

Configuration option = Default value Description
recon_cache_path = /var/cache/swift Directory where stats for a few items will be stored
use = egg:swift#recon Entry point of paste.deploy in the server

Table 10.27. Description of configuration options for [filter-xprofile] in container-server.conf

Configuration option = Default value Description
dump_interval = 5.0 No help text available for this option.
dump_timestamp = false No help text available for this option.
flush_at_shutdown = false No help text available for this option.
log_filename_prefix = /tmp/log/swift/profile/default.profile No help text available for this option.
path = /__profile__ No help text available for this option.
profile_module = eventlet.green.profile No help text available for this option.
unwind = false No help text available for this option.
use = egg:swift#xprofile Entry point of paste.deploy in the server

10.5.1. Sample container server configuration file

[DEFAULT]
# bind_ip = 0.0.0.0
bind_port = 6001
# bind_timeout = 30
# backlog = 4096
# user = swift
# swift_dir = /etc/swift
# devices = /srv/node
# mount_check = true
# disable_fallocate = false
#
# Use an integer to override the number of pre-forked processes that will
# accept connections.
# workers = auto
#
# Maximum concurrent requests per worker
# max_clients = 1024
#
# This is a comma separated list of hosts allowed in the X-Container-Sync-To
# field for containers. This is the old-style of using container sync. It is
# strongly recommended to use the new style of a separate
# container-sync-realms.conf -- see container-sync-realms.conf-sample
# allowed_sync_hosts = 127.0.0.1
#
# You can specify default log routing here if you want:
# log_name = swift
# log_facility = LOG_LOCAL0
# log_level = INFO
# log_address = /dev/log
# The following caps the length of log lines to the value given; no limit if
# set to 0, the default.
# log_max_line_length = 0
#
# comma separated list of functions to call to setup custom log handlers.
# functions get passed: conf, name, log_to_console, log_route, fmt, logger,
# adapted_logger
# log_custom_handlers =
#
# If set, log_udp_host will override log_address
# log_udp_host =
# log_udp_port = 514
#
# You can enable StatsD logging here:
# log_statsd_host = localhost
# log_statsd_port = 8125
# log_statsd_default_sample_rate = 1.0
# log_statsd_sample_rate_factor = 1.0
# log_statsd_metric_prefix =
#
# 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.
# db_preallocation = off
#
# eventlet_debug = false
#
# You can set fallocate_reserve to the number of bytes you'd like fallocate to
# reserve, whether there is space for the given file size or not.
# fallocate_reserve = 0

[pipeline:main]
pipeline = healthcheck recon container-server

[app:container-server]
use = egg:swift#container
# You can override the default log routing for this app here:
# set log_name = container-server
# set log_facility = LOG_LOCAL0
# set log_level = INFO
# set log_requests = true
# set log_address = /dev/log
#
# node_timeout = 3
# conn_timeout = 0.5
# allow_versions = false
# auto_create_account_prefix = .
#
# 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_server = false

[filter:healthcheck]
use = egg:swift#healthcheck
# An optional filesystem path, which if present, will cause the healthcheck
# URL to return "503 Service Unavailable" with a body of "DISABLED BY FILE"
# disable_path =

[filter:recon]
use = egg:swift#recon
#recon_cache_path = /var/cache/swift

[container-replicator]
# You can override the default log routing for this app here (don't use set!):
# log_name = container-replicator
# log_facility = LOG_LOCAL0
# log_level = INFO
# log_address = /dev/log
#
# vm_test_mode = no
# per_diff = 1000
# max_diffs = 100
# concurrency = 8
# interval = 30
# node_timeout = 10
# conn_timeout = 0.5
#
# The replicator also performs reclamation
# reclaim_age = 604800
#
# Time in seconds to wait between replication passes
# Note: if the parameter 'interval' is defined then it will be used in place
# of run_pause.
# run_pause = 30
#
# recon_cache_path = /var/cache/swift

[container-updater]
# You can override the default log routing for this app here (don't use set!):
# log_name = container-updater
# log_facility = LOG_LOCAL0
# log_level = INFO
# log_address = /dev/log
#
# interval = 300
# concurrency = 4
# node_timeout = 3
# conn_timeout = 0.5
#
# slowdown will sleep that amount between containers
# slowdown = 0.01
#
# Seconds to suppress updating an account that has generated an error
# account_suppression_time = 60
#
# recon_cache_path = /var/cache/swift

[container-auditor]
# You can override the default log routing for this app here (don't use set!):
# log_name = container-auditor
# log_facility = LOG_LOCAL0
# log_level = INFO
# log_address = /dev/log
#
# Will audit each container at most once per interval
# interval = 1800
#
# containers_per_second = 200
# recon_cache_path = /var/cache/swift

[container-sync]
# You can override the default log routing for this app here (don't use set!):
# log_name = container-sync
# log_facility = LOG_LOCAL0
# log_level = INFO
# log_address = /dev/log
#
# If you need to use an HTTP Proxy, set it here; defaults to no proxy.
# You can also set this to a comma separated list of HTTP Proxies and they will
# be randomly used (simple load balancing).
# sync_proxy = http://10.1.1.1:8888,http://10.1.1.2:8888
#
# Will sync each container at most once per interval
# interval = 300
#
# Maximum amount of time to spend syncing each container per pass
# container_time = 60
#
# Maximum amount of time in seconds for the connection attempt
# conn_timeout = 5
# Server errors from requests will be retried by default
# request_tries = 3
#
# Internal client config file path
# internal_client_conf_path = /etc/swift/internal-client.conf

# Note: Put it at the beginning of the pipeline to profile all middleware. But
# it is safer to put this after healthcheck.
[filter:xprofile]
use = egg:swift#xprofile
# This option enable you to switch profilers which should inherit from python
# standard profiler. Currently the supported value can be 'cProfile',
# 'eventlet.green.profile' etc.
# profile_module = eventlet.green.profile
#
# This prefix will be used to combine process ID and timestamp to name the
# profile data file.  Make sure the executing user has permission to write
# into this path (missing path segments will be created, if necessary).
# If you enable profiling in more than one type of daemon, you must override
# it with an unique value like: /var/log/swift/profile/container.profile
# log_filename_prefix = /tmp/log/swift/profile/default.profile
#
# the profile data will be dumped to local disk based on above naming rule
# in this interval.
# dump_interval = 5.0
#
# Be careful, this option will enable profiler to dump data into the file with
# time stamp which means there will be lots of files piled up in the directory.
# dump_timestamp = false
#
# This is the path of the URL to access the mini web UI.
# path = /__profile__
#
# Clear the data when the wsgi server shutdown.
# flush_at_shutdown = false
#
# unwind the iterator of applications
# unwind = false