Ceph 对象网关配置参考
下列的选项可加入 Ceph 配置文件(一般是 ceph.conf )的 [client.radosgw.{instance-name}] 段下,这些选项可能 有默认值.如果你没有指定,自就会自动使用默认值。
rgw data
描述: | 设置 Ceph 对象网关存储数据文件位置。 |
---|---|
类型: | String |
默认值: | /var/lib/ceph/radosgw/$cluster-$id |
rgw enable apis
描述: | 启用指定的 API 。 |
---|---|
类型: | String |
默认值: | 所有 API : s3, swift, swift_auth, admin 。 |
rgw cache enabled
描述: | 是否启用 Ceph 对象网关缓存。 |
---|---|
类型: | Boolean |
默认值: | true |
rgw cache lru size
描述: | Ceph 对象网关缓存的条目限制。 |
---|---|
类型: | Integer |
默认值: | 10000 |
rgw socket path
描述: | 域套接字的路径, FastCgiExternalServer 要使用此套接字。若未指定, Ceph 对象网关就不会以外部服务器的方式运行。这里的路径必须与 rgw.conf 里的路径相同。 |
---|---|
类型: | String |
默认值: | N/A |
rgw host
描述: | Ceph 对象网关实例所在主机,可以是 IP 地址或者主机名。 |
---|---|
类型: | String |
默认值: | 0.0.0.0 |
rgw port
描述: | 对象网关实例接受请求的端口。若未指定, Ceph 对象网关将运行外部 FastCGI 。 |
---|---|
类型: | String |
默认值: | None |
rgw dns name
描述: | 所服务域的 DNS 名称。请参考 region 配置里的 hostnames 选项。 |
---|---|
类型: | String |
默认值: | None |
rgw script uri
描述: | 如果请求中没带 SCRIPT_URI 变量,这里的设置将作为默认值使用. |
---|---|
类型: | String |
默认值: | None |
rgw request uri
描述: | 如果请求中没带 REQUEST_URI 变量,这里的设置将作为默认值使用。 |
---|---|
类型: | String |
默认值: | None |
rgw print continue
描述: | 如果可能的话,启用 100-continue 。 |
---|---|
类型: | Boolean |
默认值: | true |
rgw remote addr param
描述: | 远端地址参数。例如, HTTP 字段或者 X-Forwarded-For 地址(如果用了反向代理)。 |
---|---|
类型: | String |
默认值: | REMOTE_ADDR |
rgw op thread timeout
描述: | 运行中线程的超时值。 |
---|---|
类型: | Integer |
默认值: | 600 |
rgw op thread suicide timeout
描述: | Ceph 对象网关进程的超时自杀值( timeout )。设置为 0 时禁用。 |
---|---|
类型: | Integer |
默认值: | 0 |
rgw thread pool size
描述: | 线程池的尺寸。 |
---|---|
类型: | Integer |
默认值: | 100 threads. |
rgw num rados handles
描述: | Ceph 对象网关的 RADOS 集群处理器数量。通过配置 RADOS 处理器数量可以使得各种类型的载荷都明显地提升性能,因为各个 RGW 工作线程在其短暂的活跃期内都可以分别挂靠一个 RADOS 处理器。 |
---|---|
类型: | Integer |
默认值: | 1 |
rgw num control oids
描述: | 不同的 rgw 实例间用于缓存同步的通知对象数量。 |
---|---|
类型: | Integer |
默认值: | 8 |
rgw init timeout
描述: | Ceph 对象网关放弃初始化前坚持的时间,秒。 |
---|---|
类型: | Integer |
默认值: | 30 |
rgw mime types file
描述: | MIME 类型数据库文件的路径,Swift 自动探测对象类型时要用到。 |
---|---|
类型: | String |
默认值: | /etc/mime.types |
rgw gc max objs
描述: | 垃圾回收进程在一个处理周期内可处理的最大对象数。 |
---|---|
类型: | Integer |
默认值: | 32 |
rgw gc obj min wait
描述: | 对象可被删除并由垃圾回收器处理前最少等待多长时间。 |
---|---|
类型: | Integer |
默认值: | 2 * 3600 |
rgw gc processor max time
描述: | 两个连续的垃圾回收周期起点的最大时间间隔。 |
---|---|
类型: | Integer |
默认值: | 3600 |
rgw gc processor period
描述: | 垃圾回收进程的运行周期。 |
---|---|
类型: | Integer |
默认值: | 3600 |
rgw s3 success create obj status
描述: | create-obj 的另一种成功状态响应。 |
---|---|
类型: | Integer |
默认值: | 0 |
rgw resolve cname
描述: | 如果主机名与 rgw dns name 不同, rgw 是否应该用请求的 hostname 字段的 DNS CNAME 记录。 |
---|---|
类型: | Boolean |
默认值: | false |
rgw obj stripe size
描述: | Ceph 对象网关的对象条带尺寸。关于条带化请参考体系结构。 |
---|---|
类型: | Integer |
默认值: | 4 << 20 |
rgw extended http attrs
描述: | 为实体(用户、桶或对象)新增可设置的属性集。可以在上传实体时把这些额外属性设置在 HTTP 头的字段里、或者用 POST 方法修改;如果设置过,在此实体上执行 GET/HEAD 操作时这些属性就会以 HTTP 头的字段返回。 |
---|---|
类型: | String |
默认值: | None |
实例: | “content_foo, content_bar, x-foo-bar” |
rgw exit timeout secs
描述: | 等待某一进程多长时间(秒)后无条件退出。 |
---|---|
类型: | Integer |
默认值: | 120 |
rgw get obj window size
描述: | 为单对象请求预留的窗口大小(字节)。 |
---|---|
类型: | Integer |
默认值: | 16 << 20 |
rgw get obj max req size
描述: | 向 Ceph 存储集群发起的一次 GET 请求的最大尺寸。 |
---|---|
类型: | Integer |
默认值: | 4 << 20 |
rgw relaxed s3 bucket names
描述: | 对 US region 的桶启用宽松的桶名规则。 |
---|---|
类型: | Boolean |
默认值: | false |
rgw list buckets max chunk
描述: | 列举用户桶时,每次检出的最大桶数。 |
---|---|
类型: | Integer |
默认值: | 1000 |
rgw override bucket index max shards
描述: | 桶索引对象的分片数量, 0 表示没有分片。我们不建议把这个值设置得太大(比如大于 1000 ),因为这样会增加罗列桶时的开销。 |
---|---|
类型: | Integer |
默认值: | 0 |
rgw num zone opstate shards
描述: | 用于保存 region 间复制进度的最大消息片数。 |
---|---|
类型: | Integer |
默认值: | 128 |
rgw opstate ratelimit sec
描述: | 各次上传后状态更新操作的最小间隔时间。 0 禁用此限速。 |
---|---|
类型: | Integer |
默认值: | 30 |
rgw curl wait timeout ms
描述: | 某些特定 curl 调用的超时值,毫秒。 |
---|---|
类型: | Integer |
默认值: | 1000 |
rgw copy obj progress
描述: | 长时间复制操作时允许输出对象进度。 |
---|---|
类型: | Boolean |
默认值: | true |
rgw copy obj progress every bytes
描述: | 复制进度输出的粒度,字节数。 |
---|---|
类型: | Integer |
默认值: | 1024 * 1024 |
rgw admin entry
描述: | 管理 URL 请求的入口点。 |
---|---|
类型: | String |
默认值: | admin |
rgw content length compat
描述: | 允许兼容设置了 CONTENT_LENGTH 和 HTTP_CONTENT_LENGTH 的 FCGI 请求。 |
---|---|
类型: | Boolean |
默认值: | false |
region (域组)
Ceph 从 v0.67 版开始,通过 region 概念支持 Ceph 对象网关联盟部署和统一的命名空间。 region 定义了位于一或多个域内的 Ceph 对象网关实例的地理位置。
region 的配置不同于一般配置过程,因为不是所有的配置都放在 Ceph 配置文件中。从 Ceph 0.67 版开始,你可以列出所有 region 、获取 region 配置以及设置 region 配置。
列出所有 region
Ceph 集群可包含一系列 region ,可用下列命令列出所有 region
sudo radosgw-admin regions list
radosgw-admin 命令会返回 JSON 格式的 region 列表。
{ "default_info": { "default_region": "default"}, "regions": [ "default"]}
获取 region-map
要获取各 region 的详细情况,可执行:
sudo radosgw-admin region-map get
Note
如果你得到了 failed to read region map 错误,先试试 sudo radosgw-admin region-map update 。
获取单个 region
要查看某 region 的配置,执行:
radosgw-admin region get [--rgw-region=<region>]
default 这个 region 的配置大致如此:
{"name": "default", "api_name": "", "is_master": "true", "endpoints": [], "hostnames": [], "master_zone": "", "zones": [ {"name": "default", "endpoints": [], "log_meta": "false", "log_data": "false"} ], "placement_targets": [ {"name": "default-placement", "tags": [] }], "default_placement": "default-placement"}
设置一个 region
定义 region 需创建一个 JSON 对象、并提供必需的参数:
- name: region 名字,必需。
- api_name: 此 region 的 API 名字,可选。
- is_master: 决定着此 region 是否为主 region ,必需。注:只能有一个主 region 。
- endpoints: region 内的所有结点列表。例如,你可以用多个域名指向同一 region 区,记得在斜杠前加反斜杠进行转义( \/ )。也可以给结点指定端口号( fqdn:port ),可选。
- hostnames: region 内所有主机名的列表。例如,这样你就可以在同一 region 内使用多个域名了。可选配置。此列表会自动包含 rgw dns name 配置。更改此配置后需重启所有 radosgw 守护进程。
- master_zone: region 的主域,可选。若未指定,则选择默认域。注:每个 region 只能有一个主域。
- zones: region 内所有域的列表。各个域都有名字(必需的)、一系列结点(可选的)、以及网关是否要记录元数据和数据操作(默认不记录)。
- placement_targets: 放置目标列表(可选)。每个放置目标都包含此放置目标的名字(必需)、还有一个标签列表(可选),这样只有带这些标签的用户可以使用此放置目标(即用户信息中的 placement_tags 字段)。
- default_placement: 对象索引及数据的默认放置目标,默认为 default-placement 。你可以在用户信息里给各用户设置一个用户级的默认放置目标。
要配置一个 region ,需创建一个包含必需字段的 JSON 对象,把它存入文件(如 region.json ),然后执行下列命令:
sudo radosgw-admin region set --infile region.json
其中 region.json 是你创建的 JSON 文件。
Important
默认 region default 的 is_master 字段值默认为 true 。如果你想新建一 region 并让它作为主 region ,那你必须把 default region 的 is_master 设置为 false ,或者干脆删除 default region 。
最后,更新 region map。
sudo radosgw-admin region-map update
配置 region map
配置 region map的过程包括创建含一或多个 region 的 JSON 对象,还有设置集群的主 region master_region 。 region map内的各 region 都由键/值对组成,其中 key 选项等价于单独配置 region 时的 name 选项, val 是包含单个 region 完整配置的 JSON 对象。
你可以只有一个 region ,其 is_master 设置为 true ,而且必须在 region map末尾设置为 master_region 。下面的 JSON 对象是默认 region map的实例。
{ "regions": [ { "key": "default", "val": { "name": "default", "api_name": "", "is_master": "true", "endpoints": [], "hostnames": [], "master_zone": "", "zones": [ { "name": "default", "endpoints": [], "log_meta": "false", "log_data": "false"}], "placement_targets": [ { "name": "default-placement", "tags": []}], "default_placement": "default-placement" } } ], "master_region": "default" }
要配置一个 region map,执行此命令:
sudo radosgw-admin region-map set --infile regionmap.json
其中 regionmap.json 是创建的 JSON 文件。确保你创建了 region map里所指的那些域。最后,更新此map。
sudo radosgw-admin regionmap update
Zones
从 Ceph v0.67 版起, Ceph 对象网关支持zone概念,它是一或多个 Ceph 对象网关实例组成的逻辑组。
zone的配置不同于典型配置过程,因为并非所有配置都位于 Ceph 配置文件内。从 0.67 版起,你可以列出所有zone、获取zone配置、设置zone配置。
列出所有zone
要列出某集群内的所有zone,执行:
sudo radosgw-admin zone list
获取单个zone
要获取某一zone的配置,执行:
sudo radosgw-admin zone get [--rgw-zone=<zone>]
default 这个默认zone的配置大致如此:
{ "domain_root": ".rgw", "control_pool": ".rgw.control", "gc_pool": ".rgw.gc", "log_pool": ".log", "intent_log_pool": ".intent-log", "usage_log_pool": ".usage", "user_keys_pool": ".users", "user_email_pool": ".users.email", "user_swift_pool": ".users.swift", "user_uid_pool": ".users.uid", "system_key": { "access_key": "", "secret_key": ""}, "placement_pools": [ { "key": "default-placement", "val": { "index_pool": ".rgw.buckets.index", "data_pool": ".rgw.buckets"} } ] }
配置zone
配置zone时需指定一系列的 Ceph 对象网关存储池。为保持一致性,我们建议用region名作为存储池名字的前缀。存储池配置见存储池。
要配置起一个zone,需创建包含存储池的 JSON 对象、并存入文件(如 zone.json );然后执行下列命令,把 {zone-name} 替换为zone名称:
sudo radosgw-admin zone set --rgw-zone={zone-name} --infile zone.json
其中, zone.json 是你创建的 JSON 文件。
region 和 zone 选项
你可以在 Ceph 配置文件中的各实例 [client.radosgw.{instance-name}] 段下设置下列选项。
New in version v.67.
rgw zone
描述: | 网关例程所在的zone名称。 |
---|---|
类型: | String |
默认值: | None |
New in version v.67.
rgw region
描述: | 网关例程所在的 region 名。 |
---|---|
类型: | String |
默认值: | None |
New in version v.67.
rgw default region info oid
描述: | 用于保存默认 region 的 OID 。我们不建议更改此选项。 |
---|---|
类型: | String |
默认值: | default.region |
存储池
Ceph zone会映射一系列 Ceph 存储集群的存储池。
手动创建存储池与自动生成的存储池对比
如果你给 Ceph 对象网关的用户 key 分配了写权限,此网关就有能力自动创建存储池。这样虽然便捷,但 Ceph 对象存储集群的 PG 数会是默认值(此值也许不太理想)或者 Ceph 配置文件中的自定义配置。如果你想让 Ceph 对象网关自动创建存储池,确保 PG 数的默认值要合理。详情见存储池配置,关于创建存储池见集群存储池。
Ceph 对象网关的默认 zone 的默认存储池有:
- .rgw
- .rgw.control
- .rgw.gc
- .log
- .intent-log
- .usage
- .users
- .users.email
- .users.swift
- .users.uid
你应该能够清晰地判断某个 zone 会怎样访问各存储池。你可以为每个 zone 创建一系列存储池,或者让多个 zone 共用同一系列的存储池。作为最佳实践,我们建议分别位于各 region 中的主 zone 和第二 zone 都要有各自的一系列存储池。为某个域创建存储池时,建议默认存储池名以 region 名和 zone 名作为前缀,例如:
- .region1-zone1.domain.rgw
- .region1-zone1.rgw.control
- .region1-zone1.rgw.gc
- .region1-zone1.log
- .region1-zone1.intent-log
- .region1-zone1.usage
- .region1-zone1.users
- .region1-zone1.users.email
- .region1-zone1.users.swift
- .region1-zone1.users.uid
Ceph 对象网关会把 bucket 索引( index_pool )和 bucket 数据( data_pool )存储到归置存储池,这些可以重叠——也就是你可以把索引和数据存入同一存储池。索引存储池的默认归置地是 .rgw.buckets.index ,数据存储池的默认归置地是 .rgw.buckets ,给 zone 指定存储池的方法见Zones。
Deprecated since version v.67.
rgw cluster root pool
描述: | 为此实例存储 radosgw 元数据的存储池。从 v0.67 之后不再支持,可改用 rgw zone root pool 。 |
---|---|
类型: | String |
是否必需: | No |
默认值: | .rgw.root |
替代选项: | rgw zone root pool |
New in version v.67.
rgw region root pool
描述: | 用于存储此 region 所有相关信息的存储池。 |
---|---|
类型: | String |
默认值: | .rgw.root |
New in version v.67.
rgw zone root pool
描述: | 用于存储此 zone 所有相关信息的存储池。 |
---|---|
类型: | String |
默认值: | .rgw.root |
Swift 选项
rgw enforce swift acls
描述: | 强制使用 Swift 的访问控制列表( ACL )选项。 |
---|---|
类型: | Boolean |
默认值: | true |
rgw swift token expiration
描述: | Swift 令牌过期时间,秒。 |
---|---|
类型: | Integer |
默认值: | 24 * 3600 |
rgw swift url
描述: | Ceph 对象网关 Swift 接口的 URL 。 |
---|---|
类型: | String |
默认值: | None |
rgw swift url prefix
描述: | Swift API 的 URL 前缀。 |
---|---|
默认值: | swift |
实例: | http://fqdn.com/swift |
rgw swift auth url
描述: | 验证 v1 版令牌的默认 URL (如果没用 Swift 内建认证)。 |
---|---|
类型: | String |
默认值: | None |
rgw swift auth entry
描述: | Swift 认证 URL 的入口点。 |
---|---|
类型: | String |
默认值: | auth |
日志记录选项
rgw log nonexistent bucket
描述: | 让 Ceph 对象网关记录访问不存在的 bucket 的请求。 |
---|---|
类型: | Boolean |
默认值: | false |
rgw log object name
描述: | 对象名的记录格式。关于格式说明见 date 。 |
---|---|
类型: | Date |
默认值: | %Y-%m-%d-%H-%i-%n |
rgw log object name utc
描述: | 记录的对象名是否需包含 UTC 时间,设置为 false 时将使用本地时间。 |
---|---|
类型: | Boolean |
默认值: | false |
rgw usage max shards
描述: | 使用率日志的最大可分片数量。 |
---|---|
类型: | Integer |
默认值: | 32 |
rgw usage max user shards
描述: | 单个用户使用率日志的最大可分片数量。 |
---|---|
类型: | Integer |
默认值: | 1 |
rgw enable ops log
描述: | 允许记录各次成功的 Ceph 对象网关操作。 |
---|---|
类型: | Boolean |
默认值: | false |
rgw enable usage log
描述: | 允许记录使用率日志。 |
---|---|
类型: | Boolean |
默认值: | false |
rgw ops log rados
描述: | 操作日志是否应该写入 Ceph 存储集群后端。 |
---|---|
类型: | Boolean |
默认值: | true |
rgw ops log socket path
描述: | 用于写入操作日志的 Unix 域套接字。 |
---|---|
类型: | String |
默认值: | None |
rgw ops log data backlog
描述: | 最多积攒多少操作日志数据才写入 Unix 域套接字。 |
---|---|
类型: | Integer |
默认值: | 5 << 20 |
rgw usage log flush threshold
描述: | 使用率日志合并过多少条目才刷回。 |
---|---|
类型: | Integer |
默认值: | 1024 |
rgw usage log tick interval
描述: | 每 n 秒执行一次使用率日志刷回。 |
---|---|
类型: | Integer |
默认值: | 30 |
rgw intent log object name
描述: | 意图日志对象名的记录格式。格式的详细说明见 date 。 |
---|---|
类型: | Date |
默认值: | %Y-%m-%d-%i-%n |
rgw intent log object name utc
描述: | 意图日志对象名是否应包含 UTC 时间,设置为 false 时使用本地时间。 |
---|---|
类型: | Boolean |
默认值: | false |
rgw data log window
描述: | 数据日志窗口,秒。 |
---|---|
类型: | Integer |
默认值: | 30 |
rgw data log changes size
描述: | 内存中保留的数据变更日志条数。 |
---|---|
类型: | Integer |
默认值: | 1000 |
rgw data log num shards
描述: | 用于保存数据变更日志的分片(对象)数量。 |
---|---|
类型: | Integer |
默认值: | 128 |
rgw data log obj prefix
描述: | 数据日志的对象名前缀。 |
---|---|
类型: | String |
默认值: | data_log |
rgw replica log obj prefix
描述: | 复制日志的对象名前缀。 |
---|---|
类型: | String |
默认值: | replica log |
rgw md log max shards
描述: | 用于元数据日志的最大分片数。 |
---|---|
类型: | Integer |
默认值: | 64 |
Keystone 选项
rgw keystone url
描述: | Keystone 服务器的 URL 。 |
---|---|
类型: | String |
默认值: | None |
rgw keystone admin token
描述: | Keystone 的管理令牌(共享密钥)。 |
---|---|
类型: | String |
默认值: | None |
rgw keystone accepted roles
描述: | 要接受请求所需的角色。 |
---|---|
类型: | String |
默认值: | Member, admin |
rgw keystone token cache size
描述: | 各 Keystone 令牌缓存的最大条数。 |
---|---|
类型: | Integer |
默认值: | 10000 |
rgw keystone revocation interval
描述: | 令牌有效期查验的周期,秒。 |
---|---|
类型: | Integer |
默认值: | 15 * 60 |
rgw keystone verify ssl
描述: | 将 token 请求发送给 keystone 时验证 SSL 证书. |
---|---|
类型: | Boolean |
默认值: | true |