近来由于工作需要,为用户配置了几套Ceph对象存储,今天忙里偷闲:),将配置过程记录下来,分享于读者。
前言
安装前的准备
该文中所使用的Ceph版本为 Hammer 0.94.1;在配置rgw
前,需确保Ceph
集群已经准备就绪并能正常工作,radosgw
网关程序已经安装。
相关的名称解释
Region :可以理解为区域,是基于地理位置的逻辑划分;如:华南,华北之类,包含多个region
的Ceph
集群必须指定一个master region
,一个region
可以包含一个或者多个zone
Zone : 可以理解为可用区,它包含一组Ceph rgw
实例,一个region
必须指定一个master zone
用以处理客户端请求
部署拓扑
本文描述的多可用区部署拓扑如下:
Ceph
|
SH
/ \
SH-1 SH-2
| |
SH-SH-1 SH-SH-2
在Ceph
集群配置名为SH
的Region
,在Region
下配置名为SH-1
及SH-2
两个Zone
,并将SH-1
设置为master
, SH-2
备用,可以通过radosgw-agent
实现数据复制;每个Zone
各运行一个rgw
实例,分别为SH-SH-1
及SH-SH-2
rgw
组成要素
rgw
作为一个客户端,包含如下基本元素:
rgw
实例名, 本文中两个实例分别是SH-SH-1
,SH-SH-2
rgw
实例用户- 存储池
ceph.conf
中配置入口rgw
实例运行时数据目录- 前端配置文件
下文对各步骤一一说明,请继续往下看:
配置rgw
创建pools
Ceph rgw
需要使用多个pool
来存储相关的配置及用户数据。如果后续创建的rgw
用户具有相关权限,在rgw
实例启动的时候是会自动创建某些存储池的;但是,通常都会建议用户自行创建。为便于区别不同Zone
,在各存储池名前冠以.{region-name}-{zone-name}
前缀,SH-1
及SH-2
的各存储池如下:
.SH-SH-1.rgw.root
.SH-SH-1.rgw.control
.SH-SH-1.rgw.gc
.SH-SH-1.rgw.buckets
.SH-SH-1.rgw.buckets.index
.SH-SH-1.rgw.buckets.extra
.SH-SH-1.log
.SH-SH-1.intent-log
.SH-SH-1.usage
.SH-SH-1.users
.SH-SH-1.users.email
.SH-SH-1.users.swift
.SH-SH-1.users.uid
.SH-SH-2.rgw.root
.SH-SH-2.rgw.control
.SH-SH-2.rgw.gc
.SH-SH-2.rgw.buckets
.SH-SH-2.rgw.buckets.index
.SH-SH-2.rgw.buckets.extra
.SH-SH-2.log
.SH-SH-2.intent-log
.SH-SH-2.usage
.SH-SH-2.users
.SH-SH-2.users.email
.SH-SH-2.users.swift
.SH-SH-2.users.uid
创建存储池的命令如下:
ceph osd pool create {pool_name} 128 128
注意:不要忘记存储池名前的’.’,否则在启动
rgw
实例的时候会失败
创建rgw
用户及秘钥
创建秘钥文件
在
/etc/ceph/
目录下创建秘钥文件并设置执行权限
#ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring
#chmod +r /etc/ceph/ceph.client.radosgw.keyring
- 创建
rgw
用户及秘钥
为每个实例生成用户及秘钥,并存储到前述创建的秘钥文件中
#ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.SH-SH-1 --gen-key
#ceph-authtool /etc/ceph/ceph.client.rado