ceph存储部署+使用+运维

一、ceph部署

组件

osd:用于存储数据,检测其他osd心跳,向monitor提供监控信息
Monitor:维护展示集群状态的各种图表
Mds:元数据服务器,为ceph文件系统存储元数据
其他:
PG(归属组)、monmap、pgmap、fsmap、osdmap

环境

172.16.1.194 admin/osd/mon
172.16.1.193 osd/mds
172.16.1.191 osd/mds

步骤

  1. 所有节点关闭防火墙,selinux,部署时间同步服务器
  2. Monitor配置免密登录其他节点,三个节点配置hosts
 [root@ceph1 ~]#ssh-keygen 
[root@ceph1 ~]#ssh-copy-id root@172.16.1.194
[root@ceph1 ~]#ssh-copy-id root@172.16.1.193
[root@ceph1 ~]#ssh-copy-id root@172.16.1.191
  1. osd节点上新添加一块硬盘,分区格式化挂载,分别挂载到/var/local/osd{0,1,2},然后monitor节点安装ceph-deploy工具,每个节点配置yum源
[root@ceph1 ~]# mkfs.xfs  /dev/sdb
[root@ceph1 ~]# mkdir -p /var/local/osd0
[root@ceph1 ~]# mount /dev/sdb  /var/local/osd0/
[root@ceph2 ~]# mkfs.xfs  /dev/sdb
[root@ceph2 ~]# mkdir -p /var/local/osd1
[root@ceph2 ~]# mount /dev/sdb  /var/local/osd1/
[root@ceph3 ~]# mkfs.xfs  /dev/sdb
[root@ceph3 ~]# mkdir -p /var/local/osd2
[root@ceph3 ~]# mount /dev/sdb  /var/local/osd2/
vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/x86_64
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
[root@ceph1 ~]# yum -y install ceph-deploy
  1. 创建monitor服务
 [root@ceph1 ~]# mkdir /etc/ceph && cd /etc/ceph
[root@ceph1 ceph]#ceph-deploy new ceph1 #mon安装在ceph1节点
[root@ceph1 ceph]# ls  #生成配置文件在当前目录下
ceph.conf  ceph.log  ceph.mon.keyring
  1. 修改副本数
[root@ceph1 ceph]# vim ceph.conf  #配置文件的默认副本数从3改成2,这样只有两个osd也能达到active+clean状态,在最后添加osd_pool_default_size = 2
[root@ceph1 ceph]#ceph osd dump|grep -i size #查看pool的副本数
  1. 在所有节点安装ceph
 [root@ceph1 ceph]# ceph-deploy install ceph1 ceph2 ceph3  #各个节点不能提前安装ceph和ceph-radosgw,如果网络源安装失败,手动安装epel-release 然后安装ceph-release再安装yum –y install ceph ceph-radosgw
 [root@ceph1 ceph]# ceph-deploy mon create ceph1
 [root@ceph1 ceph]# ceph-deploy gatherkeys ceph1 #收集keyring 文件
  1. 部署osd服务
[root@ceph1 ~]# chmod 777 -R /var/local/osd0/
[root@ceph1 ~]#chmod 777 -R /var/local/osd1/
[root@ceph1 ~]#chmod 777 -R /var/local/osd2/
[root@ceph1 ceph]#ceph-deploy osd prepare ceph1:/var/local/osd0 ceph2:/var/local/osd1 ceph3:/var/local/osd2 #创建osd
[root@ceph1 ceph]#ceph-deploy osd activate ceph1:/var/local/osd0 ceph2:/var/local/osd1 ceph3:/var/local/osd2 #激活osd
[root@ceph1 ceph]# ceph-deploy osd list ceph1 ceph2 ceph3 #列出osd
  1. 统一配置
    用ceph-deploy把配置文件和admin密钥拷贝到所有节点,这样每次执行Ceph命令行时就无需指定monitor地址和ceph.client.admin.keyring了,各节点修改ceph.client.admin.keyring权限
[root@ceph1 ceph]# ceph-deploy admin ceph1 ceph2 ceph3
[root@ceph1 ceph]#chmod +r /etc/ceph/ceph.client.admin.keyring
[root@ceph2 ceph]#chmod +r /etc/ceph/ceph.client.admin.keyring
[root@ceph3 ceph]#chmod +r /etc/ceph/ceph.client.admin.keyring
[root@ceph1 ceph]#ceph health 或 ceph -s  #查看集群状态
  1. 部署mds服务
[root@ceph1 ceph]# ceph-deploy mds create ceph2 ceph3 #我们MDS安装2台
[root@ceph1 ceph]# ceph mds stat #查看状态
[root@ceph1 ceph]# ceph -s
  1. 卸载ceph
停止所有进程: stop ceph-all
卸载所有ceph程序:ceph-deploy uninstall [{ceph-node}]
删除ceph相关的安装包:ceph-deploy purge {ceph-node} [{ceph-data}]
删除ceph相关的配置:ceph-deploy purgedata {ceph-node} [{ceph-data}]
删除key:ceph-deploy forgetkeys
卸载ceph-deploy管理:yum -y remove ceph-deploy

二、RBD块存储

Ceph osd lspools  //查看pool
Ceph osd pool create pool名 pg数 pgp数 //创建pool
ceph osd pool get pool名 pg_num  //查看pool的pg数
ceph osd pool get pool名 pgp_num //查看pool的pgp数,PG是指定存储池存储对象的目录有多少个,PGP是存储池中分布pg的osd个数
ceph osd pool get pool名 size    //查看pool的副本数
ceph osd pool get pool名 crush_rule //查看pool的crush调度算法
ceph osd pool set pool名 size 2  //调整pool的副本数
ceph osd pool set pool名 pg_num 128  //调整pool的pg数
rbd create -p 池子名 --image rbd-damo.img --size 10G //创建块设备
rbd resize 池子名/块设备名 --size 20G //块设备扩容,再对文件系统扩容
rbd -p 池子名 ls                  //查看池子中的块设备
rbd info 池子名/块设备编号        //查看块设备的详细信息
rbd rm -p 池子名 --image 块设备名  //删除pool中的块设备
rbd feature disable 池子名/块设备名  exclusive-lock //禁用块设备的属性
rbd map 池子名/块设备名            //挂载块设备,显示为一个磁盘
rbd unmap 池子名/块设备名          //卸载块设备
rados -p 池子名 ls                  //查看object对象
rados -p 池子名 stat object对象     //查看object对象的大小
ceph osd map 池子名 块设备名 //查看object保存在哪些pg和osd的位置

ceph数据读取顺序
在这里插入图片描述
回收站

Rbd trash move ceph-demo/ceph-trash.img –expires-at 20200327 //移动到回收站
Rbd trash -p ceph-demo ls //查看回收站中的数据
Rbd trash restore -p ceph-demo 33441a9bcc8ea //从回收站中恢复

快照

Rbd snap create ceph-demo/rbd-test.img@snap_20200327 //创建快照
Rbd snap ls ceph-demo/rbd-test.img //查看快照
Rbd snap rollback ceph-demo/rbd-test.img@snap_20200327 //快照恢复
Rbd snap remove ceph-demo/rbd-test.img@snap_20200327 //删除快照
Rbd snap protect ceph-demo/rbd-test.img@template //保护快照
Rbd clone ceph-demo/rbd-test.img@tmplate ceph-demo/vm1-clone.img //克隆
Rbd children ceph-demo/rbd-test.img@template //查看源镜像的克隆镜像
Rbd flatten ceph-demo/vm1-clone.img  //解除与父镜像的关系
Rbd export ceph-demo/rbd-test.img@snap-demo /root/rbd-test.img //全量导出
Rbd import rbd-test.img ceph-demo/rbd-test-new.img //全量导入
Rbd export-diff ceph-demo/rbd-test.img@testv1 rbd-test.img@testv1 //增量备份
Rbd import-diff rbd-test.img@testv1 ceph-demo/rbd-test-new.img //增量恢复

三、RGW对象存储

部署rgw

Ceph-deploy rgw create node-1 //以node-1为rgw网关
Curl http://node-1:6780       //测试rgw网关
Ceph -s                       //能够看到有一个rgw服务
修改rgw的监听端口
Vi ceph.conf
[client.rgw.node-1]
Rgw_frontends = “civetweb port=81”
Ceph-deploy –overwrite-conf config push node-1 node-2 node-3
Systemctl restart ceph-radorgw.target

Rgw的S3接口使用

Radosgw-admin user create --uid ceph-s3-user --display-name “Ceph S3 User Demo”    //创建一个用户,记录access_key和secret_key
"access_key": "RCKDU064CQ024KZ5972J""secret_key": "rIn4oxf6iquObC7iWQfnDSkOBPyOmzLX692j26DA"
Radosgw-admin user list  //列出用户
Radosgw-admin user info –uid 用户id  //查看用户信息
Yum -y install python-boto

编写sdk
Vi s3client.py
在这里插入图片描述

Python s3client.py   //会生成新的池子
Yum -y install s3cmd  //支持s3的cmd
S3cmd –config        //添加配置信息,保存到了/root/.s3cfg
S3cmd ls             //查看桶
S3cmd mb s3://s3cmd-demo  //创建一个桶
S3cmd put /etc/fstab s3://s3cmd-demo/fstab-demo //上传文件
S3cmd ls  s3://s3cmd-demo //查看桶中的对象
S3cmd get s3://s3cmd-demo/fstab-demo fstab-download //下载桶中的对象
S3cmd rm  s3://s3cmd-demo/fstab-demo //删除桶中的对象

Sgw的swift的接口

Radosgw-admin subuser create –uid ceph-s3-user –subuser=ceph-s3-user:swift –access=full   //创建swift用户
Radosgw-admin key create –subuser=ceph-s3-user:swift –key-type=swift –gen-secret   //生成secret key
Yum -y install python-pip  //安装pip工具
Pip install –upgrade python-swiftclient //安装swift客户端
Swift -A http://10.211.55.201:80/auth -U ceph-s3-user:swift -K secretkey list  //查看桶
Vi swift_openrc.sh //定义环境变量
ST_AUTH=http://10.211.55.201:80/auth
ST_KEY=secret key
ST_USER=ceph-s3-user:swift
Source swift_openrc.sh
Swift post swift-demo //创建bucket
Swift delete swift-demo  //删除bucket
Swift upload swift-demo /etc/passwd //上传对象
Swift list swift-demo  //查看bucket中的对象
Swift download swift-demo /etc/passwd //下载对象

RGW集群

Ceph-deploy rgw create node-2  //部署第二个rgw

修改rgw的监听端口,添加配置

Vi ceph.conf
[client.rgw.node-2]
Rgw_frontends = “civetweb port=81
Ceph-deploy –overwrite-conf config push node-1 node-2 node-3
Systemctl restart ceph-radosgw.target  //重启node-2的服务

配置keepalived
在这里插入图片描述
配置haproxy负载均衡
在这里插入图片描述
修改客户端指向

Vi /root/.s3cfg
Host_base = 10.211.55.200:80
Host_bucket = 10.211.55.200:80/%(bucket)s
S3cmd ls
S3cmd mb s3://test-1
Vi /root/swift_openrc.sh  //修改IP为VIP
Swift list
Swift post test-2
Swift delete test-2

四、文件系统存储

安装mds服务

Ceph-deploy  --overwrite-conf mds create node-1
Ceph-deploy  --overwrite-conf mds create node-2
Ceph-deploy  --overwrite-conf mds create node-3
Ceph -s //会看到有三个mds服务是standby,因为还没有文件系统

创建cephFS文件系统

Ceph osd pool create cephfs_metadata 16 16 //创建cephfs的元数据池
Ceph osd pool create cephfs_data  16 16    //创建cephfs的数据池
Ceph fs new cephfs_demo cephfs_metadata cephfs_data //创建ceph fs

关于创建存储池
确定 pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值:
*少于 5 个 OSD 时可把 pg_num 设置为 128
*OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512
*OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096
*OSD 数量大于 50 时,你得理解权衡方法、以及如何自己计算 pg_num 取值
*自己计算 pg_num 取值时可借助 pgcalc 工具
随着 OSD 数量的增加,正确的 pg_num 取值变得更加重要,因为它显著地影响着集 群的行为、以及出错时的数据持久性(即灾难性事件导致数据丢失的概率)

Ceph fs ls   //查看fs,这是mds一个是active两个是standby

CephFS的内核挂载
存储密钥(如果没有在管理节点使用ceph-deploy拷贝ceph配置文件)
cat /etc/ceph/ceph.client.admin.keyring
将key对应的值复制下来保存到文件:/etc/ceph/admin.secret中

Mount -t ceph 10.211.55.201:6789:/ /mnt/cephfs/ -o name=admin //挂载
Df -h //可以看到挂载的信息,大小为整个ceph集群的空间大小
Lsmod |grep ceph   //内核会自动加载ceph模块

CephFS-fuse用户空间挂载

Yum -y install ceph-fuse //安装ceph-fuse工具
Ceph-fuse -n client.admin -m 10.211.55.201:6789,10.211.55.202:6789, 10.211.55.203:6789 /mnt/ceph-fuse/ //挂载
[root@client ceph]# fusermount -u /mnt/ceph-fuse/ #取消挂载
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值