容器服务器配置¶
本文档描述了容器服务器可用的配置选项。其他 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 入口点。在大多数情况下,应为 |
|
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,则会被忽略。 |