Ceph 对象网关配置参考
下列的选项可加入 Ceph 配置文件(一般是 ceph.conf )的 [client.radosgw.{instance-name}] 段下,这些选项可能 有默认值.如果你没有指定,自就会自动使用默认值。
rgwdata
描述: | 设置 Ceph 对象网关存储数据文件位置。 |
---|
类型: | String |
---|
默认值: | /var/lib/ceph/radosgw/$cluster-$id |
---|
rgwenableapis
描述: | 启用指定的 API 。 |
---|
类型: | String |
---|
默认值: | 所有 API : s3,swift,swift_auth,admin 。 |
---|
rgwcacheenabled
描述: | 是否启用 Ceph 对象网关缓存。 |
---|
类型: | Boolean |
---|
默认值: | true |
---|
rgwcachelrusize
描述: | Ceph 对象网关缓存的条目限制。 |
---|
类型: | Integer |
---|
默认值: | 10000 |
---|
rgwsocketpath
描述: | 域套接字的路径, FastCgiExternalServer 要使用此套接字。若未指定, Ceph 对象网关就不会以外部服务器的方式运行。这里的路径必须与 rgw.conf 里的路径相同。 |
---|
类型: | String |
---|
默认值: | N/A |
---|
rgwhost
描述: | Ceph 对象网关实例所在主机,可以是 IP 地址或者主机名。 |
---|
类型: | String |
---|
默认值: | 0.0.0.0 |
---|
rgwport
描述: | 对象网关实例接受请求的端口。若未指定, Ceph 对象网关将运行外部 FastCGI 。 |
---|
类型: | String |
---|
默认值: | None |
---|
rgwdnsname
描述: | 所服务域的 DNS 名称。请参考 region 配置里的 hostnames 选项。 |
---|
类型: | String |
---|
默认值: | None |
---|
rgwscripturi
描述: | 如果请求中没带 SCRIPT_URI 变量,这里的设置将作为默认值使用. |
---|
类型: | String |
---|
默认值: | None |
---|
rgwrequesturi
描述: | 如果请求中没带 REQUEST_URI 变量,这里的设置将作为默认值使用。 |
---|
类型: | String |
---|
默认值: | None |
---|
rgwprintcontinue
描述: | 如果可能的话,启用 100-continue 。 |
---|
类型: | Boolean |
---|
默认值: | true |
---|
rgwremoteaddrparam
描述: | 远端地址参数。例如, HTTP 字段或者 X-Forwarded-For 地址(如果用了反向代理)。 |
---|
类型: | String |
---|
默认值: | REMOTE_ADDR |
---|
rgwopthreadtimeout
描述: | 运行中线程的超时值。 |
---|
类型: | Integer |
---|
默认值: | 600 |
---|
rgwopthreadsuicidetimeout
描述: | Ceph 对象网关进程的超时自杀值( timeout )。设置为 0 时禁用。 |
---|
类型: | Integer |
---|
默认值: | 0 |
---|
rgwthreadpoolsize
描述: | 线程池的尺寸。 |
---|
类型: | Integer |
---|
默认值: | 100 threads. |
---|
rgwnumradoshandles
描述: | Ceph 对象网关的 RADOS 集群处理器数量。通过配置 RADOS 处理器数量可以使得各种类型的载荷都明显地提升性能,因为各个 RGW 工作线程在其短暂的活跃期内都可以分别挂靠一个 RADOS 处理器。 |
---|
类型: | Integer |
---|
默认值: | 1 |
---|
rgwnumcontroloids
描述: | 不同的 rgw 实例间用于缓存同步的通知对象数量。 |
---|
类型: | Integer |
---|
默认值: | 8 |
---|
rgwinittimeout
描述: | Ceph 对象网关放弃初始化前坚持的时间,秒。 |
---|
类型: | Integer |
---|
默认值: | 30 |
---|
rgwmimetypesfile
描述: | MIME 类型数据库文件的路径,Swift 自动探测对象类型时要用到。 |
---|
类型: | String |
---|
默认值: | /etc/mime.types |
---|
rgwgcmaxobjs
描述: | 垃圾回收进程在一个处理周期内可处理的最大对象数。 |
---|
类型: | Integer |
---|
默认值: | 32 |
---|
rgwgcobjminwait
描述: | 对象可被删除并由垃圾回收器处理前最少等待多长时间。 |
---|
类型: | Integer |
---|
默认值: | 2*3600 |
---|
rgwgcprocessormaxtime
描述: | 两个连续的垃圾回收周期起点的最大时间间隔。 |
---|
类型: | Integer |
---|
默认值: | 3600 |
---|
rgwgcprocessorperiod
描述: | 垃圾回收进程的运行周期。 |
---|
类型: | Integer |
---|
默认值: | 3600 |
---|
rgws3successcreateobjstatus
描述: | create-obj 的另一种成功状态响应。 |
---|
类型: | Integer |
---|
默认值: | 0 |
---|
rgwresolvecname
描述: | 如果主机名与 rgwdnsname 不同, rgw 是否应该用请求的 hostname 字段的 DNS CNAME 记录。 |
---|
类型: | Boolean |
---|
默认值: | false |
---|
rgwobjstripesize
描述: | Ceph 对象网关的对象条带尺寸。关于条带化请参考体系结构。 |
---|
类型: | Integer |
---|
默认值: | 4<<20 |
---|
rgwextendedhttpattrs
描述: | 为实体(用户、桶或对象)新增可设置的属性集。可以在上传实体时把这些额外属性设置在 HTTP 头的字段里、或者用 POST 方法修改;如果设置过,在此实体上执行 GET/HEAD 操作时这些属性就会以 HTTP 头的字段返回。 |
---|
类型: | String |
---|
默认值: | None |
---|
实例: | “content_foo, content_bar, x-foo-bar” |
---|
rgwexittimeoutsecs
描述: | 等待某一进程多长时间(秒)后无条件退出。 |
---|
类型: | Integer |
---|
默认值: | 120 |
---|
rgwgetobjwindowsize
描述: | 为单对象请求预留的窗口大小(字节)。 |
---|
类型: | Integer |
---|
默认值: | 16<<20 |
---|
rgwgetobjmaxreqsize
描述: | 向 Ceph 存储集群发起的一次 GET 请求的最大尺寸。 |
---|
类型: | Integer |
---|
默认值: | 4<<20 |
---|
rgwrelaxeds3bucketnames
描述: | 对 US region 的桶启用宽松的桶名规则。 |
---|
类型: | Boolean |
---|
默认值: | false |
---|
rgwlistbucketsmaxchunk
描述: | 列举用户桶时,每次检出的最大桶数。 |
---|
类型: | Integer |
---|
默认值: | 1000 |
---|
rgwoverridebucketindexmaxshards
描述: | 桶索引对象的分片数量, 0 表示没有分片。我们不建议把这个值设置得太大(比如大于 1000 ),因为这样会增加罗列桶时的开销。 |
---|
类型: | Integer |
---|
默认值: | 0 |
---|
rgwnumzoneopstateshards
描述: | 用于保存 region 间复制进度的最大消息片数。 |
---|
类型: | Integer |
---|
默认值: | 128 |
---|
rgwopstateratelimitsec
描述: | 各次上传后状态更新操作的最小间隔时间。 0 禁用此限速。 |
---|
类型: | Integer |
---|
默认值: | 30 |
---|
rgwcurlwaittimeoutms
描述: | 某些特定 curl 调用的超时值,毫秒。 |
---|
类型: | Integer |
---|
默认值: | 1000 |
---|
rgwcopyobjprogress
描述: | 长时间复制操作时允许输出对象进度。 |
---|
类型: | Boolean |
---|
默认值: | true |
---|
rgwcopyobjprogresseverybytes
描述: | 复制进度输出的粒度,字节数。 |
---|
类型: | Integer |
---|
默认值: | 1024*1024 |
---|
rgwadminentry
描述: | 管理 URL 请求的入口点。 |
---|
类型: | String |
---|
默认值: | admin |
---|
rgwcontentlengthcompat
描述: | 允许兼容设置了 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如果你得到了 failedtoreadregionmap 错误,先试试 sudoradosgw-adminregion-mapupdate 。### 获取单个 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 内使用多个域名了。可选配置。此列表会自动包含 rgwdnsname 配置。更改此配置后需重启所有 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.rgwzone
描述: | 网关例程所在的zone名称。 |
---|
类型: | String |
---|
默认值: | None |
---|
New in version v.67.
rgwregion
描述: | 网关例程所在的 region 名。 |
---|
类型: | String |
---|
默认值: | None |
---|
New in version v.67.
rgwdefaultregioninfooid
描述: | 用于保存默认 region 的 OID 。我们不建议更改此选项。 |
---|
类型: | String |
---|
默认值: | default.region |
---|
存储池
Ceph zone会映射一系列 Ceph 存储集群的存储池。
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.
rgwclusterrootpool
描述: | 为此实例存储 radosgw 元数据的存储池。从 v0.67 之后不再支持,可改用 rgwzonerootpool 。 |
---|
类型: | String |
---|
是否必需: | No |
---|
默认值: | .rgw.root |
---|
替代选项: | rgwzonerootpool |
---|
New in version v.67.
rgwregionrootpool
描述: | 用于存储此 region 所有相关信息的存储池。 |
---|
类型: | String |
---|
默认值: | .rgw.root |
---|
New in version v.67.
rgwzonerootpool
描述: | 用于存储此 zone 所有相关信息的存储池。 |
---|
类型: | String |
---|
默认值: | .rgw.root |
---|
Swift 选项
rgwenforceswiftacls
描述: | 强制使用 Swift 的访问控制列表( ACL )选项。 |
---|
类型: | Boolean |
---|
默认值: | true |
---|
rgwswifttokenexpiration
描述: | Swift 令牌过期时间,秒。 |
---|
类型: | Integer |
---|
默认值: | 24*3600 |
---|
rgwswifturl
描述: | Ceph 对象网关 Swift 接口的 URL 。 |
---|
类型: | String |
---|
默认值: | None |
---|
rgwswifturlprefix
rgwswiftauthurl
描述: | 验证 v1 版令牌的默认 URL (如果没用 Swift 内建认证)。 |
---|
类型: | String |
---|
默认值: | None |
---|
rgwswiftauthentry
描述: | Swift 认证 URL 的入口点。 |
---|
类型: | String |
---|
默认值: | auth |
---|
日志记录选项
rgwlognonexistentbucket
描述: | 让 Ceph 对象网关记录访问不存在的 bucket 的请求。 |
---|
类型: | Boolean |
---|
默认值: | false |
---|
rgwlogobjectname
描述: | 对象名的记录格式。关于格式说明见 date 。 |
---|
类型: | Date |
---|
默认值: | %Y-%m-%d-%H-%i-%n |
---|
rgwlogobjectnameutc
描述: | 记录的对象名是否需包含 UTC 时间,设置为 false 时将使用本地时间。 |
---|
类型: | Boolean |
---|
默认值: | false |
---|
rgwusagemaxshards
描述: | 使用率日志的最大可分片数量。 |
---|
类型: | Integer |
---|
默认值: | 32 |
---|
rgwusagemaxusershards
描述: | 单个用户使用率日志的最大可分片数量。 |
---|
类型: | Integer |
---|
默认值: | 1 |
---|
rgwenableopslog
描述: | 允许记录各次成功的 Ceph 对象网关操作。 |
---|
类型: | Boolean |
---|
默认值: | false |
---|
rgwenableusagelog
描述: | 允许记录使用率日志。 |
---|
类型: | Boolean |
---|
默认值: | false |
---|
rgwopslogrados
描述: | 操作日志是否应该写入 Ceph 存储集群后端。 |
---|
类型: | Boolean |
---|
默认值: | true |
---|
rgwopslogsocketpath
描述: | 用于写入操作日志的 Unix 域套接字。 |
---|
类型: | String |
---|
默认值: | None |
---|
rgwopslogdatabacklog
描述: | 最多积攒多少操作日志数据才写入 Unix 域套接字。 |
---|
类型: | Integer |
---|
默认值: | 5<<20 |
---|
rgwusagelogflushthreshold
描述: | 使用率日志合并过多少条目才刷回。 |
---|
类型: | Integer |
---|
默认值: | 1024 |
---|
rgwusagelogtickinterval
描述: | 每 n 秒执行一次使用率日志刷回。 |
---|
类型: | Integer |
---|
默认值: | 30 |
---|
rgwintentlogobjectname
描述: | 意图日志对象名的记录格式。格式的详细说明见 date 。 |
---|
类型: | Date |
---|
默认值: | %Y-%m-%d-%i-%n |
---|
rgwintentlogobjectnameutc
描述: | 意图日志对象名是否应包含 UTC 时间,设置为 false 时使用本地时间。 |
---|
类型: | Boolean |
---|
默认值: | false |
---|
rgwdatalogwindow
描述: | 数据日志窗口,秒。 |
---|
类型: | Integer |
---|
默认值: | 30 |
---|
rgwdatalogchangessize
描述: | 内存中保留的数据变更日志条数。 |
---|
类型: | Integer |
---|
默认值: | 1000 |
---|
rgwdatalognumshards
描述: | 用于保存数据变更日志的分片(对象)数量。 |
---|
类型: | Integer |
---|
默认值: | 128 |
---|
rgwdatalogobjprefix
描述: | 数据日志的对象名前缀。 |
---|
类型: | String |
---|
默认值: | data_log |
---|
rgwreplicalogobjprefix
描述: | 复制日志的对象名前缀。 |
---|
类型: | String |
---|
默认值: | replicalog |
---|
rgwmdlogmaxshards
描述: | 用于元数据日志的最大分片数。 |
---|
类型: | Integer |
---|
默认值: | 64 |
---|
Keystone 选项
rgwkeystoneurl
描述: | Keystone 服务器的 URL 。 |
---|
类型: | String |
---|
默认值: | None |
---|
rgwkeystoneadmintoken
描述: | Keystone 的管理令牌(共享密钥)。 |
---|
类型: | String |
---|
默认值: | None |
---|
rgwkeystoneacceptedroles
描述: | 要接受请求所需的角色。 |
---|
类型: | String |
---|
默认值: | Member,admin |
---|
rgwkeystonetokencachesize
描述: | 各 Keystone 令牌缓存的最大条数。 |
---|
类型: | Integer |
---|
默认值: | 10000 |
---|
rgwkeystonerevocationinterval
描述: | 令牌有效期查验的周期,秒。 |
---|
类型: | Integer |
---|
默认值: | 15*60 |
---|
rgwkeystoneverifyssl
描述: | 将 token 请求发送给 keystone 时验证 SSL 证书. |
---|
类型: | Boolean |
---|
默认值: | true |
---|