本章提供重要的 Ceph 集群设置及其说明的列表。设置按主题排序。
第 2.13 节 “使用自定义设置调整 ceph.conf
”介绍如何更改 Ceph 配置文件 ceph.conf
。但是,实际的集群行为并不是由 ceph.conf
文件的当前状态决定,而是由正在运行的 Ceph 守护进程的配置(存储在内存中)决定。
要查询单个 Ceph 守护进程以了解特定的配置设置,您可以在运行守护进程的节点上使用 admin socket。例如,以下命令可从名为 osd.0
的守护程序获取 osd_max_write_size
配置参数的值:
cephadm@adm >
ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok \
config get osd_max_write_size
{
"osd_max_write_size": "90"
}
您还可以在运行时更改守护进程的设置。请注意,此更改是暂时的,守护进程下次重启动时,更改将会丢失。例如,以下命令可针对集群中的所有 OSD 将 osd_max_write_size
参数更改为“50”:
cephadm@adm >
ceph tell osd.* injectargs --osd_max_write_size 50
injectargs
并非百分百可靠
有时,使用 injectargs
命令可能无法成功更改集群设置。如果您需要确保更改的参数生效,请在集群所有节点上的配置文件中进行更改,并重启动集群中的所有守护进程。
如果 tc_malloc
配置为内存分配器并且启用了 bluestore_cache_autotune
设置,可将 BlueStore 配置为自动调整其缓存大小。当前,此选项默认处于启用状态。BlueStore 会尝试将 OSD 堆内存使用率维持在 osd_memory_target
配置选项指定的目标大小之下。这是一种最优算法,而且缓存不会缩小到小于 osd_memory_cache_min
指定的大小。系统将根据优先级的层次选择缓存率。如果无法获取优先级信息,将使用 bluestore_cache_meta_ratio
和 bluestore_cache_kv_ratio
选项作为备选。
在遵循最小值的要求下,自动调整为不同 BlueStore 缓存指定的比率。默认值为 True
。
如果启用了 tc_malloc
和 bluestore_cache_autotune
,该选项将尝试在内存中映射此数量的字节。
此数量可能与进程的 RSS 内存使用率并不完全匹配。虽然进程映射的堆内存总量一般应该保持为接近此目标的数量,但并不能保证内核会真正回收已取消映射的内存。
如果启用了 tc_malloc
和 bluestore_cache_autotune
,该选项可设置用于缓存的最小内存量。
将此值设置得过小可能会导致严重的缓存抖动。
您可以使用 /etc/ceph/ceph.conf
文件中以下段落下的几个选项来控制对象网关行为:
[client.radosgw.INSTANCE_NAME]
如果未指定选项,将使用默认值。完整的对象网关选项列表如下:
配置 HTTP 前端。请以逗号分隔的列表指定多个前端。每个前端配置可能包含一组以空格分隔的选项,每个选项的格式均为“键=值”或“键”。默认值是
rgw_frontends = beast port=7480
为对象网关设置数据文件的位置。默认值为 /var/lib/ceph/radosgw/CLUSTER_ID
。
启用指定的 API。默认值为“s3, swift, swift_auth, admin All APIs”。
启用或禁用对象网关缓存。默认值为“true”。
对象网关缓存中的条目数。默认值为 10000。
域套接字的套接字路径。FastCgiExternalServer
使用此套接字。如果您未指定套接字路径,对象网关将不会作为外部服务器运行。您在此处指定的路径须与 rgw.conf
文件中指定的路径相同。
fcgi 的套接字积压数据。默认值为 1024。
对象网关实例的主机,可以是 IP 地址或主机名。默认值为 0.0.0.0
实例用于侦听请求的端口号。如果未指定,对象网关将运行外部 FastCGI。
所处理的域的 DNS 名称。
如果请求中未设置 SCRIPT_URI,则作为其备选值。
如果请求中未设置 REQUEST_URI,则作为其备选值。
启用 100-continue(如果可正常工作)。默认值为“true”。
远程地址参数。例如,包含远程地址的 HTTP 字段或 X-Forwarded-For 地址(如果反向代理可正常工作)。默认值为 REMOTE_ADDR。
活动线程的超时(以秒为单位)。默认值为 600。
对象网关进程停止前超时的时间(以秒为单位)。如果设置为 0(默认值),则表示禁用。
Beast 服务器的线程数。如果需要处理更多请求,请设置更高的值。默认为 100 个线程。
对象网关的 RADOS 集群句柄数。现在,每个对象网关工作线程都可以选择一个 RADOS 句柄并在其有效期内予以保留。未来版本中可能会弃用并移除此选项。默认值为 1。
不同 rgw 实例之间用于缓存同步的通知对象数量。默认值为 8。
对象网关放弃初始化前经过的秒数。默认值为 30。
MIME 类型的路径和位置。用于对象类型的 Swift 自动检测。默认值为 /etc/mime.types
。
垃圾回收在一个垃圾回收处理周期内可处理的最大对象数量。默认值为 32。
垃圾回收处理可删除和处理对象前需等待的最短时间。默认值为 2*3600。
两次连续的垃圾回收处理周期开始时所间隔的最长时间。默认值为 3600。
垃圾回收处理的周期时间。默认值为 3600。
create-obj
的备选成功状态响应。默认值为 0。
对象网关是否应使用请求主机名字段的 DNS CNAME 记录(如果主机名与对象网关 DNS 名称不同)。默认值为“false”。
对象网关对象的对象条带大小。默认值为 4 << 20。
添加可对实体(例如,用户、存储桶或对象)设置的一组新属性。使用 POST 方法放置或修改实体时,可通过 HTTP 报头字段设置这些额外的属性。如果设置了这些属性,当针对实体请求 GET/HEAD 时,它们将作为 HTTP 字段返回。默认值为“content_foo, content_bar, x-foo-bar”。
无条件退出前等待进程的秒数。默认值为 120。
单个对象请求的窗口大小(以字节为单位)。默认值为“16 << 20”。
发送到 Ceph 存储集群的单次 GET 操作的请求大小上限。默认值为 4 << 20。
为 US 区域存储桶启用宽松 S3 存储桶名称规则。默认值为“false”。
列出用户存储桶时,在一次操作中检索的存储桶数量上限。默认值为 1000。
表示存储桶索引对象的分片数量。设为 0(默认值)表示没有分片。不建议将此值设置得太大(例如 1000),因为这样会增加列出存储桶的成本。应在客户端或全局段落设置此变量,以便将其自动应用到 radosgw-admin
命令。
某些 curl
调用的超时时间(以毫秒为单位)。默认值为 1000。
启用在费时较长的复制操作期间输出对象进度的功能。默认值为“true”。
两次复制进度输出相隔的最小字节数。默认值为 1024*1024。
管理请求 URL 的入口点。默认值为“admin”。
为设置了 CONTENT_LENGTH 和 HTTP_CONTENT_LENGTH 的 FCGI 请求启用兼容性处理。默认值为“false”。
已缓存配额信息的可信时长(以秒为单位)。经过此超时时间后,将从集群重新提取配额信息。默认值为 600。
同步到集群前,存储桶配额信息的累计时长(以秒为单位)。在此期间,其他对象网关实例将不会看到与此实例上的操作相关的存储桶配额统计数据发生的更改。默认值为 180。
同步到集群前,用户配额信息的累计时长(以秒为单位)。在此期间,其他对象网关实例将不会看到与此实例上的操作相关的用户配额统计数据发生的更改。默认值为 180。
每个存储桶的默认对象数量上限。如果未指定其他配额,此上限将对新用户设置,对现有用户无效。应在客户端或全局段落设置此变量,以便将其自动应用到 radosgw-admin
命令。默认值为 -1。
每个存储桶的默认容量上限(以字节为单位)。如果未指定其他配额,此上限将对新用户设置,对现有用户无效。默认值为 -1。
用户的默认对象数量上限。这个数量包括该用户拥有的所有存储桶中的全部对象。如果未指定其他配额,此上限将对新用户设置,对现有用户无效。默认值为 -1。
如果未指定其他配额,用户配额大小上限值(以字节为单位)将对新用户设置,对现有用户无效。默认值为 -1。
发出请求时验证 SSL 证书。默认值为“true”。
将在单个操作中读取的数据块的最大大小。将值增至 4MB (4194304) 可以在处理大型对象时提高性能。默认值为 128kB (131072)。
网关实例所在区域的名称。如果未设置区域,可使用 radosgw-admin zone default
命令配置集群范围的默认值。
网关实例所在区域组的名称。如果未设置区域组,可使用 radosgw-admin zonegroup default
命令配置集群范围的默认值。
网关实例所在领域的名称。如果未设置领域,可使用 radosgw-admin realm default
命令配置集群范围的默认值。
如果领域中有其他要依据其同步的区域,则生成线程来处理数据和元数据的同步。默认值为“true”。
数据日志条目时段(以秒为单位)。默认值为 30。
要为数据更改日志保存的内存内条目数。默认值为 1000。
数据日志的对象名称前缀。默认值为“data_log”。
保存数据更改日志的分片(对象)的数量。默认值为 128。
元数据日志的最大分片数量。默认值为 64。
强制实施 Swift 访问控制列表 (ACL) 设置。默认值为“true”。
Swift 令牌过期时间(以秒为单位)。默认值为 24*3600。
Ceph Object Gateway Swift API 的 URL。
Swift StorageURL 中在“/v1”部分前面的 URL 前缀。此设置允许在同一主机上运行多个网关实例。出于兼容性考虑,请将此配置变量设为空,以便使用默认值“/swift”。使用显式前缀“/”会在根目录启动 StorageURL。
如果启用了 S3 API,将此选项设为“/”将不起作用。请注意,如果禁用 S3,将无法在多站点配置中部署对象网关!
未使用内部 Swift 身份验证时,用于验证 v1 身份验证令牌的默认 URL。
Swift 身份验证 URL 的入口点。默认值为“auth”。
启用 OpenStack Object Storage API 的对象版本控制。此选项可让客户端对应进行版本控制的容器设置 X-Versions-Location
属性。该属性指定存储已存档版本的容器的名称。出于访问控制验证(ACL 不在考虑范围之内)的原因,该属性必须由受版本控制的容器所属的同一用户所有。这些容器无法通过 S3 对象版本控制机制进行版本控制。默认值为“false”。
允许对象网关记录针对不存在的存储桶的请求。默认值为“false”。
对象名称的日志记录格式。有关格式说明符的详细信息,请参见 man 1 date
手册页。默认值为“%Y-%m-%d-%H-%i-%n”。
记录的对象名称是否包含 UTC 时间。如果设置为“false”(默认值),则会使用本地时间。
用于使用率日志记录的最大分片数量。默认值为 32。
用于单个用户的使用率日志记录的最大分片数量。默认值为 1。
启用记录每个成功的对象网关操作的功能。默认值为“false”。
启用使用率日志。默认值为“false”。
是否应将操作日志写入 Ceph 存储集群后端。默认值为“true”。
用于写入操作日志的 Unix 域套接字。
写入 Unix 域套接字的操作日志的数据积压大小上限。默认值为 5 << 20。
同步刷新前使用率日志中已合并的脏条目数量。默认值为 1024。
每隔“n”秒刷新待处理使用率日志数据。默认值为 30。
要包含在日志条目中的 HTTP 报头的逗号分隔列表。报头名称不区分大小写,使用完整报头名称格式,各单词间以下划线分隔。例如“http_x_forwarded_for”、“http_x_special_k”。
要记录的日志对象名称的日志记录格式。有关格式说明符的详细信息,请参见 man 1 date
手册页。默认值为“%Y-%m-%d-%i-%n”。
要记录的日志对象名称是否包含 UTC 时间。如果设置为“false”(默认值),则会使用本地时间。
Keystone 服务器的 URL。
应用于与 Keystone 服务器通讯的 OpenStack Identity API 的版本(2 或 3)。默认值为 2。
使用 OpenStack Identity API v3 时具有管理员权限的 OpenStack 域的名称。
使用 OpenStack Identity API v3 时具有管理员权限的 OpenStack 项目的名称。如果未设置,将使用 rgw keystone admin tenant
的值替代。
Keystone 管理员令牌(共享密钥)。在对象网关中,使用管理员令牌的身份验证的优先级高于使用管理员身份凭证的身份验证(选项 rgw keystone admin user
、rgw keystone admin password
、rgw keystone admin tenant
、rgw keystone admin project
和 rgw keystone admin domain
)。管理员令牌功能被视为已弃用。
使用 OpenStack Identity API v2 时具有管理员权限的 OpenStack 租户(服务租户)的名称。
使用 OpenStack Identity API v2 时具有管理员权限的 OpenStack 用户(服务用户)的名称。
使用 OpenStack Identity API v2 时 OpenStack 管理员用户的密码。
处理请求需要具有的角色。默认值为“Member, admin”。
每个 Keystone 令牌缓存中的条目数上限。默认值为 10000。
令牌撤消检查间隔的时间(以秒为单位)。默认值为 15*60。
向 Keystone 发出令牌请求时,验证 SSL 证书。默认值为“true”。
如果将参数 rgw dns name
添加到 ceph.conf
,请确保已配置 S3 客户端,以定向 rgw dns name
所指定端点的请求。
IPv4 和 IPv6 侦听端口号。您可以指定多个端口号:
port=80 port=8000 ssl_port=8080
默认值为 80。
侦听地址采用“地址[:端口]”格式,其中,地址为采用点分隔十进制数字格式的 IPv4 地址字符串,或是采用以方括号括住的十六进制表示格式的 IPv6 地址。指定将仅侦听 IPv6 的 IPv6 端点。endpoint
和 ssl_endpoint
的可选端口号分别默认为 80 和 443。您可以指定多个地址:
endpoint=[::1] endpoint=192.168.0.100:8000 ssl_endpoint=192.168.0.100:8080
此为可选设置,指定用于启用了 SSL 的端点的私用密钥文件路径。如果未指定,将使用 ssl_certificate
文件充当私用密钥。
如果指定该选项,套接字选项将针对连接禁用 Nagle 的算法。这表示将会尽快发送数据包,而不会等到发生全缓冲或超时才发送。
“1”会对所有套接字禁用 Nagle 的算法。
“0”会使 Nagle 的算法保持启用状态(默认值)。
/etc/ceph/ceph.conf
中的示例 Beast 配置 #rgw_frontends = beast port=8000 ssl_port=443 ssl_certificate=/etc/ssl/ssl.crt error_log_file=/var/log/radosgw/civetweb.error.log
侦听端口号。对启用了 SSL 的端口添加“s”后缀(例如,“443s”)。要绑定特定 IPv4 或 IPv6 地址,请使用“地址:端口”格式。您可以通过使用“+”联接多个端点或通过提供多个选项,来指定多个端点:
port=127.0.0.1:8000+443s port=8000 port=443s
默认值为 7480。
Civetweb 所生成以处理传入 HTTP 连接的线程数。此设置可有效限制前端可处理的并发连接数。
默认为 rgw_thread_pool_size
选项所指定的值。
Civetweb 在放弃前需等待更多传入数据的时长(以毫秒为单位)。
默认值为 30000 毫秒。
访问日志文件的路径。您可以指定完整路径,或当前工作目录的相对路径。如果未指定(默认设置),将不会记录访问。
错误日志文件的路径。您可以指定完整路径,或当前工作目录的相对路径。如果未指定(默认设置),将不会记录错误。
/etc/ceph/ceph.conf
中的示例 Civetweb 配置 #rgw_frontends = civetweb port=8000+443s request_timeout_ms=30000 error_log_file=/var/log/radosgw/civetweb.error.log
用于启用了 SSL 的端点的 SSL 证书文件路径。
要插入到所有请求的 URI 中的前缀字符串。例如,仅支持 Swift 的前端可能会提供一个“/swift”URI 前缀。