4

分布式存储之Ceph集群介绍搭建

 3 years ago
source link: http://www.yunweipai.com/39242.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

7VfUrye.png!mobile

块存储:典型设备,磁盘阵列,硬盘

作用:主要是将裸磁盘空间映射给主机使用,磁盘阵列(内含多块硬盘)做 RAID 操作或者 LVM 操作,逻辑划分出N块Logic盘并映射给主机使用,操作系统会识别到N块硬盘,但是无法感知到底是逻辑盘还是物理盘,所以还是会对其进行分区和格式化(无法共享数据)。每块逻辑盘实际上是由多块硬盘共同组成,在读写数据的时候,几块物理硬盘可以并行寻址和操作,大大提高了IO效率。

优点:对块磁盘组成逻辑盘,读写效率增加

缺点:相当于自己主机的硬盘,无法进行数据共享

文件存储

典型设备FTP、NFS服务器

优点:客服了块存储文件无法共享的问题

缺点:读写、传输速率低

场景:日志、邮箱、目录结构文件存储

备注:常见的存储中 NFS、NAS也是属于文件系统存储

对象存储

对象存储: 也叫做基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作为对象。

对象存储经常被比作在一家高级餐厅代客停车。当一个顾客需要代客停车时,他就把钥匙交给别人,换来一张收据。这个顾客不用知道他的车被停在哪,也不用知道在他用餐时服务员会把他的车移动多少次。在这个比喻中,一个存储对象的唯一标识符就代表顾客的收据。

优点:综合了块读写高速、文件共享特性

存储数据类型:指非结构化数据,如图片、音视频、文档等

应用场景:即一次写入多次读取。

分布式存储

分布式存储:是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

1、高可用性,副本数灵活控制,支持故障域分割,数据强一致性,没有单点故障

2、高可扩展性

3、特性丰富

简介:不管你是想为云平台提供 Ceph 对象存储 和/或 Ceph 块设备 ,还是想部署一个 Ceph 文件系 统或者把 Ceph 作为他用,所有 Ceph 存储集群的部署都始于部署一个个 Ceph 节点、网络和 Ceph 存储集群。 Ceph 存储集群至少需要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必须要有元数据服务器( Metadata Server )

Ceph简介

Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。 Ceph 存储集群至少需要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必须要有元数据服务器( Metadata Server )

Ceph优点

1. CRUSH算法:

ceph摒弃了传统的集中式存储元数据寻址的方案,转而使用CRUSH算法完成数据的寻址操作。CRUSH在一致性哈希基础上很好的考虑了容灾域的隔离,能够实现各类负载的副本放置规则

2.高可用:

Ceph中的数据副本数量可以由管理员自行定义,并可以通过CRUSH算法指定副本的物理存储位置以分隔故障域,支持数据强一致性; ceph可以忍受多种故障场景并自动尝试并行修复。

3 高扩展性:

Ceph不同于swift,客户端所有的读写操作都要经过代理节点。一旦集群并发量增大时,代理节点很容易成为单点瓶颈。Ceph本身并没有主控节点,扩展起来比较容易,并且理论上,它的性能会随着磁盘数量的增加而线性增长。

4 特性丰富

Ceph支持三种调用接口:对象存储,块存储,文件系统挂载。三种方式可以一同使用。在国内一些公司的云环境中,通常会采用ceph作为openstack的唯一后端存储来提升数据转发效率。

Ceph的基本组成结构如下图:

jiiMbay.png!mobile

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 等基本命令。

开始部署工作:

官网指导部署

https://docs.ceph.com/en/latest/cephadm/install/

1.配置基础环境

准备三台服务器

192.168.106.100                 ceph-admin  
192.168.106.101                 ceph-node1
192.168.106.1002                ceph-node2

2、三台服务器关闭防火墙、核心防护

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '7s/enforcing/disabled/' /etc/selinux/config

3、配置hosts

cat   /etc/hosts
192.168.106.100                 ceph-admin  
192.168.106.101                 ceph-node1
192.168.106.1002                ceph-node2

4.免密登录

配置互信(各个节点)

ssh-keygen  -t  rsa
ssh-copy-id    ceph-node1
ssh-copy-id    ceph-node2

5.配置初始环境

yum -y install wget curl net-tools bash-completion
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

配置ceph源

cat << EOF > /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
EOF

6、配置NTP时间同步

服务端:

vim  /etc/chrony.conf
allow 192.168/16 
local stratum 10
systemctl restart chronyd.service

客户端

vim  /etc/chrony.conf
server 192.168.106.100 iburst
systemctl restart chronyd.service
chronyc sources

7.安装docker 环境

yum  -y install  docker-ce
systemctl  restart  docker
systemctl  enable  docker
docker pull ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64   #各个节点安装

首先启动主节点mon(ceph-admin节点)

docker run -d --net=host --name=mon -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -e MON_IP=192.168.106.100 -e CEPH_PUBLIC_NETWORK=192.168.106.0/24 ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64  mon

若直接使用非xfs文件系统的硬盘,需要在配置文件中加以下配置:

vim /etc/ceph/ceph.conf
osd max object name len = 256 
osd max object namespace len = 64

8.拷贝配置文件

scp   -r  /etc/ceph/    ceph-node1:/etc/
scp   -r  /etc/ceph/    ceph-node2:/etc/
scp -r /var/lib/ceph ceph-node1:/var/lib/
scp -r /var/lib/ceph ceph-node2:/var/lib/

ceph-node1执行

9.创建mon

docker run -d --net=host --name=mon -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -e MON_IP=192.168.106.101 -e CEPH_PUBLIC_NETWORK=192.168.106.0/24 ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64  mon

ceph-node2执行

docker run -d --net=host --name=mon -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -e MON_IP=192.168.106.102 -e CEPH_PUBLIC_NETWORK=192.168.106.0/24  ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64  mon

10.挂载osd (三台服务器都要执行格式化和挂载)

mkdir  /osd0
mkfs.xfs /dev/sdb
mount /dev/sdb  /osd0

11.启动OSD服务

docker run -d --net=host --name=osd1 -v /etc/ceph:/etc/ceph -v /var/lib/ceph:/var/lib/ceph -v /dev:/dev -v /osd0:/var/lib/ceph/osd --privileged=true ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 osd_directory

12.在node1启动mgr:

docker run -d --net=host \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph/ \
ceph/daemon:v3.0.5-stable-3.0-luminous-centos-7-x86_64 mgr

13.在ceph中创建一个pool存储池

rdb是存储池名字,64是pg数量,pg值计算参考https://ceph.com/pgcalc/

docker exec mon ceph osd pool create rbd 64

14.配置crushmap,根据osd数目,0.15做相应调整,整体之和不大于1

docker exec mon ceph osd crush add osd.0 0.15 host=admin
docker exec mon ceph osd crush add osd.1 0.15 host=admin

检查osd tree

docker exec mon ceph osd tree

15.更新crushmap使得节点都归属于root default

docker exec mon ceph osd crush move node0 root=default
docker exec mon ceph osd crush move node1 root=default

16.检查ceph运行情况

docker exec mon ceph -s

BZrUriq.png!mobile

17.测试

测试ceph集群在块存储下镜像的创建和文件的上传,如果成功才能说明ceph集群安装成功

docker exec mon rbd create rbd/test-image --size 100M
docker exec mon rbd info rbd/test-image
docker exec mon rados -p rbd ls

UN7faeB.png!mobile

原文链接:http://dwz-9.cn/3p3I8

本文链接:http://www.yunweipai.com/39242.html


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK