原理介绍
分布式存储的服务器共享到一个调度服务器;
高可用(一个文件默认3副本);
高性能(一个文件划分多个并发存储);
组件介绍
mon:集群监控调度端,数量为奇数个。
osd存储设备,定期把状态上传到mon
radosgw:对象存储
MDS:文件系统存储
common:客户端
搭建环境
-
控制端无密码连接所以节点和自己
ssh-keygen for i in 31 32 33; do ssh-copy-id root@192.168.66.$i; done
-
解析域名
vim /etc/hosts 192.168.66.31 ceph-node1 192.168.66.32 ceph-node2 192.168.66.33 ceph-node3
-
配置时间同步
yum -y install chrony cat /etc/chrony.conf systemctl restart chronyd systemctl enable chronyd
-
配置本地和远程cephyum源
搭建ceph源
yum -y install httpd systemctl start httpd systemctl enable httpd
创建挂载点
mkdir /var/www/html/ceph
vim /etc/fstab /iso/ceph10.iso /var/www/html/ceph iso9660 defaults,loop 0 0
mount -a
所有节点同步使用yum源
yum-config-manager --add-repo http://192.168.66.31/ceph/MON yum-config-manager --add-repo http://192.168.66.31/ceph/OSD yum-config-manager --add-repo http://192.168.66.31/ceph/Tools echo gpgcheck=0 >> /etc/yum.repos.d/192.168.66.31_ceph_MON.repo echo gpgcheck=0 >> /etc/yum.repos.d/192.168.66.31_ceph_OSD.repo echo gpgcheck=0 >> /etc/yum.repos.d/192.168.66.31_ceph_Tools.repo
-
物理机准备2块磁盘(默认3副本,3个以上)
部署(本次搭建mon和osd共存在一台服务器上的)
Mon+Mgr
-
所有mon机器安装软件
yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw
-
创建Ceph集群配置(在ceph-node1上操作)
mkdir-p /data/ceph-cluster cd /data/ceph-cluster
-
创建Ceph-mon集群配置,在ceph-cluster目录下生成Ceph配置文件(在ceph-node1上操作)
cd /data/ceph-cluster ceph-deploy new --public-network 对外网端 --cluster-network 192.168.66.0/24 ceph-node1 ceph-node2 ceph-node3
#–public-network没有就不写
#–cluster-network对内通行网端
#ceph-nodex mon节点 -
初始化mon服务(在ceph-node1上操作)
cd /data/ceph-cluster ceph-deploy mon create-initial
-
部署监控(在ceph-node1上操作)
ceph-deploy mgr create ceph-node1 ceph-node2 ceph-node3
Osd
-
所有osd机器安装软件
yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw
-
创建OSD块存储设备
(在ceph-node1上操作)初始化清空存储磁盘数据
ceph-deploy disk zap ceph-node1:sdc ceph-node1:sdd ceph-deploy disk zap ceph-node2:sdc ceph-node2:sdd ceph-deploy disk zap ceph-node3:sdc ceph-node3:sdd
(在ceph-node1上操作)把磁盘加入OSD存储空间
ceph-deploy osd create ceph-node1 --data /dev/sdc /dev/sdd ceph-deploy osd create ceph-node2 --data /dev/sdc /dev/sdd ceph-deploy osd create ceph-node3 --data /dev/sdc /dev/sdd
-
(在ceph-node1上操作)查看集群状态
ceph -s
查看osd状态
ceph osd tree
查看mon选取
ceph quorum_status --format jason-pretty
节点扩容
扩容mon
环境准备
-
控制端无密码连接所以节点和自己
for i in 34 35; do ssh-copy-id root@192.168.66.$i; done
-
解析域名
vim /etc/hosts 192.168.66.31 ceph-node1 192.168.66.32 ceph-node2 192.168.66.33 ceph-node3 192.168.66.34 ceph-node4 192.168.66.35 ceph-node5
-
配置时间同步
yum -y install chrony cat /etc/chrony.conf systemctl restart chronyd systemctl enable chronyd
-
配置本地和远程cephyum源
所有节点同步使用yum源
yum-config-manager --add-repo http://192.168.66.31/ceph/MON yum-config-manager --add-repo http://192.168.66.31/ceph/OSD yum-config-manager --add-repo http://192.168.66.31/ceph/Tools echo gpgcheck=0 >> /etc/yum.repos.d/192.168.66.31_ceph_MON.repo echo gpgcheck=0 >> /etc/yum.repos.d/192.168.66.31_ceph_OSD.repo echo gpgcheck=0 >> /etc/yum.repos.d/192.168.66.31_ceph_Tools.repo
-
物理机准备2块磁盘(默认3副本,3个以上)
安装
-
mon机器安装软件
yum -y install ceph-deploy ceph-mon ceph-osd ceph-mds ceph-radosgw
-
把新加mon加入集群(在ceph-node1上操作)
cd /data/ceph-cluster ceph-deploy mon add ceph-node4 --address 节点ip ceph-deploy mon add ceph-node5 --address 节点ip
-
(在ceph-node1上操作)查看集群状态
ceph -s
查看osd状态
ceph osd tree
查看mon选取
ceph quorum_status --format jason-pretty
扩容mgr
在mon没有mgr上机器上
-
mgr加入集群(在ceph-node1上操作)
cd /data/ceph-cluster ceph-deploy mgr create ceph-node4 ceph-node5
扩容osd
-
所有osd机器安装软件
yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw
-
创建OSD块存储设备
(在ceph-node1上操作)初始化清空存储磁盘数据
ceph-deploy disk zap ceph-node4:sdc ceph-node4:sdd
(在ceph-node1上操作)把磁盘加入OSD存储空间
ceph-deploy osd create ceph-node4 --data /dev/sdc /dev/sdd
-
(在ceph-node1上操作)查看集群状态
ceph -s
查看osd状态
ceph osd tree
查看mon选取
ceph quorum_status --format jason-pretty
创建Ceph块存储(在ceph-node1上操作)
-
创建存储池
ceph osd pool create cephfs_(池名) 128
查看存储池
ceph osd lspools
-
创建镜像
方法一:默认池中创建镜像
rbd create cxk-image --image-feature layering --size 1G
方法二:指定池中创建镜像
rbd create 池名/cxk --image-feature layering --size 1G
查看镜像
rbd list
查看详细信息
rbd info cxk-image
-
镜像动态调整
扩容容量
rbd resize --size 2G cxk-image
缩小容量
rbd resize --size 1G cxk-image --allow-shrink
镜像快照操作
给镜像创建快照
rbd snap create cxk-image --snap cxk-snap1
克隆快照
rbd clone cxk-image --snap cxk-snap1 cxk-snap2 --image-feature layering
保护快照不让删除
rbd snap protect cxk-image --snap cxk-snap1
取消保护
rbd snap unprotect cxk-image --snap cxk-snap1
还原快照
rbd snap rollback cxk-image --snap cxk-snap1
把快照脱离父母独立工作
rbd flatten cxk-snap1
删除快照
rbd snap rm cxk-image --snap cxk-snap1
查看快照
查看镜像快照
rbd snap ls cxk-image
查看克隆镜像与父镜像快照的关系
rbd info cxk-clone
客户端通过KRBD访问块存储
-
客户端安装
yum -y install ceph-common
-
客户端拷贝ceph文件到本地
scp 192.168.4.11:/data/ceph-cluster/* /etc/ceph/
-
客户端挂载服务端的镜像
rbd map cxk-image
撤销磁盘挂载:
rbd unmap /dev/rbd0(挂载点)
-
客户端查看挂载服务端的镜像
rbd showmapped lsblk
-
客户端格式化、挂载分区
mkfs.xfs /dev/rbd0 mount /dev/rbd0 /mnt/
-
创建MDS文件系统(inode+block)(在ceph-node1上操作)
要使用 CephFS, 至少就需要一个 metadata server 进程。可以手动创建一个 MDS, 也可以使用 ceph-deploy或者 ceph-ansible 来部署 MDS。
-
给那些osd部署mds服务:
cd /data/ceph-cluster ceph-deploy mds create ceph-node1 (可以继续添加)
-
创建存储池
数据
ceph osd pool create cephfs_data 128
元数据
ceph osd pool create cephfs_metadata 128
-
创建Ceph文件系统
ceph fs new myfs1 cephfs_metadata cephfs_data new fs with metadata pool 2 and data pool 1
-
查看
ceph fs ls
客户端挂载
mount -t ceph MON节点的IP:6789:/ /mnt/cephfs/ -o name=admin,secret=AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg==
文件系统类型为ceph admin是用户名,secret是密钥
密钥可以在/etc/ceph/ceph.client.admin.keyring中找到
创建RGW对象存储
-
给那些osd部署rgw服务:
ceph-deploy rgw create ceph-node1 (可以继续添加)
-
登陆该节点验证服务是否启动
ps aux |grep radosgw
-
该节点修改服务端口
vim /etc/ceph/ceph.conf [client.rgw.node5] host = ceph-node1 rgw_frontends = "civetweb port=8000" #node5为主机名 #civetweb是RGW内置的一个web服务
-
该节点重启服务
systemctl status ceph-radosgw@\*
-
创建radosgw用户
radosgw-admin user create --uid="radosgw" --display-name="radosgw" { "user_id": "radosgw", "display_name": "radosgw", "email": "", "suspended": 0, "max_buckets": 1000, "auid": 0, "subusers": [], "keys": [ { "user": "radosgw", "access_key": "DKOORDOMS6YHR2OW5M23", "secret_key": "OOBNCO0d03oiBaLCtYePPQ7gIeUR2Y7UuB24pBW4" } ], "swift_keys": [], "caps": [], "op_mask": "read, write, delete", "default_placement": "", "placement_tags": [], "bucket_quota": { "enabled": false, "check_on_raw": false, "max_size": -1, "max_size_kb": 0, "max_objects": -1 }, "user_quota": { "enabled": false, "check_on_raw": false, "max_size": -1, "max_size_kb": 0, "max_objects": -1 }, "temp_url_keys": [], "type": "rgw" }
客户端安装软件
-
安装
yum install s3cmd
-
修改软件配置
s3cmd --configure Access Key: DKOORDOMS6YHR2OW5M23 Secret Key: OOBNCO0d03oiBaLCtYePPQ7gIeUR2Y7UuB24pBW4 Default Region [US]: ZH S3 Endpoint [s3.amazonaws.com]: 192.168.4.15:8000 [%(bucket)s.s3.amazonaws.com]: %(bucket)s.192.168.4.15:8000 Use HTTPS protocol [Yes]: no Test access with supplied credentials? [Y/n] n Save settings? [y/N] y
-
创建存储数据的bucket(类似于存储数据的目录)创建桶并放入文件
s3cmd ls s3cmd mb s3://my_bucket Bucket 's3://my_bucket/' created s3cmd ls 2018-05-09 08:14 s3://my_bucket s3cmd put /var/log/messages s3://my_bucket/log/ s3cmd ls s3://my_bucket DIR s3://my_bucket/log/ s3cmd ls s3://my_bucket/log/ 2018-05-09 08:19 309034 s3://my_bucket/log/messages
-
测试下载功能
s3cmd get s3://my_bucket/log/messages /tmp/
-
测试删除功能
s3cmd del s3://my_bucket/log/messages
喜欢的亲可以关注点赞评论哦!以后每天都会更新的哦!本文为小编原创文章;
文章中用到的文件、安装包等可以加小编联系方式获得;
欢迎来交流小编联系方式VX:CXKLittleBrother
进入运维交流群