rgw 部署
what rgw
RGW(Rados GateWay) 对象存储网关,ceph 是分布式对象系统,完全是可以做对象存储的,然而 Rados提供的是私有接口,不符合市场趋势,因为对象存储狭义上说是 云存储(互联网应用),所以接口应该支持主流网络协议,如http;ceph为了支持 http协议访问,设计了RGW存储网关,提供接口,此外还兼容云存储领域较为主流的接口 如 S3,Swift。
创建 rgw的keyring
# 每添加一个 功能节点都需要 创建一个 keyring
[root@node29 ~]# ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring
creating /etc/ceph/ceph.client.radosgw.keyring
[root@node29 ceph]# ls/etc/ceph
ceph.client.admin.keyring ceph.client.radosgw.keyring ceph.conf
#将 新建立 rgw 节点 都注册到 ceph.client.radosgw.keyring中 并且为 node 生产密钥 (后面试了下不用这也可完成?是因为你把 cephx给关闭了)
#注意 名字 为 client.{rgwname}
[root@node29 ceph]# ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.gateway --gen-key
#赋予节点访问权限 --cap osd 'allow rwx' 读写执行权限
[root@node29 ceph]# ceph-authtool -n client.radosgw.gateway --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring
#将节点添加到集群
[root@node29 ceph]# ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.gateway -i /etc/ceph/ceph.client.radosgw.keyring
added key for client.radosgw.gateway
#ceph auth ls 可以 查看到 已认证的node
[root@node29 ceph]# ceph auth ls | grep -10 rados
client.radosgw.gateway
key: AQBTJepinqB+JBAAqYgKorE4nfwrtsN9LdpIzg==
caps: [mon] allow rwx
caps: [osd] allow rwx
client.rgw.node29
key: AQDGNepiNtYXLhAAGMGUlsRA8EfP0iDkXiBKSQ==
caps: [mon] allow rwx
caps: [osd] allow rwx
配置 ceph. conf
由于 安装的这个版本 修改过代码,起rgw之前, 需要将 rgw系统的系统池创建好,然后在拉RGW!
先创建池 ,这里参考并修改了同事的部署脚本( 这里用 是单机部署如果是集群记得 将 修改好后的 ceph 同步到其他节点! 用了单副本,结合实际情况设置副本数)
##################################################################################################
ceph osd pool create .rgw.root 8 8
ceph osd pool create master.rgw.control 8 8
ceph osd pool create master.rgw.meta 8 8
ceph osd pool create master.rgw.log 8 8
ceph osd pool create master1.rgw.buckets.cache 8 8
ceph osd pool create master1.rgw.buckets.index 8 8
ceph osd pool create master1.rgw.buckets.non-ec 8 8
ceph osd pool create master1.rgw.buckets.data 8 8
ceph osd pool create master1.rgw.buckets.data2 8 8
ceph osd pool create master1.rgw.buckets.data3 8 8
ceph osd pool set .rgw.root size 1
ceph osd pool set master.rgw.control size 1
ceph osd pool set master.rgw.meta size 1
ceph osd pool set master.rgw.log size 1
ceph osd pool set master1.rgw.buckets.cache size 1
ceph osd pool set master1.rgw.buckets.index size 1
ceph osd pool set master1.rgw.buckets.non-ec size 1
ceph osd pool set master1.rgw.buckets.data size 1
ceph osd pool set master1.rgw.buckets.data2 size 1
ceph osd pool set master1.rgw.buckets.data3 size 1
#创建 realm 用户
radosgw-admin realm create --rgw-realm=default --default
#
radosgw-admin zonegroup create --rgw-zonegroup=default --rgw-realm=default --default --master
radosgw-admin zone create --rgw-zone=master --rgw-zonegroup=default --default --master
radosgw-admin user create --uid admin --display-name admin --access_key admin --secret_key admin --system
radosgw-admin zone modify --rgw-zone=master --access_key admin --secret_key admin --endpoints=http://10.1.20.176:7480
#记得改成你的ip!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
radosgw-admin zonegroup placement add --rgw-zonegroup=default --placement-id=test
#这里设置 placement rule (具体为什么这样还没搞明白)
radosgw-admin zonegroup placement add --placement-id mplacement --storage-class STANDARD
radosgw-admin zonegroup placement add --placement-id mplacement --storage-class GLACIER
radosgw-admin zonegroup placement add --placement-id test --storage-class STANDARD
radosgw-admin zone placement add --placement-id test --storage-class STANDARD --default-storage STANDARD --active-pool master1.rgw.buckets.data3 --index-pool master1.rgw.buckets.index --data-extra-pool master1.rgw.buckets.non-ec --cache-pool master1.rgw.buckets.cache
radosgw-admin zone placement add --placement-id mpplacement_testlacement --storage-class STANDARD --default-storage STANDARD --active-pool master1.rgw.buckets.data --index-pool master1.rgw.buckets.index --data-extra-pool master1.rgw.buckets.non-ec --cache-pool master1.rgw.buckets.cache
radosgw-admin zone placement add --placement-id mplacement --storage-class GLACIER --active-pool master1.rgw.buckets.data2 --compression zlib
radosgw-admin period update --commit
#创建rgw用户
radosgw-admin user create --uid piglet --display-name piglet --access_key 123456 --secret_key 123456
##################################################################################################
#修改 conf
#这是你要上文你设置 网关名
[client.radosgw.gateway]
rgw_frontends = "beast port=8009" # 解析hthp的库 新版本 默认用 beast,以及指定端口 默认 7480
keyring = /etc/ceph/ceph.client.radosgw.keyr
#debug_rgw=20
rgw_zone=master #这里 是命名空间, 和刚才建的 pool前缀一样
rgw_gc_obj_min_wait=60
rgw_gc_processor_max_time=60
rgw_gc_processor_period=6
#######################################
# 修改ceph配置文件
auth cluster required = none
auth service required = none
auth client required = none
# 将下面配置 添加到ceph配置中
[client.radosgw.gateway]
rgw_frontends = "beast port=8009"
keyring = /etc/ceph/ceph.client.radosgw.keyring
#debug_rgw=20
rgw_zone=master
rgw_gc_obj_min_wait=60
rgw_gc_processor_max_time=60
rgw_gc_processor_period=60
#最后重启 ,建议其他 节点也重启下
systemctl restart ceph-osd@*
systemctl restart ceph-mgr@node29_mgr.service
systemctl restart ceph-mon@mon-node29.service
#启动服务
systemctl restart ceph-radosgw@radosgw.gateway.service
#最后我把整个 ceph.co 都贴出来,供参考
#ceph -s 看是否有 rgw ,以及看 端口是否 有监听
#也可以测试下端口
[root@node29 home]# curl http://10.1.23.29:7480
<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>
[root@node29 home]#
部署遇的问题
- rgw服务起不来
2
3
4
5
6
7
8
9
10
#名字搞错! 这个rgwname 要和 你在ceph.conf 中配置rgw名字一样!
systemctl restart ceph-radosgw@{rgwname}.service
#配置 文件有误
#这里 pool不是随便建立的 ,{zone-name}.pool-name.{池的功能},这里zone 应该是为了隔离多站点, 我可以启很多哥 rgw服务
#补充
systemctl | grep {name} 可以搜服务,结合 ps 看看经常
journalctl |grep 'error' 可以看启动服务时有哪些报错
- 服务起来了,但是 ceph -s 没有显示 rgw 节点
- 保证集群 是正常状态 ! 这个很关键!!用 ceph health detail 可查看
(我的一开始就 pg chunk , 记得先坚持 集群正常状态)
- 查看 mgr 服务是否正常 (开始我的mgr是挂的)
- 更新了cepf.conf 要重启服务,mon,mgr,osd也要重启, 此外 ceph.conf 也要同步到其他节点(最后都再这里 栽跟头了)
:point\_up\_2:
附件 ceph.conf
rwg配置参数还有很多 ,可以参考官网的 https://docs.ceph.com/en/nautilus/radosgw/config-ref/
[root@node29 home]# cat /etc/ceph/ceph.conf
[global]
fsid = 311a4057-0837-4af8-92ab-a8053e4a3a57
mon initial members = mon-node29,mon-node31
mon host = 10.1.23.29 , 10.1.23.31
public network = 10.1.23.0/24
auth cluster required = none
auth service required = none
auth client required = none
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1
mon allow pool delete = true
mon_max_pg_per_osd = 2000
rbd_default_features = 1
[client.rgw.node29]
keyring = /etc/ceph/ceph.client.radosgw.keyring
rgw_zone = master
rgw_override_bucket_index_max_shards = 10
rgw_frontends = "beast port=7480"
rgw_override_bucket_index_max_shards = 10
debug_rgw = 20
[client.radosgw.gateway]
rgw_frontends = "beast port=8009"
keyring = /etc/ceph/ceph.client.radosgw.keyring
#debug_rgw=20
rgw_zone=master
rgw_gc_obj_min_wait=60
rgw_gc_processor_max_time=60
rgw_gc_processor_period=60
[client.radosgw1.gateway]
rgw_frontends = "beast port=809"
keyring = /etc/ceph/ceph.client.radosgw.keyring
#debug_rgw=20
rgw_zone=master
rgw_gc_obj_min_wait=60
rgw_gc_processor_max_time=60
rgw_gc_processor_period=60
You have new mail in /var/spool/mail/root
[root@node29 home]#