对象存储网关RadosGW

部署RadosGW服务

将ceph-mgr1、ceph-mgr2服务器部署为高可用的radosGW服务

apt install radosgw #ubuntu
yum install ceph-radosgw # centos

在deploy服务将ceph-mgr1和ceph-mgr2初始化为radosGW服务

ceph-deploy rgw create ceph-mgr2

验证radosgw服务状态

查看radosgw的存储池类型

ceph osd pool ls

查看默认radosgw的存储池信息:

radosgw-admin zone get --rgw-zone=default --rgw-zonegroup=default

.rgw.root: 包含realm(领域信息),比如 zone 和 zonegroup.
default.rgw.log: 存储日志信息,用于记录各种l0g 信息。
default.rgw.control: 系统控制池,在有数据更新时,通知其它 RGW 更新缓存。
default.rqw.meta: 元数据存储池,通过不同的名称空间分别存储不同的rados 对象,这些名称空间包括用戶UID 及其bucket 映射信息的名称空间 users.uid、用戶的密钥名称空间
users.keys、用戶的email 名称空间 users.email、用戶的subuser 的名称空间 users.swift,以及bucket 的名称空间root 等。
default.rgw.buckets.index: 存放bucket 到object 的索引信息。
default.rgw.buckets.data: 存放对象的数据。
default.rgw.buckets.non-ec: 数据的额外信息存储池
default.rgw.users.uid: 存放用户信息的存储池。
default.rgw.data.root: 存放bucket 的元数据,结构体对应 RGWBucketInfo,比如存放桶名、桶1D、data_pool 等。

 

查看存储池类型,默认是副本池,replicated_rule

ceph osd pool get default.rgw.buckets.data crush_rule

默认的副本数 3

ceph osd pool get default.rgw.log size

默认pgp和pg 32

ceph osd pool get default.rgw.log gpg_num
ceph osd pool get default.rgw.log gp_num

 

radosgw http高可用

自定义http端口

在mgr2上操作

vim /etc/ceph/ceph.conf
[client.rgw.ceph-mgr2]
rgw_host = ceph-mgr2
rgw_frontends = civetweb port=9900

systemctl restart ceph-radosgw@rgw.ceph-mgr2.service

浏览器就可以直接访问了ip:9900 

高可用

mgr1和mgr2都修改下

vim /etc/ceph/ceph.conf
[client.rgw.ceph-mgr2]
rgw_host = ceph-mgr2
rgw_frontends = civetweb port=9900

[client.rgw.ceph-mgr1]
rgw_host = ceph-mgr1
rgw_frontends = civetweb port=9900

systemctl restart ceph-radosgw@rgw.ceph-mgr2.service

安装haproxy

apt install haproxy -y
vim /etc/haproxy/haproxy.cfg
listen ceph-rgw
 bind 172.31.6.203:80
 mode tcp
 server 172.31.6.104 172.31.6.104:9900 check inter 3s fall 3 rise 5
 server 172.31.6.104 172.31.6.104:9900 check inter 3s fall 3 rise 5
 
 service haproxy restart

 重启后直接访问浏览器就可以了

radosgw https:在rgw节点生成签名证书并配置radosgw启用SSL

cd /etc/ceph
mkdir certs
cd certs/
openssl genrsa -out civetweb.key 2048
openssl req -new -x509 -key civetweb.key -out civetweb.crt -subj "/CN=rgw.magedu.net"
touch /root/.rnd #如果有警告执行这个步骤,重新签发下
cat civetweb.key civetweb.crt > civetweb.pem

配置ceph.conf

vim /etc/ceph/ceph.conf
[client.rgw.ceph-mgr1]
rgw_host = ceph-mgr1
rgw_frontends = "civetweb port=9900+9443s ssl_certificate=/etc/ceph/certs/civetweb.pem"

systemctl restart ceph-radosgw@rgw.ceph-mgr1.service

haproxy配置https

apt install haproxy -y
vim /etc/haproxy/haproxy.cfg
listen ceph-rgw
 bind 172.31.6.203:443
 mode tcp
 server 172.31.6.104 172.31.6.104:9443 check inter 3s fall 3 rise 5
 server 172.31.6.104 172.31.6.104:9943 check inter 3s fall 3 rise 5
 
 service haproxy restart

 日志及其他优化配置

mkdir /var/log/radosgw
chown ceph.ceph /var/log/radosgw

 配置ceph.conf

vim /etc/ceph/ceph.conf
[client.rgw.ceph-mgr1]
rgw_host = ceph-mgr1
rgw_frontends = "civetweb port=9900+9443s ssl_certificate=/etc/ceph/certs/civetweb.pem error_log_file=/var/log/radosgw/civetweb.error.log access_log_file=/var/log/radosgw/civetweb.access.log request_timeout_ms=30000 num_threads=200"

systemctl restart ceph-radosgw@rgw.ceph-mgr1.service

然后访问测试,直接看下访问日志

 

客户端(s3cmd)测试数据读写

 rgw监听在rgw.magedu.net这个域名

vim /etc/ceph/ceph.conf
[client.rgw.ceph-mgr1]
rgw_host = ceph-mgr1
rgw_frontends = civetweb port=9900
rgw_dns_name = rgw.magedu.net

systemctl restart ceph-radosgw@rgw.ceph-mgr1.service

 创建rgw账户,将这两个key保存好。access_key和secret_key

radosgw-admin user create --uid="user1" --display-name="user1"

安装s3cmd 2.0.1-2版本

sudo apt-cache madison s3cmd
sudo apt install s3cmd

添加域名解析 

vim /etc/hosts
172.31.6.105    rgw.magedu.net

配置s3cmd

s3cmd --configure

配置文件保存在/home/cephadmin/.s3cfg,如果配置错了可以直接vim修改

 

创建bucket

s3cmd mb s3//myserver
s3cmd ls

验证上传数据 

s3cmd mb s3://images #创建bucket
wget https://img1.jcloudcs.com/portal/brand/2021/fl1-2.jpg #下载一个图片
s3cmd put fl1-2.jpg s3://images #上传文件
s3cmd put --recursive test/ s3://images #上传目录
s3cmd ls s3://images #验证
s3cmd get s3://images/fl1-2.jpg /opt/ #下载数据

删除文件

s3cmd ls s3://images/
s3cmd rm s3://images/fl1-2.jpg
s3cmd ls s3://images/

查看bucket权限

s3cmd info s3://video

授予匿名用户GetObject权限:,给video放一个短视频,授权之后就可以浏览器直接访问了

vim ceph-cluster/s3cmd-dir/video-single_policy
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": "*",
    "Action": "s3:GetObject",
    "Resource": [
      "arn:aws:s3:::video/*"
    ]
  }]
}

s3cmd setpolicy video-single_policy s3://video #授权
s3cmd info s3://video

 

posted @ 2022-09-09 21:01  Maniana  阅读(343)  评论(0编辑  收藏  举报