Ceph 是一个专注于分布式的、弹性可扩展的、高可靠的、性能优异的存储系统平台,可以同时支持块设备、文件系统和对象网关三种类型的存储接口。
概览 Ceph架构如图所示。
模块说明:
模块名称
功能描述
RADOS
RADOS(Reliable Autonomic Distributed Object Store,RADOS)是Ceph存储集群的基础。Ceph中的一切都以对象的形式存储,而RADOS就负责存储这些对象,而不考虑它们的数据类型。RADOS层确保数据一致性和可靠性。对于数据一致性,它执行数据复制、故障检测和恢复,还包括数据在集群节点间的recovery。
OSD
实际存储数据的进程。通常一个OSD daemon绑定一个物理磁盘。Client write/read数据最终都会走到OSD去执行write/read操作。
MON
Monitor在Ceph集群中扮演者管理者的角色,维护了整个集群的状态,是Ceph集群中最重要的组件。MON保证集群的相关组件在同一时刻能够达成一致,相当于集群的领导层,负责收集、更新和发布集群信息。为了规避单点故障,在实际的Ceph部署环境中会部署多个MON,同样会引来多个MON之前如何协同工作的问题。
MGR
MGR目前的主要功能是一个监控系统,包含采集、存储、分析(包含报警)和可视化几部分,用于把集群的一些指标暴露给外界使用。
Librados
简化访问RADOS的一种方法,目前支持PHP、Ruby、Java、Python、C和C++语言。它提供了Ceph存储集群的一个本地接口RADOS,并且是其他服务(如RBD、RGW)的基础,此外,还为CephFS提供POSIX接口。Librados API支持直接访问RADOS,使开发者能够创建自己的接口来访问Ceph集群存储。
RBD
Ceph块设备,对外提供块存储。可以像磁盘一样被映射、格式化和挂载到服务器上。
RGW
Ceph对象网关,提供了一个兼容S3和Swift的RESTful API接口。RGW还支持多租户和OpenStack的Keystone身份验证服务。
MDS
Ceph元数据服务器,跟踪文件层次结构并存储只供CephFS使用的元数据。Ceph块设备和RADOS网关不需要元数据。MDS不直接给Client提供数据服务。
CephFS
提供了一个任意大小且兼容POSlX的分布式文件系统。CephFS依赖Ceph MDS来跟踪文件层次结构,即元数据。
部署
引用:
https://docs.ceph.com/en/latest/start/intro/
https://support.huaweicloud.com/dpmg-kunpengsdss/kunpengcephfile_04_0005.html
服务器列表
IP地址
角色
备注
172.22.3.50
Ceph节点1
主节点
172.22.3.46
Ceph节点2
172.22.3.47
Ceph节点3
172.22.3.48
Client节点1
每台服务器都单独挂了一个存储盘/dev/sdc,200G
基础环境 主机名 每台服务都需要重新配置主机名
1 2 3 4 hostnamectl --static set-hostname ceph1 hostnamectl --static set-hostname ceph2 hostnamectl --static set-hostname ceph3 hostnamectl --static set-hostname client1
hosts 1 2 3 4 172.20.3.50 ceph1 172.20.3.46 ceph2 172.20.3.47 ceph3 172.20.3.48 client1
NTP时间同步 所有节点执行
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 32 33 34 35 36 yum -y install ntp ntpdate cd /etc && mv ntp.conf ntp.conf.bakvi /etc/ntp.conf restrict 127.0.0.1 restrict ::1 restrict 172.20.3.0 mask 255.255.255.0 server 127.127.1.0 fudge 127.127.1.0 stratum 8 vi /etc/ntp.conf server 172.20.3.50 systemctl start ntpd systemctl enable ntpd systemctl status ntpd ntpdate ceph1 hwclock -w crontab -e */10 * * * * /usr/sbin/ntpdate 172.20.3.50
配置yum源 vi /etc/yum.repos.d/ceph.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 [Ceph] name=Ceph packages for $basearch baseurl=http://download.ceph.com/rpm-nautilus/el7/$basearch enabled=1 gpgcheck=1 type =rpm-mdgpgkey=https://download.ceph.com/keys/release.asc priority=1 [Ceph-noarch] name=Ceph noarch packages baseurl=http://download.ceph.com/rpm-nautilus/el7/noarch enabled=1 gpgcheck=1 type =rpm-mdgpgkey=https://download.ceph.com/keys/release.asc priority=1 [ceph-source] name=Ceph source packages baseurl=http://download.ceph.com/rpm-nautilus/el7/SRPMS enabled=1 gpgcheck=1 type =rpm-mdgpgkey=https://download.ceph.com/keys/release.asc priority=1
1 yum clean all && yum makecache
配置epel源 1 yum install epel-release -y
安装Ceph 所有节点
1 yum -y install librados2-14.2.10 ceph-14.2.10
ceph1节点安装ceph-deploy
1 yum -y install ceph-deploy
确认版本
部署MON节点 ceph1节点执行
创建集群 1 2 cd /etc/ceph ceph-deploy new ceph1 ceph2 ceph3
修改配置 在“/etc/ceph”目录下自动生成的ceph.conf文件中配置网络mon_host、public network、cluster network。
新增以下信息:
1 2 3 4 5 public_network = 172.20.3.0/24 cluster_network = 172.20.3.0/24 [mon] mon_allow_pool_delete = true
初始化监视器并收集密钥 1 ceph-deploy mon create-initial
将“ceph.client.admin.keyring”拷贝到各个节点上 1 ceph-deploy --overwrite-conf admin ceph1 ceph2 ceph3 client1
查看是否配置成功。
部署MGR节点 ceph1节点执行
部署MGR节点 1 ceph-deploy mgr create ceph1 ceph2 ceph3
查看是否配置成功。
部署OSD节点 1 2 3 4 5 6 7 8 ceph-deploy disk zap ceph1 /dev/sdc ceph-deploy osd create ceph1 --data /dev/sdc ceph-deploy disk zap ceph2 /dev/sdc ceph-deploy osd create ceph2 --data /dev/sdc ceph-deploy disk zap ceph3 /dev/sdc ceph-deploy osd create ceph3 --data /dev/sdc
配置MDS节点 MDS(Metadata Server)即元数据Server主要负责Ceph FS集群中文件和目录的管理。配置MDS节点如下:
创建MDS。在ceph1节点执行:
1 2 cd /etc/ceph ceph-deploy mds create ceph1 ceph2 ceph3
在Ceph各个节点上查看是否成功创建MDS进程。
1 ps -ef | grep ceph-mds | grep -v grep
部署RGW 1 2 3 4 5 6 7 8 ceph-deploy install --rgw --release nautilus ceph1 ceph2 ceph3 ceph4 ceph5 ceph-deploy install --rgw --release nautilus ceph4 ceph5 --repo-url http://mirrors.163.com/ceph/rpm-nautilus/el7/ --gpg-url http://mirrors.163.com/ceph/keys/release.asc ceph-deploy rgw create ceph1 ceph-deploy rgw create ceph2 ceph-deploy rgw create ceph3 ceph-deploy rgw create ceph4 ceph-deploy rgw create ceph5
创建存储池和文件系统 创建存储池 1 2 ceph osd pool create fs_data 32 32 ceph osd pool create fs_metadata 16 16
创建文件系统 1 ceph fs new cephfs fs_metadata fs_data
Ceph -s 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 cluster: id: 9d739880-b7bb-4d4e-b000-e9da551bb4dd health: HEALTH_WARN BlueStore compression broken on 3 OSD(s) services: mon: 3 daemons, quorum ceph2,ceph3,ceph1 (age 4d) mgr: ceph3(active, since 3d), standbys: ceph1, ceph2 mds: cephfs:1 {0=ceph1=up:active} 2 up:standby osd: 3 osds: 3 up (since 4d), 3 in (since 4d) rgw: 3 daemons active (ceph1, ceph2, ceph3) task status: data: pools: 7 pools, 240 pgs objects: 2.06k objects, 7.0 GiB usage: 24 GiB used, 576 GiB / 600 GiB avail pgs: 240 active+clean io: client: 85 B/s rd, 5.7 KiB/s wr, 0 op/s rd, 0 op/s wr
新增节点 服务器列表
IP地址
角色
备注
172.22.3.50
Ceph节点1
主节点
172.22.3.46
Ceph节点2
172.22.3.47
Ceph节点3
172.22.3.48
Client节点1 改为 Ceph节点4
新增
172.22.3.49
Ceph节点5
新增
每台服务器都单独挂了一个存储盘/dev/sdc,200G
操作
配置主机名
1 2 hostnamectl --static set-hostname ceph4 hostnamectl --static set-hostname ceph5
新增hosts
1 2 3 4 5 172.20.3.50 ceph1 172.20.3.46 ceph2 172.20.3.47 ceph3 172.20.3.48 ceph4 172.20.3.49 ceph5
ntp时间同步
配置yum源
配置epel源
安装ceph
同步配置
1 ceph-deploy --overwrite-conf admin ceph1 ceph2 ceph3 ceph4 ceph5
部署OSD
部署MDS
部署MGR
安装Dashboard
https://docs.ceph.com/en/latest/mgr/dashboard/#overview
yum 1 yum install -y ceph-mgr-dashboard -y
开启插件 1 2 ceph mgr module ls ceph mgr module enable dashboard
禁用SSL 1 ceph config set mgr mgr/dashboard/ssl false
配置监听地址 1 ceph config set mgr mgr/dashboard/server_addr 0.0.0.0
配置监听端口 1 ceph config set mgr mgr/dashboard/server_port 8443
创建账号 1 ceph dashboard ac-user-create admin -i izuche@2020 administrator
查看账号 1 ceph dashboard ac-user-show admin
账号相关的命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # ceph dashboard --help dashboard ac-role-add-scope-perms <rolename> <scopename> <permissions> [<permissions>...] Add the scope permissions for a role dashboard ac-role-create <rolename> {<description>} Create a new access control role dashboard ac-role-del-scope-perms <rolename> <scopename> Delete the scope permissions for a role dashboard ac-role-delete <rolename> Delete an access control role dashboard ac-role-show {<rolename>} Show role info dashboard ac-user-add-roles <username> <roles> [<roles>...] Add roles to user dashboard ac-user-create <username> {<rolename>} {<name>} {<email>} Create a user. Password read from -i <file> dashboard ac-user-del-roles <username> <roles> [<roles>...] Delete roles from user dashboard ac-user-delete <username> Delete user dashboard ac-user-set-info <username> <name> <email> Set user info dashboard ac-user-set-password <username> Set user password from -i <file> dashboard ac-user-set-roles <username> <roles> [<roles>...] Set user roles dashboard ac-user-show {<username>} Show user info dashboard create-self-signed-cert Create self signed certificate
获取dashboard的地址
1 2 3 4 { "dashboard": "http://ceph3:8443/", "prometheus": "http://ceph3:9283/" }