ceph安装
一、 ceph概述随着OpenStack日渐成为开源云计算的标准软件栈,Ceph也已经成为OpenStack的首选后端存储。Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。ceph官方文档 http://docs.ceph.org.cn/ceph中文开源社区 http://ceph.org.cn/Ceph是一个开源的分布式文件系统。因为它还支持块存储、对象存储,所以很自
一、 ceph概述
随着OpenStack日渐成为开源云计算的标准软件栈,Ceph也已经成为OpenStack的首选后端存储。Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。
ceph官方文档 http://docs.ceph.org.cn/
ceph中文开源社区 http://ceph.org.cn/
Ceph是一个开源的分布式文件系统。因为它还支持块存储、对象存储,所以很自然的被用做云计算框架openstack或cloudstack整个存储后端。当然也可以单独作为存储,例如部署一套集群作为对象存储、SAN存储、NAS存储等。
1、 ceph支持
1)对象存储:即radosgw,兼容S3接口。通过rest api上传、下载文件。
2)文件系统:posix接口。可以将ceph集群看做一个共享文件系统挂载到本地。
3)块存储:即rbd。有kernel rbd和librbd两种使用方式。支持快照、克隆。相当于一块硬盘挂到本地,用法和用途和硬盘一样。比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的后端存储
2、 Ceph相比其它分布式存储有哪些优点?
1)统一存储
虽然ceph底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不知了。
2)高扩展性
扩容方便、容量大。能够管理上千台服务器、EB级的容量。
3)可靠性强
支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自动管理、自动修复。无单点故障,容错性强。
4)高性能
因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的IOPS和吞吐量越高。另外一点ceph客户端读写数据直接与存储设备(osd) 交互。
3、 ceph组件介绍
Ceph OSDs: Ceph OSD 守护进程(Ceph OSD)的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD 守护进程的心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少需要2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本,但你可以调整副本数)。
Monitors: Ceph Monitor维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生在Monitors 、 OSD 和 PG上的每一次状态变更的历史信息(称为 epoch )。
MDSs: Ceph 元数据服务器(MDS)为 Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 ls、find 等基本命令。
二、 ceph集群–前期环境准备
1、 环境准备
主机名 IP地址 作用
xuegod120.com 192.168.0.120 admin,osd,mon作为管理和监控节点
xuegod130.com 192.168.0.130 osd,mds
xuegod140.com 192.168.0.140 osd,mds
xuegod150.com 192.168.0.150 client
2、 添加硬件
给前三台ceph节点添加一块硬盘,并格式化后挂载
[root@xuegod120 ~]# mkfs.xfs /dev/sdb
[root@xuegod120 ~]# mkdir /var/local/osd{0,1,2}
[root@xuegod120 ~]# mount /dev/sdb /var/local/osd0/
[root@xuegod130 ~]# mkfs.xfs /dev/sdb
[root@xuegod130 ~]# mkdir /var/local/osd{0,1,2}
[root@xuegod130 ~]# mount /dev/sdb /var/local/osd1/
[root@xuegod140 ~]# mkfs.xfs /dev/sdb
[root@xuegod140 ~]# mkdir /var/local/osd{0,1,2}
[root@xuegod140 ~]# mount /dev/sdb /var/local/osd2/
3、 编辑hostst文件
所有节点都需要编辑添加对应的IP地址和主机名
[root@xuegod120 ~]# vim /etc/hosts #四台主机都需要添加
192.168.0.120 xuegod120.com
192.168.0.130 xuegod130.com
192.168.0.140 xuegod140.com
192.168.0.150 xuegod150.com
4、 SSH免密登录
所有节点都需要互相免密登录
[root@xuegod120 ~]# ssh-keygen #四台主机都需要做ssh免密
[root@xuegod120 ~]# ssh-copy-id xuegod120.com
[root@xuegod120 ~]# ssh-copy-id xuegod130.com
[root@xuegod120 ~]# ssh-copy-id xuegod140.com
[root@xuegod120 ~]# ssh-copy-id xuegod150.com
登录测试
[root@xuegod120 ~]# ssh xuegod120.com
Last login: Fri Jul 26 18:23:51 2019 from 192.168.0.106
[root@xuegod120 ~]# ssh xuegod130.com
Last login: Fri Jul 26 18:23:50 2019 from 192.168.0.106
[root@xuegod120 ~]# ssh xuegod140.com
Last login: Fri Jul 26 18:23:48 2019 from 192.168.0.106
[root@xuegod120 ~]# ssh xuegod150.com
Last login: Fri Jul 26 18:34:01 2019 from 192.168.0.106
5、 时间同步
通过ceph节点主机的时间,保证时间一致
[root@xuegod120 ~]# yum -y install ntp
[root@xuegod120 ~]# systemctl start ntpd
[root@xuegod130 ~]# yum -y install ntp
[root@xuegod130 ~]# ntpdate xuegod120.com
[root@xuegod140 ~]# yum -y install ntp
[root@xuegod130 ~]# ntpdate xuegod120.com
或者使用网络ntp服务器同步时间
ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com
6、 配置ceph专用yum源
四台主机做同样的yum源配置
[root@xuegod120 ~]# mkdir /etc/yum.repos.d/yum/
[root@xuegod120 ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/yum/
[root@xuegod120 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@xuegod120 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@xuegod120 ~]# vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority=1 #优先级
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS
gpgcheck=0
priority=1
[root@xuegod120 ~]# yum clean all
[root@xuegod120 ~]# yum makecache
三、 搭建ceph集群
1、 安装ceph-deploy管理工具
[root@xuegod120 ~]# yum -y install ceph-deploy
2、 创建ceph集群
[root@xuegod120 ~]# mkdir /etc/ceph && cd /etc/ceph
[root@xuegod120 ceph]# ceph-deploy new xuegod120.com #安装在xuegod120节点
[root@xuegod120 ceph]# ls #生成配置文件在当前目录
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring
Ceph配置文件、一个monitor密钥环和一个日志文件
3、 修改ceph副本数
[root@xuegod120 ceph]# vim ceph.conf
[global]
fsid = ab70d4a7-8a06-414e-a852-81b48d27710b
mon_initial_members = xuegod120
mon_host = 192.168.0.120
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size = 2 #增加这行内容,表示副本数为2
4、 安装ceph
通过管理节点,给所有ceph节点批量安装
[root@xuegod120 ceph]# ceph-deploy install xuegod120.com xuegod130.com xuegod140.com xuegod150.com
如果批量安装错误,可通过手动安装方式安装,命令如下:
yum -y install epel-release && yum -y install ceph-release && yum -y install ceph ceph-radosgw
5、 安装ceph monitor
[root@xuegod120 ceph]# ceph-deploy mon create xuegod120.com
6、 收集节点的keyring文件
[root@xuegod120 ceph]# ceph-deploy gatherkeys xuegod120.com
[root@xuegod120 ceph]# ls
ceph.bootstrap-mds.keyring ceph.bootstrap-rgw.keyring ceph-deploy-ceph.log
ceph.bootstrap-mgr.keyring ceph.client.admin.keyring ceph.mon.keyring
ceph.bootstrap-osd.keyring ceph.conf rbdmap
报错:
admin_socket: exception getting command descriptions: [Errno 2] No such file or directory
解决方法:
原因:是因为之前安装ceph失败,没有删除所有ceph文件,再次安装就会报错。需要删除后,重新安装ceph,在来创建监控,就没有问题
rm -rf /etc/ceph/*
rm -rf /var/lib/ceph//
rm -rf /var/log/ceph/*
rm -rf /var/run/ceph/*
7、 创建osd服务
[root@xuegod120 ceph]# ceph-deploy osd prepare xuegod120.com:/var/local/osd0 xuegod130.com:/var/local/osd1 xuegod140.com:/var/local/osd2
8、 激活osd服务
[root@xuegod120 ceph]# ceph-deploy osd activate xuegod120.com:/var/local/osd0 xuegod130.com:/var/local/osd1 xuegod140.com:/var/local/osd2
报错:
原因:是因为创建的目录文件权限不足,所以需要先授权,每个节点都需要授权
[root@xuegod120 ceph]# chmod 777 /var/local/osd0/
[root@xuegod130 ~]# chmod 777 /var/local/osd1/
[root@xuegod140 ~]# chmod -R 777 /var/local/osd2/
再次激活osd服务
9、 查看osd的状态
[root@xuegod120 ceph]# ceph-deploy osd list xuegod120.com xuegod130.com xuegod140.com
其他查看方法:
[root@xuegod120 ceph]# ceph health
[root@xuegod120 ceph]# ceph -s
10、 将所有主机的配置统一
使用ceph-deploy把配置文件和admin密钥拷贝到所有节点,这样每次执行ceph命令就不需要指定monitor地址和ceph.client.admin.keyring
[root@xuegod120 ceph]# ceph-deploy admin xuegod120.com xuegod130.com xuegod140.com xuegod150.com
注意:这里将配置拷贝到xuegod150客户端是因为后面客户端在使用ceph挂载的时候也需要使用到配置文件,这里一并拷贝,后面就不需要再次拷贝了。
11、 部署mds服务
mds我们安装两台分别是xuegod130.com和xuegod140.com
[root@xuegod120 ceph]# ceph-deploy mds create xuegod130.com xuegod140.com
12、 查看mds的状态
[root@xuegod130 ~]# ceph mds stat
e3:, 2 up:standby
13、 查看ceph集群的状态
以上操作ceph集群基本上就搭建完毕
四、 创建ceph
1、 查看ceph的文件系统
[root@xuegod120 ~]# ceph fs ls
2、 创建存储池
创建两个存储池
[root@xuegod120 ceph]# ceph osd pool create cephfs_data 128
pool ‘cephfs_data’ created
[root@xuegod120 ceph]# ceph osd pool create cephfs_metadata 128
pool ‘cephfs_metadata’ created
其中: 128
关于创建存储池
确定 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 取值变得更加重要,因为它显著地影响着集群的行为、以及出错时的数据持久性(即灾难性事件导致数据丢失的概率)。
3、 创建文件系统
[root@xuegod120 ceph]# ceph fs new 128 cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1
4、 查看文件系统和mds
[root@xuegod120 ceph]# ceph fs ls
[root@xuegod120 ceph]# ceph mds stat
五、 挂载ceph
1、 内核驱动挂载ceph文件系统
创建挂载点
[root@xuegod150 ~]# mkdir /ceph
因为挂载需要使用到ceph的存储密钥,如果前面节点没有使用ceph-deploy拷贝配置文件,需要手动创建密钥文件(我们前面已经拷贝过)
需要注意,我们通过管理节点拷贝过来的文件名字不是admin.sercret文件,并且文件的内容格式也不对需要修改。
[root@xuegod150 ~]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = AQDNBQFca7UYGxAA6wOfoZR4JWdP5yM56S8DeQ==
将key对应的值复制下来保存到文件:/etc/ceph/admin.secret中。
[root@xuegod150 ~]# vim /etc/ceph/admin.secret
AQDNBQFca7UYGxAA6wOfoZR4JWdP5yM56S8DeQ==
[root@xuegod150 ~]# chmod +r /etc/ceph/admin.secret #修改权限
挂载ceph
[root@xuegod150 ~]# mount -t ceph 192.168.1.120:6789:/ /ceph -o name=admin,secretfile=/etc/ceph/admin.secret
取消挂载
[root@xuegod65 ceph]# umount /ceph
查看挂载
[root@xuegod150 ~]# df -Th
三个节点的盘合并到一个里面,总共60G
2、 用户控件挂载ceph文件系统
安装ceph-fuse
[root@xuegod150 ~]# yum -y install ceph-fuse
先取消之前内核驱动挂载的盘
使用ceph-fuse挂载
[root@xuegod150 ~]# ceph-fuse -m 192.168.0.120:6789 /ceph
查看挂载
取消挂载
[root@xuegod150 ~]# fusermount -u /ceph
关于其他:
清理机器上的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
更多推荐
所有评论(0)