容器服务器配置

本文档描述了容器服务器可用的配置选项。其他 swift 配置选项的文档可以在 配置文档 找到。

一个示例容器服务器配置可以在源代码仓库的 etc/container-server.conf-sample 中找到。

可用的配置部分如下

[DEFAULT]

选项

默认值

描述

swift_dir

/etc/swift

Swift 配置目录

devices

/srv/node

设备挂载的父目录

mount_check

true

是否检查设备是否挂载,以防止意外写入根设备

bind_ip

0.0.0.0

服务器绑定的 IP 地址

bind_port

6201

服务器绑定的端口

keep_idle

600

为 socket TCP_KEEPIDLE 设置的值

bind_timeout

30

尝试绑定之前的秒数

backlog

4096

允许的最大挂起连接数

workers

auto

覆盖将接受连接的预 fork 工作进程的数量。如果设置,则应为整数,零表示不 fork。如果未设置,它将尝试默认为有效的 cpu 核心数,如果无法确定则回退为 1。增加工作进程的数量可以减少单个请求中的慢文件系统操作对其他请求产生负面影响的可能性。请参阅 通用服务调优

max_clients

1024

单个工作进程可以同时处理的最大客户端数(它实际上会接受(2) N + 1)。将其设置为 1 将仅同时处理一个请求,而不接受另一个并发请求。

user

swift

运行用户

disable_fallocate

false

如果底层文件系统不支持,则禁用“快速失败” fallocate 检查。

log_name

swift

用于日志记录的标签

log_facility

LOG_LOCAL0

syslog 日志设施

log_level

INFO

日志级别

log_address

/dev/log

日志目录

log_max_line_length

0

将日志行长度限制为给定的值;如果设置为 0(默认值),则没有限制。

log_custom_handlers

逗号分隔的函数列表,用于设置自定义日志处理程序。

log_udp_host

覆盖 log_address

log_udp_port

514

UDP 日志端口

log_statsd_host

启用 StatsD 日志记录;IPv4/IPv6 地址或主机名。如果主机名解析为 IPv4 和 IPv6 地址,则将使用 IPv4 地址。

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

如果为 true,则启用 eventlet 的调试日志记录

fallocate_reserve

1%

您可以将 fallocate_reserve 设置为要预留的字节数或磁盘空间的百分比,无论是否有给定文件大小的空间。如果值以“%”结尾,则使用百分比。这对于行为不佳的系统在完全耗尽空间时很有用;您可以让服务提前假装空间不足。

db_preallocation

关闭

如果您不介意额外的磁盘空间开销,可以启用此选项以使用 SQLite 数据库预分配磁盘空间,以减少碎片。

nice_priority

服务器进程的调度优先级。Nice 值范围从 -20(对进程最有利)到 19(对进程最不利)。默认情况下,不修改优先级。

ionice_class

服务器进程的 I/O 调度类。I/O nice 类值是 IOPRIO_CLASS_RT(实时)、IOPRIO_CLASS_BE(尽力而为)和 IOPRIO_CLASS_IDLE(空闲)。默认情况下,不修改类和优先级。Linux 从 2.6.13 开始支持 io 调度优先级和类,并使用 CFQ io 调度程序。仅与 ionice_priority 一起工作。

ionice_priority

服务器进程的 I/O 调度优先级。I/O nice 优先级是一个数字,范围从 0 到 7。值越高,进程的 I/O 优先级越低。仅与 ionice_class 一起工作。如果设置了 IOPRIO_CLASS_IDLE,则会被忽略。

[container-server]

选项

默认值

描述

use

容器服务器的 paste.deploy 入口点。在大多数情况下,应为 egg:swift#container

set log_name

container-server

用于日志记录的标签

set log_facility

LOG_LOCAL0

syslog 日志设施

set log_level

INFO

日志级别

set log_requests

True

是否记录每个请求

set log_address

/dev/log

日志目录

node_timeout

3

对外部服务的请求超时时间

conn_timeout

0.5

对外部服务的连接超时时间

allow_versions

false

启用/禁用对象版本控制功能

replication_server

配置用于创建特定服务器的参数。要处理所有动词,包括复制动词,请不要指定“replication_server”(这是默认值)。要仅处理复制,请设置为 True 值(例如“True”或“1”)。要仅处理非复制动词,请设置为“False”。除非您有单独的复制网络,否则不应指定“replication_server”的任何值。

nice_priority

服务器进程的调度优先级。Nice 值范围从 -20(对进程最有利)到 19(对进程最不利)。默认情况下,不修改优先级。

ionice_class

服务器进程的 I/O 调度类。I/O nice 类值是 IOPRIO_CLASS_RT(实时)、IOPRIO_CLASS_BE(尽力而为)和 IOPRIO_CLASS_IDLE(空闲)。默认情况下,不修改类和优先级。Linux 从 2.6.13 开始支持 io 调度优先级和类,并使用 CFQ io 调度程序。仅与 ionice_priority 一起工作。

ionice_priority

服务器进程的 I/O 调度优先级。I/O nice 优先级是一个数字,范围从 0 到 7。值越高,进程的 I/O 优先级越低。仅与 ionice_class 一起工作。如果设置了 IOPRIO_CLASS_IDLE,则会被忽略。

[container-replicator]

选项

默认值

描述

log_name

container-replicator

用于日志记录的标签

log_facility

LOG_LOCAL0

syslog 日志设施

log_level

INFO

日志级别

log_address

/dev/log

日志目录

per_diff

1000

单个 HTTP 复制请求中将同步的最大数据库行数。数据库中少于或等于此数量的差异行将始终使用 HTTP 复制请求同步,而不是使用 rsync。

max_diffs

100

每次复制传递中,针对任何一个容器尝试的最大 HTTP 复制请求数。这限制了复制器在每次传递中同步给定数据库所花费的时间,从而避免其他数据库被饿死。

concurrency

8

要启动的复制工作进程数量

interval

30

复制传递之间等待的秒数

databases_per_second

50

每秒处理的最大数据库数。应根据单个系统规格进行调整。0 表示无限制。

node_timeout

10

对外部服务的请求超时时间

conn_timeout

0.5

对外部服务的连接超时时间

reclaim_age

604800

在容器可以被回收之前经过的时间(秒)

rsync_module

{replication_ip}::container

rsync 模块的格式,复制器将向其中发送数据。配置值可以包含一些将从环中提取的变量。变量必须遵循 {NAME} 格式,其中 NAME 是以下之一:ip、port、replication_ip、replication_port、region、zone、device、meta。有关一些示例,请参阅 etc/rsyncd.conf-sample。

rsync_compress

允许 rsync 压缩在同步期间传输到目标节点的数据。但是,这仅适用于目标节点位于与本地节点不同的区域时。注意:已经压缩的对象(例如:.tar.gz、mp3)可能会减慢同步过程。

recon_cache_path

/var/cache/swift

recon 缓存路径

nice_priority

服务器进程的调度优先级。Nice 值范围从 -20(对进程最有利)到 19(对进程最不利)。默认情况下,不修改优先级。

ionice_class

服务器进程的 I/O 调度类。I/O nice 类值是 IOPRIO_CLASS_RT(实时)、IOPRIO_CLASS_BE(尽力而为)和 IOPRIO_CLASS_IDLE(空闲)。默认情况下,不修改类和优先级。Linux 从 2.6.13 开始支持 io 调度优先级和类,并使用 CFQ io 调度程序。仅与 ionice_priority 一起工作。

ionice_priority

服务器进程的 I/O 调度优先级。I/O nice 优先级是一个数字,范围从 0 到 7。值越高,进程的 I/O 优先级越低。仅与 ionice_class 一起工作。如果设置了 IOPRIO_CLASS_IDLE,则会被忽略。

handoffs_only

当启用 handoffs_only 模式时,复制器将从 handoff 节点复制到主节点,并且不会同步主节点与其他主节点。

handoff_delete

auto

Swift 中确保的副本数量。如果设置的数量小于副本数量,container-replicator 即使集群中并非所有副本都已确保,也可能会删除本地 handoff。复制器在成功响应的数量大于或等于此数量后,将删除本地 handoff 容器数据库。默认情况下,handoff 分区将在成功复制到所有规范节点后被删除。

[container-sharder]

容器分片器重用容器复制器的功能并继承为 [container-replicator] 定义的以下配置选项

  • interval

  • databases_per_second

  • per_diff

  • max_diffs

  • concurrency

  • node_timeout

  • conn_timeout

  • reclaim_age

  • rsync_compress

  • rsync_module

  • recon_cache_path

此部分中的一些配置选项也可能被 swift-manage-shard-ranges CLI 工具 使用。

选项

默认值

描述

log_name

container-sharder

用于日志记录的标签

log_facility

LOG_LOCAL0

syslog 日志设施

log_level

INFO

日志级别

log_address

/dev/log

日志目录

auto_shard

false

如果 auto_shard 选项为 true,则分片器将自动选择要分片的容器,扫描分片范围并选择要缩小的分片。警告:自动分片仍在开发中,不应在生产环境中使用;请勿在生产集群中将此选项设置为 true。

shard_container_threshold

1000000

这定义了启用容器分片的容器开始分片的对象计数。这还间接确定了 rows_per_shard、shrink_threshold 和 expansion_limit 的默认值。

rows_per_shard

500000

这定义了分片容器的初始标称大小。默认值为 shard_container_threshold // 2。

minimum_shard_size

100000

最终分片范围的最小大小。如果此值大于 1,则最终分片范围可能会扩展到 rows_per_shard 以上,以避免小于 minimum_shard_size 行的进一步分片范围。默认值为 rows_per_shard // 5。

shrink_threshold

这定义了“捐赠”分片容器被视为缩小到另一个“接受者”分片容器的对象计数。默认值由 shard_shrink_point 确定。如果设置,shrink_threshold 将优先于 shard_shrink_point。

shard_shrink_point

10

已弃用:建议使用 shrink_threshold,如果设置,shrink_threshold 将优先于 shard_shrink_point。这定义了“捐赠”分片容器被视为缩小到另一个“接受者”分片容器的对象计数。shard_shrink_point 是 shard_container_threshold 的百分比,例如默认值 10 表示 shard_container_threshold 的 10%。

expansion_limit

在将“捐赠”容器合并到其中后,允许的“接受者”分片容器的最大允许大小。默认值由 shard_shrink_merge_point 确定。如果设置,expansion_limit 将优先于 shard_shrink_merge_point。

shard_shrink_merge_point

75

已弃用:建议使用 expansion_limit,如果设置,expansion_limit 将优先于 shard_shrink_merge_point。这定义了在将“捐赠”容器合并到其中后,允许的“接受者”分片容器的最大允许大小。Shard_shrink_merge_point 是 shard_container_threshold 的百分比。例如,默认值 75 表示捐赠对象计数和接受者计数之和必须小于 shard_container_threshold 的 75%,才能允许捐赠容器合并到接受者中。

例如,如果 shard_container_threshold 为 100 万,shard_shrink_point 为 10,shard_shrink_merge_point 为 75,则如果分片对象计数小于或等于 10 万,则会考虑缩小分片,但仅当合并后的对象计数小于或等于 75 万对象时,才能合并到接受者中。

shard_scanner_batch_size

10

当启用自动分片时,这定义了分片器守护程序每次访问分片容器时将找到的最大分片范围数。如果需要,分片器守护程序将继续每次访问容器时搜索更多分片范围。

cleave_batch_size

2

定义分片器守护程序每次访问分片容器时将分割的分片范围数。

cleave_row_batch_size

10000

定义从分片容器读取并合并到分片容器中的对象行批次大小,在分割期间。

shard_replication_quorum

auto

定义在分片器在分割先前未分割的分片范围之前,需要成功复制的碎片数据库的数量。该值应小于或等于容器环副本计数。默认值为“auto”,这将导致使用容器环仲裁值。此选项仅适用于容器分片器复制,不影响容器复制器最终将复制的碎片容器副本数。

existing_shard_replication_quorum

auto

定义在分片器在分割先前在另一个节点上分割的分片范围之前,需要成功复制的碎片数据库的数量。该值应小于或等于容器环副本计数。默认值为“auto”,这将导致使用 shard_replication_quorum 值。此选项仅适用于容器分片器复制,不影响容器复制器最终将复制的碎片容器副本数。

internal_client_conf_path

请参阅描述

分片器使用内部客户端来创建并向容器发出请求。可以配置客户端配置文件(client config file)的绝对路径。默认值为 /etc/swift/internal-client.conf

request_tries

3

内部客户端将重试请求的次数。

recon_candidates_limit

5

每次分片器将统计信息转储到 recon 缓存文件时,它都会包含一个似乎需要分片但尚未分片的容器列表。默认情况下,此列表限制为按对象计数排序的前 5 个容器。可以通过将 recon_candidates_limit 设置为整数值来更改限制。负值表示无限制。

broker_timeout

60

大型数据库通常需要一段时间才能使用,但我们希望确保记录我们的进度。使用比正常更大的 broker 超时时间,以减少因 LockTimeout 而导致故障的可能性。

[container-updater]

选项

默认值

描述

log_name

container-updater

用于日志记录的标签

log_facility

LOG_LOCAL0

syslog 日志设施

log_level

INFO

日志级别

log_address

/dev/log

日志目录

interval

300

一次传递的最小时间

concurrency

4

要启动的更新程序工作进程数量

node_timeout

3

对外部服务的请求超时时间

conn_timeout

0.5

对外部服务的连接超时时间

containers_per_second

50

每秒更新的最大容器数。应根据单个系统规格进行调整。0 表示无限制。

slowdown

0.01

容器之间等待的时间(秒)。已被 containers_per_second 取代。

account_suppression_time

60

在生成错误(超时、未找到等)后,抑制更新帐户的秒数

recon_cache_path

/var/cache/swift

recon 缓存路径

nice_priority

服务器进程的调度优先级。Nice 值范围从 -20(对进程最有利)到 19(对进程最不利)。默认情况下,不修改优先级。

ionice_class

服务器进程的 I/O 调度类。I/O nice 类值是 IOPRIO_CLASS_RT(实时)、IOPRIO_CLASS_BE(尽力而为)和 IOPRIO_CLASS_IDLE(空闲)。默认情况下,不修改类和优先级。Linux 从 2.6.13 开始支持 io 调度优先级和类,并使用 CFQ io 调度程序。仅与 ionice_priority 一起工作。

ionice_priority

服务器进程的 I/O 调度优先级。I/O nice 优先级是一个数字,范围从 0 到 7。值越高,进程的 I/O 优先级越低。仅与 ionice_class 一起工作。如果设置了 IOPRIO_CLASS_IDLE,则会被忽略。

[container-auditor]

选项

默认值

描述

log_name

container-auditor

用于日志记录的标签

log_facility

LOG_LOCAL0

syslog 日志设施

log_level

INFO

日志级别

log_address

/dev/log

日志目录

interval

1800

一次传递的最小时间

containers_per_second

200

每秒审计的最大容器数。应根据单个系统规格进行调整。0 表示无限制。

recon_cache_path

/var/cache/swift

recon 缓存路径

nice_priority

服务器进程的调度优先级。Nice 值范围从 -20(对进程最有利)到 19(对进程最不利)。默认情况下,不修改优先级。

ionice_class

服务器进程的 I/O 调度类。I/O nice 类值是 IOPRIO_CLASS_RT(实时)、IOPRIO_CLASS_BE(尽力而为)和 IOPRIO_CLASS_IDLE(空闲)。默认情况下,不修改类和优先级。Linux 从 2.6.13 开始支持 io 调度优先级和类,并使用 CFQ io 调度程序。仅与 ionice_priority 一起工作。

ionice_priority

服务器进程的 I/O 调度优先级。I/O nice 优先级是一个数字,范围从 0 到 7。值越高,进程的 I/O 优先级越低。仅与 ionice_class 一起工作。如果设置了 IOPRIO_CLASS_IDLE,则会被忽略。