Ceph介绍-安装部署(一)

2020年7月27日13:58:45Ceph介绍-安装部署(一)已关闭评论 158 views

第1章 Ceph介绍

1.1 Ceph的主要特点:

  • 统一存储
  • 无任何单点故障
  • 数据多份冗余
  • 存储容量可扩展
  • 自动容错及故障自愈

1.2 Ceph三大角色组件及其作用

在Ceph存储集群中包含了三大角色组件,他们在Ceph存储集群中表现为3个守护进程,分别是Ceph OSD、Monitor、MDS。当然还有其他的功能组件,但是最主要的是这三个。

1.2.1 Ceph OSD

Ceph的OSD(Object Storage Device)守护进程,主要功能包括:存储数据、副本数据处理、数据恢复、数据回补、平衡数据分布,并将数据相关的一些监控信息提供给Ceph Moniter,以便Ceph Moniter来检查其他OSD的心跳状态。一个Ceph OSD存储集群要求至少两个Ceph OSD才能有效的保存两份数据,注意这里的两个Ceph OSD是指运行在两台物理服务器上,并不是在一台物理服务器上运行两个Ceph OSD的守护进程。通常冗余和高可用性至少需要3个Ceph OSD。

1.2.2 Monitor

Ceph的Monitor守护进程,主要功能是维护集群状态的表组,这个表组中包含了多张表,其中有Moniter map、OSD map、PG(Placement Group) map、CRUSH map。这些映射是Ceph守护进程之间相互协调的关键簇状态。监视器还负责管理守护进程和客户端之间的身份验证,通常需要至少三个监视器来实现冗余和高可用性。

1.2.3 MDS

Ceph的MDS(Metadata Server)守护进程,主要保存的是Ceph文件系统的元数据,注意对于Ceph的块设备和Ceph对象存储都不需要Ceph MDS守护进程。Ceph MDS为基于POSIX文件系统的用户提供了一些基础命令的执行,比如ls、find等,这样可以很大程度降低Ceph存储集群的压力。

1.2.4 Managers

Ceph的Managers(Ceph Manager),守护进程(ceph-mgr)负责跟踪运行时间指标和Ceph群集的当前状态,包括存储利用率,当前性能指标和系统负载。Ceph Manager守护程序还托管基于python的插件来管理和公开Ceph集群信息,包括基于Web的仪表板和REST API,通常至少有两名Manager需要高可用性。

1.3 Ceph体系结构

Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能,它可靠性高、管理简便、并且是自由软件。Ceph 的强大足以改变贵公司的 IT 基础架构、和管理海量数据的能力。Ceph 可提供极大的伸缩性——供成千用户访问 PB 乃至 EB 级的数据。Ceph节点以普通硬件和智能守护进程作为支撑点,Ceph存储集群组织起了大量节点,它们之间靠相互通讯来复制数据、并动态地重分布数据。

Ceph介绍-安装部署(一)

  • A library…and PHP:LIBRADOS库允许应用程序可以直接访问Ceph底层的对象存储,它支持的有C、C++、Java、Python、Ruby及PHP语言。
  • A bucket-based…and Swift:一套基于RESTful协议的网关,并兼容S3和Swift。
  • A reliable…QEMU/KVM driver:通过Linux内核客户端及QEMU/KVM驱动,来提供一个可靠且完全分布的块设备。
  • A POSIX-compliant…for FUSE:通过Linux内核客户端结合FUSE,来提供一个兼容POSIX文件结构系统。
  • A reliable,autonomous…storage nodes:以其具备的自愈功能、自管理、智能存储节点特性,来提供一个可靠、自动、分布式的对象存储。
  • Ceph的底层核心是RADOS(Reliable, Autonomic Distributed Object Store),Ceph的本质是一个对象存储。RADOS由两个组件组成:OSD和Monitor。OSD主要提供存储资源,每一个disk、SSD、RAID group或者一个分区都可以成为一个OSD,而每个OSD还将负责向该对象的复杂节点分发和恢复;Monitor维护Ceph集群并监控Ceph集群的全局状态,提供一致性的决策。
  • RADOS分发策略依赖于名为CRUSH(Controlled Replication Under Scalable Hashing)的算法(基于可扩展哈希算法的可控复制)

1.4 应用场景

Ceph的应用场景主要由它的架构确定,Ceph提供对象存储、块存储和文件存储

1.4.1 LIBRADOS应用

通俗的说Librados提供了应用程序对RADOS的直接访问,目前Librados已经提供了对C、C++、Java、Python、Ruby和PHP的支持,它支持单个单项的原子操作,如同时更新数据和属性、CAS操作,同时有对象粒度的快照操作,它的实现是基于RADOS的插件API,也就是在RADOS上运行的封装库。

1.4.2 RADOSGW应用

这类应用基于Librados之上,增加了HTTP协议,提供RESTful接口并且兼容S3、Swfit接口,RADOSGW将Ceph集群作为分布式对象存储,对外提供服务。

1.4.3 RBD应用

这类应用也是基于Librados之上的,细分为下面两种应用场景:

1.4.3.1 应用场景为虚拟机提供块设备。

通过Librbd可以创建一个块设备(Container),然后通过QEMU/KVM附加到VM上,通过Container和VM的解耦,使得块设备可以被绑定到不同的VM上。

1.4.3.2 应用场景为主机提供块设备

这种场景是传统意义上的理解的块存储。

以上两种方式都是将一个虚拟的块设备分片存储在RADOS中,都会利用数据条带化提高数据并行传输,都支持块设备的快照、COW(Copy-On-Write)克隆。最重要的是RBD还支持Live migration。

1.4.4 CephFS(Ceph文件系统)应用

这类应用是基于RADOS实现的PB级分布式文件系统,其中引入MDS(Meta Date Server),它主要为兼容POSIX文件系统提供元数据,比如文件目录和文件元数据,同时MDS会将元数据存储在RADOS中,这样元数据本身也达到了并行化,可以大大加快文件操作的速度。MDS本身不为Client提供数据文件,只为Client提供对元数据的操作,当Client打开一个文件时,会查询并更新MDS相应的元数据(如文件包括的对象信息),然后再根据提供的对象信息直接从RADOS中得到文件数据。

第2章 Ceph安装部署

备注:Octopus版本开始最好使用CentOS8,否则dashboard无法使用

2.1 安装Ceph预检

2.1.1 完成主机hosts映射

1
2
3
4
5
6
[root@ceph ~]# vim /etc/hosts
10.10.10.200 ceph-manager
10.10.10.201 ceph-node01
10.10.10.202 ceph-node02
10.10.10.203 ceph-node03
10.10.10.205 ceph-client

2.1.2 所有节点创建repo文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@ceph ~]# cat << EOM > /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/\$basearch
enabled=1
gpgcheck=0
type=rpm-md

[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md

[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
EOM

[root@ceph ~]# cat << EOM > /etc/yum.repos.d/ceph-deploy.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md
EOM

2.1.3 所有节点创建无密码登录普通用户

1
2
3
4
[root@ceph ~]# useradd -d /home/cephnodes -m cephnodes -u 1001
[root@ceph ~]# passwd cephnodes
[root@ceph ~]# echo "cephnodes ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephnodes
[root@ceph ~]# chmod 0440 /etc/sudoers.d/cephnodes

2.1.4 管理端允许无密码 SSH 登录所有节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@ceph-manager ~]# su - cephnodes
[root@ceph-manager ~]$ ssh-keygen
[root@ceph-manager ~]$ ssh-copy-id cephnodes@ceph-node01
[root@ceph-manager ~]$ ssh-copy-id cephnodes@ceph-node02
[root@ceph-manager ~]$ ssh-copy-id cephnodes@ceph-node03
[root@ceph-manager ~]$ vim ~/.ssh/config
Host ceph-node01
   Hostname ceph-node01
   User cephnodes
Host ceph-node02
   Hostname ceph-node02
   User cephnodes
Host ceph-node03
   Hostname ceph-node03
   User cephnodes
Host ceph-client
   Hostname ceph-client
   User cephnodes
[root@ceph-manager ~]$ chmod 600 ~/.ssh/config

2.2 创建集群(仅管理端操作)

Ceph介绍-安装部署(一)

2.2.1 安装 ceph-deploy工具

1
2
[root@ceph-manager ~]# yum -y install python-pip
[root@ceph-manager ~]# yum install -y ceph-deploy

2.2.2 创建集群工作目录

1
2
[root@ceph-manager ~]$ mkdir ceph-cluster
[root@ceph-manager ~]$ cd ceph-cluster/

2.2.3 创建Monitor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@ceph-manager ceph-cluster]$ ceph-deploy new ceph-node01
[root@ceph-manager ceph-cluster]$ vim ceph.conf
[global]
fsid = 2e735cf3-f0f0-466a-8168-76bfcf1f2fd8
mon_initial_members = ceph-node01
mon_host = 10.10.10.101
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
# 将默认副本数从 3 改成 2 ,这样只有两个 OSD 也可以达到 active + clean 状态
osd pool default size = 2
# 如果你有多个网卡,可以把 public network 写入 Ceph 配置文件的 [global] 段下
# public network = {ip-address}/{netmask}
# 参考:<a href="http://docs.ceph.org.cn/rados/configuration/network-config-ref/">http://docs.ceph.org.cn/rados/configuration/network-config-ref/</a>

2.2.4 安装 Ceph

1
[root@ceph-manager ceph-cluster]$ ceph-deploy install ceph-manager ceph-node01 ceph-node02 ceph-node03 ceph-client --no-adjust-repos

2.2.5 初始配置ceph

2.2.5.1 配置初始 monitor(s)、并收集所有密钥

1
[root@ceph-manager ceph-cluster]$ ceph-deploy mon create-initial

2.2.5.2 拷贝配置文件和 admin 密钥到所有节点

1
[root@ceph-manager ceph-cluster]$ ceph-deploy admin ceph-manager ceph-node01 ceph-node02 ceph-node03 ceph-client

2.2.5.3 创建ceph管理节点

1
[root@ceph-manager ceph-cluster]$ ceph-deploy mgr create ceph-node01

备注:每个运行了mon的节点上都需要安装mgr节点。

2.2.6 创建OSD节点

1
2
3
[root@ceph-manager ceph-cluster]$ ceph-deploy osd create --data /dev/sdb ceph-node01
[root@ceph-manager ceph-cluster]$ ceph-deploy osd create --data /dev/sdb ceph-node02
[root@ceph-manager ceph-cluster]$ ceph-deploy osd create --data /dev/sdb ceph-node03

2.3 安装dashboard

1
2
3
4
5
6
7
8
9
10
11
12
13
# 在所有的mgr节点上单独安装
[root@ceph-node01 ~]# yum install -y ceph-mgr-dashboard
# 启用dashboard
[root@ceph-node01 ~]# ceph mgr module enable dashboard
# 默认启用SSL/TLS,所以需要创建自签名根证书
[root@ceph-node01 ~]# ceph dashboard create-self-signed-cert
# 创建具有管理员角色的用户名及密码
[root@ceph-node01 ~]# ceph dashboard ac-user-create admin 123456 administrator
# 查看服务访问方式
[root@ceph-node01 ~]# ceph mgr services
{
    "dashboard": "https://ceph-node01:8443/"
}

2.4 查看运行结果

2.4.1 命令行方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@ceph-node01 ~]# ceph health
HEALTH_OK
[root@ceph-node01 ~]# ceph -s
  cluster:
    id:     55355315-f0b4-4901-9691-f7d23e9379d6
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum ceph-node01 (age 40m)
    mgr: ceph-node01(active, since 35m)
    osd: 3 osds: 3 up (since 39m), 3 in (since 39m)

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 57 GiB / 60 GiB avail
    pgs:

2.4.2 Dashboard方式

Ceph介绍-安装部署(一)

2.5 参考资料

https://ceph.io/

http://docs.ceph.org.cn/

https://www.cnblogs.com/lianshuiwuyi/p/11345083.html

https://blog.csdn.net/qq_25934401/article/details/89341926

https://www.cnblogs.com/passzhang/p/12179816.html

weinxin
我的微信
如果有技术上的问题可以扫一扫我的微信