本文摘要:Win10环境下使用VirtualBox安装三台Ubuntu20.04虚拟机,搭建ceph,运行对象存储系统,使用s3cmd进行测试
要用到的软件
VirtualBox:装虚拟机
Xshell:终端管理
以上工具装好后进行后面步骤
本文写的是详细步骤,系统操作熟悉的可以看简略版
正文:
1 基础准备
1.1 虚拟机装系统 详细步骤
1.2 系统装起来之后配网络。
网卡1是上外网的,不动,网卡2配置静态ip,用于虚拟机间,虚拟机和主机通信
ip自行设置,方法可以参考 -> 静态ip配置
本人主机与ip分配如下:
ceph11 10.0.0.211
ceph12 10.0.0.212
ceph13 10.0.0.213
1.3.网络配置好后,验证网络
外网:ping baidu.com
内网:ping 其他主机
1.4.用Xshell连接终端
步骤见链接->Xshell连接步骤
这步做完后,基本操作平台就好了,接下来是使用cephadm搭建ceph
2 使用cephadm搭建ceph集群
总的流程见官方文档,本文内容在此基础上提炼了必要步骤,建议结合官网文档阅读
2.0 cephadm介绍
2.1 安装cephadm需求的环境

因为使用的是Ubuntu20,所以只差docker了
直接
apt install docker.io
安装后通过
docker -v
检查一下
2.2 安装cephadm
有两种方法,基于curl和特点版本安装
这里直接使用简单的
apt install -y cephadm
注意两种方法只能用一种
2.3引导一个新集群
cephadm bootstrap --mon-ip
其中ip填写集群里第一个主机的ip
例
cephadm bootstrap --mon-ip 10.0.0.211
这一步需要等一会,成功后显示dashboard可用
可在浏览器中访问
2.4启用 CEPH CLI
cephadm shell
详细可见官网文档对应部分
2.5 添加主机
这一步是【重要步骤】
2.5.1 给其他主机添加SSH公钥
ssh-copy-id -f -i /etc/ceph/ceph.pub root@*<new-host>*
例如
ssh-copy-id -f -i /etc/ceph/ceph.pub root@host2
没有配置host的话可用直接输入ip,比如
ssh-copy-id -f -i /etc/ceph/ceph.pub root@10.0.0.212
ssh-copy-id -f -i /etc/ceph/ceph.pub root@10.0.0.213
【注意】这一步需要开启机器的远程登录root功能,详见文中标准解决方法->配置ssh可root登录及问题
2.5.2 告诉ceph,新节点属于集群
ceph orch host add *<newhost>* [*<ip>*] [*<label1> ...*]
例如
ceph orch host add host2 10.10.0.102
【注意】这一步后要开始等待docker拉进程,进程没起来之前不能做之后的步骤
sudo docker ps
查看进程
也可以直接在dashboard里查看
2.6 添加OSD
每一个存储盘可以当做一个OSD,要求:
查看可用设备
ceph orch device ls

添加OSD
图简单可以直接使用方法1,但这样每当系统添加一个盘都会被当做OSD,不适用实际部署
自行选择一种方法运行
查看集群状态
ceph -s #查看集群状态
可以看到OSD以及挂载,系统健康
dashboard一样可以查看
至此Ceph环境搭建完成
3 创建对象存储
官方文档:https://docs.ceph.com/en/pacific/cephadm/services/rgw/#cephadm-deploy-rgw
3.1 开启RGW服务
先说几个我自己学习过程中觉得重要的概念
1、zone:可用区,有一个或多个对象网关实例组成。zone不可以跨集群,配置zone不同于其他典型配置,因为不需要在ceph.conf中配置。
2、zonegroup:以前叫做"region”,有多个zone组成,一个zonegroup里面有一个master
zone,在同一个zonegroup中的多个zone 可以同步元数据和数据,提供灾难恢复能力。
3、realm:代表一个唯一的命名空间,有一个或多个zonegroup组成。在同一个realm中的不同zonegroup只能同步元数据。在realm中有period的概念,表示zonegroup的配置状态,修改zonegroup,必须更新period。
要明确一点,一个zone属于一个zonegroup,两者都属于一个realm(域名)
创建RGW的命令中realm和zone是不可缺省的。
可以结合以上概念可以看看上一节的 官方文档 中的内容。
然后这一节的干货来了!!!
详细看了cephadm中关于rgw的创建语句
其实总的来说就是一句话
ceph orch apply rgw *<name>* [--realm=*<realm-name>*] [--zone=*<zone-name>*] --placement="*<num-daemons>* [*<host1>* ...]"
很重要的一点是这句话会自动创建里面写的realm和zone,所以对于初次上手完全不需要做realm,zone,zonegroup的创建
所以最终命令简化就是
ceph orch apply rgw <reaml> < zone> --placement="*<num-daemons>* [*<host1>* ...]"
对于本例来说就是
ceph orch apply rgw rgw01 zone01 --placement="3 ceph11 ceph12 ceph13" --port=8000
查看各节点 rgw 是否启动
ceph orch ps --daemon-type rgw

3.2 给Dashboard配置对象网关
Dashboard一开始是不能直接看见对象网关的,需要自行进行配置,方便可视化查看(可以不做)
步骤如下:
3.2.1 创建Dashboard账户
radosgw-admin user create --uid=dashboard --display-name=dashboard --system
获取"access_key"与"secret_key",自行保存。
3.2.2 "access_key"与"secret_key"写入对应文件
【注】这一步在容器中进行,也就是在root账户下 输入cephadm shell后的环境中
vi access-key
然后将access_key保存(:wq)
vi secret-key
secret-key同理。
3.2.3 启用
ceph dashboard set-rgw-api-access-key -i access-key
ceph dashboard set-rgw-api-secret-key -i secret-key
完成后即可在Dashboard中看见对象网关。
3.3 创建S3用户
radosgw-admin user create --uid=s3user01 --display-name=s3user01
同样记得保存下"access_key"与 “secret_key”
同样可以在Dashboard中查看结果
4 使用s3cmd测试对象存储
4.1 安装s3cmd
sudo apt install s3cmd
4.2 配置
s3cmd --configure
内容中几个较为重要的为:
Access Key
Secret Key
S3 Endpoint
DNS-style bucket+hostname:port template for accessing a bucket
Use HTTPS protocol
其他的按回车默认就行
示例
> Access Key: xxxxxxxx (上一步创建的s3账户中的Access Key)
> Secret Key: xxxxxxxx (同理)
> S3 Endpoint: 10.0.0.211:8000(主机ip+端口号)
> DNS-style bucket+hostname:port template for accessing a bucket:%(bucket)s.10.0.0.211
> Use HTTPS protocol:no
最后显示如下
4.3 测试
创建桶
s3cmd mb s3://my-bucket-name

若遇到无法创建 报错
ERROR: [Errno -2] Name or service not known ERROR: Connection Error:
Error resolving a server hostname. Please check the servers address
specified in ‘host_base’, ‘host_bucket’, ‘cloudfront_host’,
‘website_endpoint’
解决方法:https://blog.csdn.net/HzauTriste/article/details/123139323
列举桶
s3cmd ls

上传 file.txt 到某个 bucket
s3cmd put file.txt s3://my-bucket-name/file.txt
删除桶
s3cmd rb s3://my-bucket-name

该节参考自https://www.cnblogs.com/xd502djj/p/3604783.html
至此实验结束。
后续内容是使用负载生成器进行负载测试,观测分布式存储系统性能特点(尾延迟等)。
后续内容的博客地址:
使用s3的python接口操作ceph对象存储基本操作
https://blog.csdn.net/HzauTriste/article/details/123183580?spm=1001.2014.3001.5502