适用于 SUSE Enterprise Storage 6

16 Ceph 集群配置

本章提供重要的 Ceph 集群设置及其说明的列表。设置按主题排序。

16.1 运行时配置

第 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 命令可能无法成功更改集群设置。如果您需要确保更改的参数生效,请在集群所有节点上的配置文件中进行更改,并重启动集群中的所有守护进程。

16.2 Ceph OSD 和 BlueStore

16.2.1 自动调整缓存大小

如果 tc_malloc 配置为内存分配器并且启用了 bluestore_cache_autotune 设置,可将 BlueStore 配置为自动调整其缓存大小。当前,此选项默认处于启用状态。BlueStore 会尝试将 OSD 堆内存使用率维持在 osd_memory_target 配置选项指定的目标大小之下。这是一种最优算法,而且缓存不会缩小到小于 osd_memory_cache_min 指定的大小。系统将根据优先级的层次选择缓存率。如果无法获取优先级信息,将使用 bluestore_cache_meta_ratiobluestore_cache_kv_ratio 选项作为备选。

bluestore_cache_autotune

在遵循最小值的要求下,自动调整为不同 BlueStore 缓存指定的比率。默认值为 True

osd_memory_target

如果启用了 tc_mallocbluestore_cache_autotune,该选项将尝试在内存中映射此数量的字节。

注意
注意

此数量可能与进程的 RSS 内存使用率并不完全匹配。虽然进程映射的堆内存总量一般应该保持为接近此目标的数量,但并不能保证内核会真正回收已取消映射的内存。

osd_memory_cache_min

如果启用了 tc_mallocbluestore_cache_autotune,该选项可设置用于缓存的最小内存量。

注意
注意

将此值设置得过小可能会导致严重的缓存抖动。

16.3 Ceph 对象网关

您可以使用 /etc/ceph/ceph.conf 文件中以下段落下的几个选项来控制对象网关行为:

[client.radosgw.INSTANCE_NAME]

如果未指定选项,将使用默认值。完整的对象网关选项列表如下:

16.3.1 一般设置

rgw_frontends

配置 HTTP 前端。请以逗号分隔的列表指定多个前端。每个前端配置可能包含一组以空格分隔的选项,每个选项的格式均为“键=值”或“键”。默认值是

rgw_frontends = beast port=7480
rgw_data

为对象网关设置数据文件的位置。默认值为 /var/lib/ceph/radosgw/CLUSTER_ID

rgw_enable_apis

启用指定的 API。默认值为“s3, swift, swift_auth, admin All APIs”。

rgw_cache_enabled

启用或禁用对象网关缓存。默认值为“true”。

rgw_cache_lru_size

对象网关缓存中的条目数。默认值为 10000。

rgw_socket_path

域套接字的套接字路径。FastCgiExternalServer 使用此套接字。如果您未指定套接字路径,对象网关将不会作为外部服务器运行。您在此处指定的路径须与 rgw.conf 文件中指定的路径相同。

rgw_fcgi_socket_backlog

fcgi 的套接字积压数据。默认值为 1024。

rgw_host

对象网关实例的主机,可以是 IP 地址或主机名。默认值为 0.0.0.0

rgw_port

实例用于侦听请求的端口号。如果未指定,对象网关将运行外部 FastCGI。

rgw_dns_name

所处理的域的 DNS 名称。

rgw_script_uri

如果请求中未设置 SCRIPT_URI,则作为其备选值。

rgw_request_uri

如果请求中未设置 REQUEST_URI,则作为其备选值。

rgw_print_continue

启用 100-continue(如果可正常工作)。默认值为“true”。

rgw_remote_addr_param

远程地址参数。例如,包含远程地址的 HTTP 字段或 X-Forwarded-For 地址(如果反向代理可正常工作)。默认值为 REMOTE_ADDR。

rgw_op_thread_timeout

活动线程的超时(以秒为单位)。默认值为 600。

rgw_op_thread_suicide_timeout

对象网关进程停止前超时的时间(以秒为单位)。如果设置为 0(默认值),则表示禁用。

rgw_thread_pool_size

Beast 服务器的线程数。如果需要处理更多请求,请设置更高的值。默认为 100 个线程。

rgw_num_rados_handles

对象网关的 RADOS 集群句柄数。现在,每个对象网关工作线程都可以选择一个 RADOS 句柄并在其有效期内予以保留。未来版本中可能会弃用并移除此选项。默认值为 1。

rgw_num_control_oids

不同 rgw 实例之间用于缓存同步的通知对象数量。默认值为 8。

rgw_init_timeout

对象网关放弃初始化前经过的秒数。默认值为 30。

rgw_mime_types_file

MIME 类型的路径和位置。用于对象类型的 Swift 自动检测。默认值为 /etc/mime.types

rgw_gc_max_objs

垃圾回收在一个垃圾回收处理周期内可处理的最大对象数量。默认值为 32。

rgw_gc_obj_min_wait

垃圾回收处理可删除和处理对象前需等待的最短时间。默认值为 2*3600。

rgw_gc_processor_max_time

两次连续的垃圾回收处理周期开始时所间隔的最长时间。默认值为 3600。

rgw_gc_processor_period

垃圾回收处理的周期时间。默认值为 3600。

rgw_s3_success_create_obj_status

create-obj 的备选成功状态响应。默认值为 0。

rgw_resolve_cname

对象网关是否应使用请求主机名字段的 DNS CNAME 记录(如果主机名与对象网关 DNS 名称不同)。默认值为“false”。

rgw_obj_stripe_size

对象网关对象的对象条带大小。默认值为 4 << 20。

rgw_extended_http_attrs

添加可对实体(例如,用户、存储桶或对象)设置的一组新属性。使用 POST 方法放置或修改实体时,可通过 HTTP 报头字段设置这些额外的属性。如果设置了这些属性,当针对实体请求 GET/HEAD 时,它们将作为 HTTP 字段返回。默认值为“content_foo, content_bar, x-foo-bar”。

rgw_exit_timeout_secs

无条件退出前等待进程的秒数。默认值为 120。

rgw_get_obj_window_size

单个对象请求的窗口大小(以字节为单位)。默认值为“16 << 20”。

rgw_get_obj_max_req_size

发送到 Ceph 存储集群的单次 GET 操作的请求大小上限。默认值为 4 << 20。

rgw_relaxed_s3_bucket_names

为 US 区域存储桶启用宽松 S3 存储桶名称规则。默认值为“false”。

rgw_list_buckets_max_chunk

列出用户存储桶时,在一次操作中检索的存储桶数量上限。默认值为 1000。

rgw_override_bucket_index_max_shards

表示存储桶索引对象的分片数量。设为 0(默认值)表示没有分片。不建议将此值设置得太大(例如 1000),因为这样会增加列出存储桶的成本。应在客户端或全局段落设置此变量,以便将其自动应用到 radosgw-admin 命令。

rgw_curl_wait_timeout_ms

某些 curl 调用的超时时间(以毫秒为单位)。默认值为 1000。

rgw_copy_obj_progress

启用在费时较长的复制操作期间输出对象进度的功能。默认值为“true”。

rgw_copy_obj_progress_every_bytes

两次复制进度输出相隔的最小字节数。默认值为 1024*1024。

rgw_admin_entry

管理请求 URL 的入口点。默认值为“admin”。

rgw_content_length_compat

为设置了 CONTENT_LENGTH 和 HTTP_CONTENT_LENGTH 的 FCGI 请求启用兼容性处理。默认值为“false”。

rgw_bucket_quota_ttl

已缓存配额信息的可信时长(以秒为单位)。经过此超时时间后,将从集群重新提取配额信息。默认值为 600。

rgw_user_quota_bucket_sync_interval

同步到集群前,存储桶配额信息的累计时长(以秒为单位)。在此期间,其他对象网关实例将不会看到与此实例上的操作相关的存储桶配额统计数据发生的更改。默认值为 180。

rgw_user_quota_sync_interval

同步到集群前,用户配额信息的累计时长(以秒为单位)。在此期间,其他对象网关实例将不会看到与此实例上的操作相关的用户配额统计数据发生的更改。默认值为 180。

rgw_bucket_default_quota_max_objects

每个存储桶的默认对象数量上限。如果未指定其他配额,此上限将对新用户设置,对现有用户无效。应在客户端或全局段落设置此变量,以便将其自动应用到 radosgw-admin 命令。默认值为 -1。

rgw_bucket_default_quota_max_size

每个存储桶的默认容量上限(以字节为单位)。如果未指定其他配额,此上限将对新用户设置,对现有用户无效。默认值为 -1。

rgw_user_default_quota_max_objects

用户的默认对象数量上限。这个数量包括该用户拥有的所有存储桶中的全部对象。如果未指定其他配额,此上限将对新用户设置,对现有用户无效。默认值为 -1。

rgw_user_default_quota_max_size

如果未指定其他配额,用户配额大小上限值(以字节为单位)将对新用户设置,对现有用户无效。默认值为 -1。

rgw_verify_ssl

发出请求时验证 SSL 证书。默认值为“true”。

rgw_max_chunk_size

将在单个操作中读取的数据块的最大大小。将值增至 4MB (4194304) 可以在处理大型对象时提高性能。默认值为 128kB (131072)。

多站点设置
rgw_zone

网关实例所在区域的名称。如果未设置区域,可使用 radosgw-admin zone default 命令配置集群范围的默认值。

rgw_zonegroup

网关实例所在区域组的名称。如果未设置区域组,可使用 radosgw-admin zonegroup default 命令配置集群范围的默认值。

rgw_realm

网关实例所在领域的名称。如果未设置领域,可使用 radosgw-admin realm default 命令配置集群范围的默认值。

rgw_run_sync_thread

如果领域中有其他要依据其同步的区域,则生成线程来处理数据和元数据的同步。默认值为“true”。

rgw_data_log_window

数据日志条目时段(以秒为单位)。默认值为 30。

rgw_data_log_changes_size

要为数据更改日志保存的内存内条目数。默认值为 1000。

rgw_data_log_obj_prefix

数据日志的对象名称前缀。默认值为“data_log”。

rgw_data_log_num_shards

保存数据更改日志的分片(对象)的数量。默认值为 128。

rgw_md_log_max_shards

元数据日志的最大分片数量。默认值为 64。

Swift 设置
rgw_enforce_swift_acls

强制实施 Swift 访问控制列表 (ACL) 设置。默认值为“true”。

rgw_swift_token_expiration

Swift 令牌过期时间(以秒为单位)。默认值为 24*3600。

rgw_swift_url

Ceph Object Gateway Swift API 的 URL。

rgw_swift_url_prefix

Swift StorageURL 中在“/v1”部分前面的 URL 前缀。此设置允许在同一主机上运行多个网关实例。出于兼容性考虑,请将此配置变量设为空,以便使用默认值“/swift”。使用显式前缀“/”会在根目录启动 StorageURL。

警告
警告

如果启用了 S3 API,将此选项设为“/”将不起作用。请注意,如果禁用 S3,将无法在多站点配置中部署对象网关!

rgw_swift_auth_url

未使用内部 Swift 身份验证时,用于验证 v1 身份验证令牌的默认 URL。

rgw_swift_auth_entry

Swift 身份验证 URL 的入口点。默认值为“auth”。

rgw_swift_versioning_enabled

启用 OpenStack Object Storage API 的对象版本控制。此选项可让客户端对应进行版本控制的容器设置 X-Versions-Location 属性。该属性指定存储已存档版本的容器的名称。出于访问控制验证(ACL 不在考虑范围之内)的原因,该属性必须由受版本控制的容器所属的同一用户所有。这些容器无法通过 S3 对象版本控制机制进行版本控制。默认值为“false”。

日志记录设置
rgw_log_nonexistent_bucket

允许对象网关记录针对不存在的存储桶的请求。默认值为“false”。

rgw_log_object_name

对象名称的日志记录格式。有关格式说明符的详细信息,请参见 man 1 date 手册页。默认值为“%Y-%m-%d-%H-%i-%n”。

rgw_log_object_name_utc

记录的对象名称是否包含 UTC 时间。如果设置为“false”(默认值),则会使用本地时间。

rgw_usage_max_shards

用于使用率日志记录的最大分片数量。默认值为 32。

rgw_usage_max_user_shards

用于单个用户的使用率日志记录的最大分片数量。默认值为 1。

rgw_enable_ops_log

启用记录每个成功的对象网关操作的功能。默认值为“false”。

rgw_enable_usage_log

启用使用率日志。默认值为“false”。

rgw_ops_log_rados

是否应将操作日志写入 Ceph 存储集群后端。默认值为“true”。

rgw_ops_log_socket_path

用于写入操作日志的 Unix 域套接字。

rgw_ops_log_data_backlog

写入 Unix 域套接字的操作日志的数据积压大小上限。默认值为 5 << 20。

rgw_usage_log_flush_threshold

同步刷新前使用率日志中已合并的脏条目数量。默认值为 1024。

rgw_usage_log_tick_interval

每隔“n”秒刷新待处理使用率日志数据。默认值为 30。

rgw_log_http_headers

要包含在日志条目中的 HTTP 报头的逗号分隔列表。报头名称不区分大小写,使用完整报头名称格式,各单词间以下划线分隔。例如“http_x_forwarded_for”、“http_x_special_k”。

rgw_intent_log_object_name

要记录的日志对象名称的日志记录格式。有关格式说明符的详细信息,请参见 man 1 date 手册页。默认值为“%Y-%m-%d-%i-%n”。

rgw_intent_log_object_name_utc

要记录的日志对象名称是否包含 UTC 时间。如果设置为“false”(默认值),则会使用本地时间。

Keystone 设置
rgw_keystone_url

Keystone 服务器的 URL。

rgw_keystone_api_version

应用于与 Keystone 服务器通讯的 OpenStack Identity API 的版本(2 或 3)。默认值为 2。

rgw_keystone_admin_domain

使用 OpenStack Identity API v3 时具有管理员权限的 OpenStack 域的名称。

rgw_keystone_admin_project

使用 OpenStack Identity API v3 时具有管理员权限的 OpenStack 项目的名称。如果未设置,将使用 rgw keystone admin tenant 的值替代。

rgw_keystone_admin_token

Keystone 管理员令牌(共享密钥)。在对象网关中,使用管理员令牌的身份验证的优先级高于使用管理员身份凭证的身份验证(选项 rgw keystone admin userrgw keystone admin passwordrgw keystone admin tenantrgw keystone admin projectrgw keystone admin domain)。管理员令牌功能被视为已弃用。

rgw_keystone_admin_tenant

使用 OpenStack Identity API v2 时具有管理员权限的 OpenStack 租户(服务租户)的名称。

rgw_keystone_admin_user

使用 OpenStack Identity API v2 时具有管理员权限的 OpenStack 用户(服务用户)的名称。

rgw_keystone_admin_password

使用 OpenStack Identity API v2 时 OpenStack 管理员用户的密码。

rgw_keystone_accepted_roles

处理请求需要具有的角色。默认值为“Member, admin”。

rgw_keystone_token_cache_size

每个 Keystone 令牌缓存中的条目数上限。默认值为 10000。

rgw_keystone_revocation_interval

令牌撤消检查间隔的时间(以秒为单位)。默认值为 15*60。

rgw_keystone_verify_ssl

向 Keystone 发出令牌请求时,验证 SSL 证书。默认值为“true”。

16.3.1.1 补充说明

rgw_dns_name

如果将参数 rgw dns name 添加到 ceph.conf,请确保已配置 S3 客户端,以定向 rgw dns name 所指定端点的请求。

16.3.2 HTTP 前端

16.3.2.1 Beast

port、ssl_port

IPv4 和 IPv6 侦听端口号。您可以指定多个端口号:

port=80 port=8000 ssl_port=8080

默认值为 80。

endpoint、ssl_endpoint

侦听地址采用“地址[:端口]”格式,其中,地址为采用点分隔十进制数字格式的 IPv4 地址字符串,或是采用以方括号括住的十六进制表示格式的 IPv6 地址。指定将仅侦听 IPv6 的 IPv6 端点。endpointssl_endpoint 的可选端口号分别默认为 80 和 443。您可以指定多个地址:

endpoint=[::1] endpoint=192.168.0.100:8000 ssl_endpoint=192.168.0.100:8080
ssl_private_key

此为可选设置,指定用于启用了 SSL 的端点的私用密钥文件路径。如果未指定,将使用 ssl_certificate 文件充当私用密钥。

tcp_nodelay

如果指定该选项,套接字选项将针对连接禁用 Nagle 的算法。这表示将会尽快发送数据包,而不会等到发生全缓冲或超时才发送。

“1”会对所有套接字禁用 Nagle 的算法。

“0”会使 Nagle 的算法保持启用状态(默认值)。

例 16.1︰ /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

16.3.2.2 CivetWeb

port

侦听端口号。对启用了 SSL 的端口添加“s”后缀(例如,“443s”)。要绑定特定 IPv4 或 IPv6 地址,请使用“地址:端口”格式。您可以通过使用“+”联接多个端点或通过提供多个选项,来指定多个端点:

port=127.0.0.1:8000+443s
port=8000 port=443s

默认值为 7480。

num_threads

Civetweb 所生成以处理传入 HTTP 连接的线程数。此设置可有效限制前端可处理的并发连接数。

默认为 rgw_thread_pool_size 选项所指定的值。

request_timeout_ms

Civetweb 在放弃前需等待更多传入数据的时长(以毫秒为单位)。

默认值为 30000 毫秒。

access_log_file

访问日志文件的路径。您可以指定完整路径,或当前工作目录的相对路径。如果未指定(默认设置),将不会记录访问。

error_log_ file

错误日志文件的路径。您可以指定完整路径,或当前工作目录的相对路径。如果未指定(默认设置),将不会记录错误。

例 16.2︰ /etc/ceph/ceph.conf 中的示例 Civetweb 配置
rgw_frontends = civetweb port=8000+443s request_timeout_ms=30000 error_log_file=/var/log/radosgw/civetweb.error.log

16.3.2.3 通用选项

ssl_certificate

用于启用了 SSL 的端点的 SSL 证书文件路径。

prefix

要插入到所有请求的 URI 中的前缀字符串。例如,仅支持 Swift 的前端可能会提供一个“/swift”URI 前缀。

打印此页