Ceph分布式存储

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ceph分布式存储相关的知识,希望对你有一定的参考价值。

Ceph分布式存储(一)


一、概述
Ceph是可靠的、可扩展的、统一的、分布式的存储系统。可以同时提供对象存储RADOSGW(Reliable、Autonomic、Distributed、Object Storage Gateway)、块存储RBD(Rados Block Device)、文件系统存储Ceph FS(Ceph Filesystem)3种功能。
2、Ceph应用场景
Ceph可以提供对象存储、块设备存储和文件系统服务,其对象存储可以对接网盘(owncloud)应用业务等;其块设备存储可以对接(IaaS),当前主流的IaaS运平台软件,如:OpenStack、CloudStack、Zstack、Eucalyptus等以及kvm等。
3、ceph功能组件
技术分享图片

4、Ceph核心组件
OSD(Object Storage Device):主要功能包括存储数据、处理数据的复制、恢复、回补、平衡数据分布,并将一些相关数据提供给ceph monitor。例如ceph OSD心跳等。一个ceph存储集群,至少需要两个Ceph OSD来实现active+clean健康状态和有效的保存数据的双副本(默认情况下是双副本,可以调整)。注意:每一个disk、分区都可以成为一个OSD。
Monitor:Ceph的监控器,主要功能是维护整个集群健康状态,提供一致性的决策。
MDS(Metadata Server):主要保存的是Ceph文件系统的元数据。注意:ceph的块存储和ceph对象存储都不需要MDS。MDS为基于POSIX文件系统的用户提供了一些基础命令。
5、Ceph功能特性
RADOSGW功能特性基于LIBRADOS之上,提供当前流行的RESTful协议的网关,并兼容S3和Swift接口,作为对象存储,可以对接网盘类应用以及HLS流媒体应用等。
RBD(Rados Block Device) 功能特性也是基于LIBRADOS之上,通过LIBRBD创建一个块设备,通过QEMU/KVM附加到VM上,做为传统的块设备来用。目前OpenStack、CloudStack都是采用这种方式为VM提供块设备,同时也支持快照、COW等功能。
Ceph FS功能特性是基于RADOS来实现分布式的文件系统,引如了MDS,主要为兼容POSIX文件系统提供元数据,一般都是当作文件系统来挂载。

6、Ceph架构
技术分享图片
1)基础存储系统RADOS
RADOS:可靠自主分布式对象存储。它是ceph存储的基础,保证一切都以对象形式存储。
2) 基础库LIBRADOS
LIBADOS:功能是对RADOS进行抽象和封装,并向上层提供API,以便直接基于RADOS进行应用开发。
二、 RHEL/CentOS安装
[Ceph环境准备]
1、 准备6台虚拟机
2、 物理主机上配置域名解析

]#for i in {1..6}
>do
>echo -e “192.168.4.$i	node$i	node$i.tedu.cn” >> /etc/hosts

3、 提前将服务器的密钥保存,不需要ssh时回答yes
]# ssh-keyscan node{1..6} >> /root/.ssh/known_hosts
4、实现免密登陆

]# for i in {1..6}
> do
> ssh-copy-id node$i
> done

5、配置yum源

]# mkdir /var/ftp/ceph/
]# vim /etc/fstab
/ISO/rhcs2.0-rhosp9-20161113-x86_64.iso /var/ftp/ceph iso9660 defaults 0 0
]# mount -a
]# vim /tmp/server.repo

[rhel7.4]
name=rhel7.4
baseurl=ftp://192.168.4.254/rhel7.4
enabled=1
gpgcheck=0
[mon]
name=mon
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/MON
enabled=1
gpgcheck=0
[osd]
name=osd
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/OSD
enabled=1
gpgcheck=0
[tools]
name=tools
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/Tools
enabled=1
gpgcheck=0

]# for vm in node{1..6}

do
scp /tmp/server.repo ${vm}:/etc/yum.repos.d/
done

[配置node1节点为管理节点]
1、配置名称解析
[[email protected] ~]# for i in {1..6}; do echo -e "192.168.4.$i node$i.tedu.cn node$i" >> /etc/hosts; done

2、配置免密登陆

[[email protected] ~]# ssh-keyscan node{1..6} >> /root/.ssh/known_hosts 
[[email protected] ~]# ssh-keygen -f /root/.ssh/id_rsa -N ‘‘
[[email protected] ~]# for i in {1..6}; do ssh-copy-id node$i; done
[[email protected] ~]# for vm in node{1..6}
> do
> scp /etc/hosts ${vm}:/etc/
> done

3、配置node6为时间服务器
(1)配置

[[email protected] ~]# yum install -y chrony
[[email protected] ~]# vim /etc/chrony.conf 
server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
allow 192.168.4.0/24
local stratum 10

启动服务

[[email protected] ~]# systemctl enable chronyd
[[email protected] ~]# systemctl restart chronyd

4、将node1-5配置为NTP的客户端
(1)配置

[[email protected] ~]# vim /etc/chrony.conf 
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
server 192.168.4.6 iburst
[[email protected] ~]# systemctl restart chronyd

测试

[[email protected] ~]# date -s "2018-7-13 12:00:00"
[[email protected] ~]# ntpdate 192.168.4.6
[[email protected] ~]# date

(3)同步其他主机

[[email protected] ~]# for i in {2..5}
> do
> scp /etc/chrony.conf node$i:/etc/
> done
[[email protected] ~]# for vm in node{2..5}
> do
> ssh $vm systemctl restart chronyd
> done

5、为node1-3各添加3块10GB的磁盘
可以在虚拟机不关机的情况下,直接添加硬盘
[安装ceph]
1)在node1上安装部署软件

[[email protected] ~]# yum install -y ceph-deploy

2)创建ceph部署工具的工作目录

[[email protected] ~]# mkdir ceph-clu

3)创建参与集群节点的配置文件

[[email protected] ceph-clu]# ceph-deploy new node{1..3}
[[email protected] ceph-clu]# ls

4)在3个节点上安装软件包

[[email protected] ceph-clu]# ceph-deploy install node{1..3}

5)初始化mon服务,获取密钥key,会在ceph-clu目录下生成几个key

[[email protected] ceph-clu]# ceph-deploy mon create-initial

如果出现以下错误:
[node1][ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or directory
解决方案:
[[email protected] ceph-clu]# vim ceph.conf 最下面加入行:
public_network = 192.168.0.0/24
再执行以下命令:
[[email protected] ceoh-clu]# ceph-deploy --overwrite-conf config push node1 node2 node3
6、把node1-3的vdb作为日志盘。Ext/xfs都是日志文件系统,一个分区分成日志区和数据区。为了更好的性能,vdb专门作为vdc和vdd的日志盘。

[[email protected] ceph-clu]# for vm in node{1..3}
> do
> ssh $vm parted /dev/vdb mklabel gpt
> done
[[email protected] ceph-clu]# for vm in node{1..3}; do ssh $vm parted /dev/vdb mkpart primary 1M 50% ; done
[[email protected] ceph-clu]# for vm in node{1..3}; do ssh $vm parted /dev/vdb mkpart primary 50% 100% ; done
[[email protected] ceph-clu]# for vm in node{1..3}; do ssh ${vm} chown ceph.ceph /dev/vdb? ; done

创建OSD设备

[[email protected] ceph-clu]# for i in {1..3}
> do
> ceph-deploy disk zap node$i:vdc node$i:vdd
> done
[[email protected] ceph-clu]# for i in {1..3}
> do
> ceph-deploy osd create node$i:vdc:/dev/vdb1 node$i:vdd:/dev/vdb2
> done

验证
到第7步为止,ceph已经搭建完成。查看ceph状态

[[email protected] ceph-clu]# ceph -s 如果出现health HEALTH_OK表示正常
[[email protected] ceph-clu]# ceph health

以上是关于Ceph分布式存储的主要内容,如果未能解决你的问题,请参考以下文章

ceph分布式存储-常见 PG 故障处理

ceph分布式存储实战——ceph内部组件

Ceph分布式存储

分布式存储Ceph在Docker下安装部署

分布式ceph完整存储理论 -01

三节点ceph分布式存储集群部署