Proxy Server Configuration¶
本文档描述了代理服务器可用的配置选项。一些代理服务器选项可以在 按策略 的基础上进行配置。有关代理服务器中间件的更多文档,请参见 中间件 和 认证系统。
其他 Swift 配置选项的文档请参见 配置文档。
一个示例 Proxy Server 配置可以在源代码仓库的 etc/proxy-server.conf-sample 中找到。
可用的配置部分如下
[DEFAULT]¶
选项 |
默认值 |
描述 |
bind_ip |
0.0.0.0 |
服务器绑定的 IP 地址 |
bind_port |
80 |
服务器绑定的端口 |
keep_idle |
600 |
为 socket TCP_KEEPIDLE 设置的值 |
bind_timeout |
30 |
尝试绑定之前的秒数 |
backlog |
4096 |
允许的最大挂起连接数 |
swift_dir |
/etc/swift |
Swift 配置目录 |
workers |
auto |
覆盖将接受连接的预先分叉工作进程的数量。如果设置,则应为整数,零表示不分叉。如果未设置,它将尝试默认为有效的 CPU 核心数,如果无法确定则回退为 1。请参阅 通用服务调优。 |
max_clients |
1024 |
单个工作进程可以同时处理的最大客户端数(它实际上会接受(2) N + 1)。将其设置为 1 将仅同时处理一个请求,而不接受另一个并发请求。 |
user |
swift |
运行用户 |
cert_file |
SSL .crt 文件的路径。仅应为测试目的启用。 |
|
key_file |
SSL .key 文件的路径。仅应为测试目的启用。 |
|
cors_allow_origin |
除了容器设置之外,允许进行 CORS 请求的源主机列表。 |
|
strict_cors_mode |
True |
如果为 True(默认值),则仅当 CORS 请求的 Origin 标头与允许的源匹配时才允许该请求。否则,允许任何 Origin。 |
cors_expose_headers |
这是添加到容器设置中的 Access-Control-Expose-Headers 标头中的标头列表。 |
|
client_timeout |
60 |
|
trans_id_suffix |
此可选后缀(默认为空)附加到 Swift 事务 ID 后,可以轻松确定 X-Trans-Id 属于哪个集群。当管理多个 Swift 集群时,这非常有用。 |
|
log_name |
swift |
用于日志记录的标签 |
log_facility |
LOG_LOCAL0 |
syslog 日志设施 |
log_level |
INFO |
日志级别 |
log_headers |
False |
|
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 的调试日志记录 |
expose_info |
true |
启用通过 HTTP GET /info 暴露配置设置。 |
admin_key |
用于 HMAC 签名的管理调用的密钥。默认为空,这将禁用对 /info 的管理调用。 |
|
disallowed_sections |
swift.valid_api_versions |
允许从对 /info 的公共调用中隐藏部分。可以通过用“.”分隔字典级别来隐藏子部分。 |
nice_priority |
无 |
服务器进程的调度优先级。Nice 值范围从 -20(对进程最有利)到 19(对进程最不利)。默认情况下,不修改优先级。 |
ionice_class |
无 |
服务器进程的 I/O 调度类。I/O 优先级类值是 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,则会被忽略。 |
[proxy-server]¶
选项 |
默认值 |
描述 |
use |
代理服务器的 paste.deploy 入口点。在大多数情况下,应该是 |
|
set log_name |
proxy-server |
用于日志记录的标签 |
set log_facility |
LOG_LOCAL0 |
syslog 日志设施 |
set log_level |
INFO |
日志级别 |
set log_headers |
True |
如果为 True,则记录每个请求中的标头 |
set log_handoffs |
True |
如果为 True,则代理将在必须故障转移到备用节点时记录日志 |
recheck_account_existence |
60 |
将 memcached 发送的帐户存在性缓存超时时间(秒)。 |
recheck_container_existence |
60 |
将 memcached 发送的容器存在性缓存超时时间(秒)。 |
account_existence_skip_cache_pct |
0.0 |
定期绕过帐户信息请求的缓存,并转到磁盘以刷新缓存中的数据。这是应该随机跳过的请求百分比。建议使用 0.0 - 0.1(1/1000)左右的值。 |
container_existence_skip_cache_pct |
0.0 |
定期绕过容器信息请求的缓存,并转到磁盘以刷新缓存中的数据。这是应该随机跳过的请求百分比。建议使用 0.0 - 0.1(1/1000)左右的值。 |
container_updating_shard_ranges_skip_cache_pct |
0.0 |
定期绕过 shard_range 更新请求的缓存,并转到磁盘以刷新缓存中的数据。这是应该随机跳过的请求百分比。建议使用 0.0 - 0.1(1/1000)左右的值。 |
container_listing_shard_ranges_skip_cache_pct |
0.0 |
定期绕过 shard_range 列出信息请求的缓存,并转到磁盘以刷新缓存中的数据。这是应该随机跳过的请求百分比。建议使用 0.0 - 0.1(1/1000)左右的值。 |
object_chunk_size |
65536 |
从对象服务器读取的块大小 |
client_chunk_size |
65536 |
从客户端读取的块大小 |
memcache_servers |
127.0.0.1:11211 |
逗号分隔的 memcached 服务器 ip:port 或 [ipv6addr]:port 列表。如果此值为空,则 memcache 客户端将查找 [memcache.conf]。 |
memcache_max_connections |
2 |
每个工作进程到每个 memcached 服务器的最大连接数 |
node_timeout |
10 |
对外部服务的请求超时时间 |
recoverable_node_timeout |
node_timeout |
对外部服务的请求超时时间,这些请求在失败时可以从其他地方恢复。例如,对象 GET。 |
client_timeout |
60 |
从客户端读取一个块的超时时间 |
conn_timeout |
0.5 |
对外部服务的连接超时时间 |
error_suppression_interval |
60 |
自上次错误以来必须经过的时间(秒),才能认为节点不再受错误限制。 |
error_suppression_limit |
10 |
认为节点受错误限制的错误计数 |
allow_account_management |
false |
是否允许调用帐户 PUT 和 DELETE |
account_autocreate |
false |
如果设置为“true”,则授权的且 Swift 集群中尚不存在的帐户将自动创建。 |
max_containers_per_account |
0 |
如果设置为正值,则尝试创建容器时,如果帐户已经至少有这么多容器,则会返回 403 Forbidden。注意:这是一个软限制,这意味着用户可能会在 403 触发之前超过 recheck_account_existence 的上限。 |
max_containers_whitelist |
这是一个逗号分隔的帐户名称列表,这些帐户忽略 max_containers_per_account 上限。 |
|
rate_limit_after_segment |
10 |
下载大型对象段后限制下载速度。 |
rate_limit_segments_per_sec |
1 |
以每秒此速率限制大型对象下载。 |
request_node_count |
2 * replicas |
设置为要联系的节点数量以进行正常请求。您可以使用“* replicas”在末尾,使其使用给定数字乘以正在请求的环的副本数。 |
swift_owner_headers |
<请参阅示例配置文件中的默认标头列表> |
这些标头的值仅对 swift_owner 可见。swift_owner 的确切定义取决于使用的身份验证系统,但通常表示管理职责。 |
sorting_method |
shuffle |
存储节点可以随机选择(shuffle),也可以使用计时测量(timing),或者使用显式匹配(affinity)。使用计时测量可以降低整体延迟,而使用 affinity 可以提供更精细的控制。在 timing 和 affinity 的情况下,同样排序的节点仍然随机选择以分散负载。此选项可以在每个策略的配置部分中覆盖。 |
timing_expiry |
300 |
如果使用“timing”sorting_method,则计时仅在 timing_expiry 配置的秒数内有效。 |
concurrent_gets |
关闭 |
在 GET/HEAD 期间并发使用副本计数数量的线程,并使用第一个成功的响应返回。在 EC 的情况下,此参数仅影响 EC HEAD,因为 EC GET 的行为不同。 |
concurrency_timeout |
conn_timeout |
此参数控制在触发下一个 concurrent_get 线程之前等待多长时间。值为 0 将完全并发,任何其他数字都会延迟线程的触发。此数字应在 0 到 node_timeout 之间。默认值为 conn_timeout (0.5)。 |
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,则会被忽略。 |
read_affinity |
无 |
指定在读取时优先选择哪些后端服务器;与将 sorting_method 选项设置为“affinity” 结合使用。格式是逗号分隔的 affinity 描述符列表,形式为 <selection>=<priority>。<selection> 可以是 r<N> 以选择区域 N 中的节点,或者 r<N>z<M> 以选择区域 N、区域 M 中的节点。<priority> 值应是一个整数,表示赋予选择的优先级;数字越小,优先级越高。默认情况下为空,表示没有偏好。此选项可以在每个策略的配置部分中覆盖。 |
write_affinity |
无 |
指定在写入时优先选择哪些后端服务器。格式是逗号分隔的 affinity 描述符列表,形式为 r<N> 表示区域 N 或 r<N>z<M> 表示区域 N、区域 M。默认情况下为空,表示没有偏好。此选项可以在每个策略的配置部分中覆盖。 |
write_affinity_node_count |
2 * replicas |
在写入时首先尝试联系的本地(由 write_affinity 设置控制)节点的数量,然后再联系任何非本地节点。该值应为整数,或使用“* replicas”在末尾,使其使用给定数字乘以正在请求的环的副本数。此选项可以在每个策略的配置部分中覆盖。 |
write_affinity_handoff_delete_count |
auto |
在删除时尝试联系的本地(由 write_affinity 设置控制)备用节点的数量,除了主节点之外。例如,在地理分布式部署中,如果副本=3,有时在上传后但在对象复制到其他区域的适当位置之前,一个区域可能有一个主节点和两个本地备用节点。在这种情况下,在删除对象时包括这些备用节点可以帮助做出正确的响应决策。默认值“auto”表示 Swift 将自动计算数量,默认值为 (replicas - len(local_primary_nodes))。此选项可以在每个策略的配置部分中覆盖。 |
allow_open_expired |
false |
如果为 true(默认值为 false),则已过期但尚未清除的对象可以通过在 GET、HEAD 和 POST 请求中设置“x-open-expired”标头为 true 来访问。 |