1、启动对象存储接口RGW
RGW并非必须的接口,仅在需要用到与S3和Swift兼容的RESTful接口时才需要部署RGW实例,
- 把mon2和mon3部署为rgw主机:
部署完成后会在rgw节点上启动radosgw进程,同时可以使用以下命令进行重启]$ ceph-deploy rgw create ceph-mon1 ceph-mon2 ceph-mon3
默认情况下,RGW实例监听于TCP协议的7480端口,如需修改,可以通过在运行RGW的节点上编辑其主配置文件ceph.conf进行修改:]$ sudo systemctl start ceph-radosgw@rgw.ceph-mon2
RGW会在RADOS集群上创建以下存储池[client]rgw_frontends = "civetweb port=8080"
RGW提供的是REST接口,客户端通过http与其进行交互,完成数据的增删改查等管理操作。]$ ceph osd pool ls.rgw.rootdefault.rgw.controldefault.rgw.metadefault.rgw.log
2、修改对象存储使用纠删码存储池
Ceph使用纠删码将object划分为K个数据块,并按照一定的方法计算出M个编码块,通过PG映射到OSD上。
我们集群有9个OSD部署在3个节点,纠删码配置K+M为4+2,可以容忍最多M个OSD出现故障。设置故障域为host,调整crush rule,每个对象存储时选择3个host,再在每个host上选择两个OSD。2.1、创建纠删码配置erasure-code-profile
在生产环境使用了Intel CPU的服务器上推荐纠删码使用 ISA-L库,使用方式为plugin=isa。 ```bash ]$ ceph osd erasure-code-profile set rgw_ec_profile k=4 m=2 crush-root=default plugin=isa crush-failure-domain=host ]$ ceph osd erasure-code-profile get rgw_ec_profile crush-device-class= crush-failure-domain=host crush-root=default k=4 m=2 plugin=isa technique=reed_sol_van
]$ ceph osd erasure-code-profile ls # 列出纠删码erasure-code-profile配置 default rgw_ec_profile
<a name="GXzS1"></a>#### 2.2、创建crush rule```bash]$ ceph osd crush rule create-erasure rgw_ec_rule rgw_ec_profile]$ ceph osd crush rule dump{"rule_id": 2,"rule_name": "rgw_ec_rule","ruleset": 2,"type": 3,"min_size": 3,"max_size": 6,"steps": [{"op": "set_chooseleaf_tries","num": 5},{"op": "set_choose_tries","num": 100},{"op": "take","item": -13,"item_name": "default"},{"op": "chooseleaf_indep","num": 0,"type": "host"},{"op": "emit"}]}
2.3、调整crush rule,选择host和osd规则
# 导出crush rule
]$ ceph osd getcrushmap -o crushmap
]$ crushtool -d crushmap -o crushmap.txt
# 修改crush rule
]$ vim crushmap.txt
rule rgw_ec_rule {
id 1
type erasure
min_size 3
max_size 6
step set_chooseleaf_tries 5
step set_choose_tries 100
step take default
step choose indep 3 type host # 选择3个host
step choose indep 2 type osd # 再选在2个osd
step emit
}
# 将crushrule导入集群
]$ crushtool -c crushmap.txt -o crushmap
]$ ceph osd setcrushmap -i crushmap
2.4、创建rgw数据存储池使用rgw_ec_profile和rgw_ec_rule
]$ ceph osd pool create default.rgw.buckets.data 128 128 erasure rgw_ec_profile rgw_ec_rule
pool 'default.rgw.buckets.data' created
2.5、修改rgw数据存储池为纠删码池
如果集群中还没有数据,则默认没有default.rgw.buckets.data存储池,直接将创建的存储池启用在rgw即可
]$ ceph osd pool application enable default.rgw.buckets.data rgw enabled application 'rgw' on pool 'default.rgw.buckets.data'如果已经存在default.rgw.buckets.data存储池,但未数据,则停止rgw,把默认的default.rgw.buckets.data存储池删掉,再创建新的default.rgw.buckets.data存储池,然后启用即可。 ```bash ]$ ceph df RAW STORAGE: CLASS SIZE AVAIL USED RAW USED %RAW USED ssd 8.2 TiB 8.2 TiB 69 MiB 9.1 GiB 0.11 TOTAL 8.2 TiB 8.2 TiB 69 MiB 9.1 GiB 0.11
POOLS: POOL ID PGS STORED OBJECTS USED %USED MAX AVAIL .rgw.root 1 32 1.2 KiB 4 768 KiB 0 2.6 TiB default.rgw.control 2 32 0 B 8 0 B 0 2.6 TiB default.rgw.meta 3 32 0 B 0 0 B 0 2.6 TiB default.rgw.log 4 32 0 B 175 0 B 0 2.6 TiB default.rgw.buckets.data 5 128 0 B 0 0 B 0 5.2 TiB # 使用纠删码池可用空间为5.2T
<a name="j9vCE"></a>
#### 2.6、修改存储池min_size
默认创建的存储池size是K+M=6,min_szie默认为5,当存储池当前size小于min_size时,pg会出现incomplete状态,因此调整min_size为4,可以容忍2个osd节点故障
```bash
# 修改前
pool 5 'default.rgw.buckets.data' erasure size 6 min_size 5 crush_rule 1 object_hash rjenkins pg_num 128 pgp_num 128 autoscale_mode warn last_change 59 flags hashpspool stripe_width 16384 application rgw
# 修改后
]$ ceph osd pool set default.rgw.buckets.data min_size 4
]$ ceph osd pool ls detail |grep 'default.rgw.buckets.data'
pool 5 'default.rgw.buckets.data' erasure size 6 min_size 4 crush_rule 1 object_hash rjenkins pg_num 128 pgp_num 128 autoscale_mode warn last_change 59 flags hashpspool stripe_width 16384 application rgw
3、Ceph Dashboard启用Radosgw Gateway
创建dashboard rgw管理用户
]$ radosgw-admin user create --uid=rgw-dashboard --display-name=rgw-dashboard --system将access-key和secret-key存放到文件
]$ echo T7D6ZCM8N515JJR502YV > access_key ]$ echo ajEJseQZvbysBsfBaZPDRgXZviMJTHrvWs11aDoO > secret_key将认证key注入到Dashboard
]$ ceph dashboard set-rgw-api-access-key -i access_key ]$ ceph dashboard set-rgw-api-secret-key -i secret_key配置radosgw-api主机和端口,如果radosgw api使用默认端口则可以不需要这一步
]$ ceph dashboard set-rgw-api-host 10.10.3.181 ]$ ceph dashboard set-rgw-api-port 80刷新Dashboard页面

