部署 Ceph 集群详解

文章目录

  • 一、部署方式
  • 二、服务器准备
    • 2.1 OSD 服务器
    • 2.2 Mon 监视服务器
    • 2.3 ceph-mgr 管理服务器
    • 2.4 Ceph-deploy 部署服务器
    • 2.5 服务器环境准备
    • 2.6 拓扑设计
  • 三、部署 RADOS 集群
    • 3.1 配置 yum 仓库
    • 3.2 创建 ceph 普通用户
    • 3.3 配置主机名解析
    • 3.4 配置参数优化
    • 3.5 在 ceph-deploy 安装 ceph 部署工具
    • 3.6 初始化 mon 节点
    • 3.7 初始化 ceph 存储节点
    • 3.8 配置 mon 节点并收集秘钥
    • 3.9 验证 mon 节点
    • 3.10 向 ceph 存储节点分发 admin 秘钥
    • 3.11 ceph 存储节点验证秘钥
    • 3.12 部署 ceph-mgr 节点
    • 3.13 验证 ceph-mgr 节点
    • 3.14 ceph-deploy 管理 ceph 集群
    • 3.15 准备 OSD 节点,擦除 OSD 节点磁盘的数据
    • 3.16 ceph 集群中添加 OSD
    • 3.17 设置 OSD 服务自启动
    • 3.18 验证 ceph 集群
    • 3.19 从 RADOS 移除 OSD
    • 3.20 添加 ceph 存储节点
  • 四、测试上传与下载数据
    • 4.1 创建 pool
    • 4.2 上传文件
    • 4.3 列出文件
    • 4.4 查看文件信息
    • 4.5 下载文件
    • 4.6 修改文件
    • 4.7 删除文件
  • 五、扩展 ceph 集群实现高可用
    • 5.1 扩展 ceph-mon 节点
    • 5.2 扩展 mgr 节点

推荐配置
部署 Ceph 集群详解_第1张图片

一、部署方式

ceph-ansible:https://github.com/ceph/ceph-ansible #python
ceph-salt:https://github.com/ceph/ceph-salt #python
ceph-container:https://github.com/ceph/ceph-container #shell
ceph-chef:https://github.com/ceph/ceph-chef #Ruby

ceph-deploy:https://github.com/ceph/ceph-deploy #python
ceph-deploy是一个 ceph 官方维护的基于 ceph-deploy 命令行部署 ceph 集群的工具,基于 ssh 执行可以 sudo 权限的 shell 命令以及一些 python 脚本 实现 ceph 集群的部署和管理维护。
Ceph-deploy 只用于部署和管理 ceph 集群,客户端需要访问 ceph,需要部署客户端工具。

二、服务器准备

服务器硬件推荐:http://docs.ceph.org.cn/start/hardware-recommendations/

2.1 OSD 服务器

三台服务器作为 ceph 集群 OSD 存储服务器,每台服务器支持两个网络,public 网络针对客户端访问,cluster 网络用于集群管理及数据同步,每台三块或以上的磁盘。

10.0.0.11/192.168.0.128
10.0.0.12/192.168.0.129
10.0.0.13/192.168.0.130

三台存储服务器磁盘划分: 
/dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf #100G 
/dev/sdg /dev/sdh /dev/sdi #200G

2.2 Mon 监视服务器

三台服务器作为 ceph 集群 Mon 监视服务器,每台服务器可以和 ceph 集群的 cluster 网络通信。

10.0.0.14/192.168.0.131 
10.0.0.15/192.168.0.132
10.0.0.16/192.168.0.133

2.3 ceph-mgr 管理服务器

两个 ceph-mgr 管理服务器,可以和 ceph 集群的 cluster 网络通信。

10.0.0.17/192.168.0.134
10.0.0.18/192.168.0.135

2.4 Ceph-deploy 部署服务器

一个服务器用于部署 ceph 集群即安装 Ceph-deploy,也可以和 ceph-mgr 等复用。

10.0.0.19/192.168.0.136

2.5 服务器环境准备

创建一个普通用户,使用户能够通过 sudo 执行特权命令
配置主机名解析,ceph 集群需要依赖于主机名
关闭各服务器防火墙、selinux

2.6 拓扑设计

部署 Ceph 集群详解_第2张图片

三、部署 RADOS 集群

中文文档:http://docs.ceph.org.cn/man/8/ceph-deploy/#id3

3.1 配置 yum 仓库

https://mirrors.aliyun.com/ceph/ #阿里云镜像仓库 http://mirrors.163.com/ceph/ #网易镜像仓库 https://mirrors.tuna.tsinghua.edu.cn/ceph/ #清华大学镜像源

所有节点配置 ceph yum 仓库

yum install https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch/ceph-release-1-1.el7.noarch.rpm

ll /etc/yum.repos.d/

所有节点配置 epel 仓库

yum install epel-release -y

sed -e 's!^metalink=!#metalink=!g' \
    -e 's!^#baseurl=!baseurl=!g' \
    -e 's!//download\.fedoraproject\.org/pub!//mirrors.tuna.tsinghua.edu.cn!g' \
    -e 's!http://mirrors!https://mirrors!g' \
    -i /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel-testing.repo

ll /etc/yum.repos.d/

yum makecache fast

3.2 创建 ceph 普通用户

推荐使用指定的普通用户部署和运行 ceph 集群,普通用户只要能以非交互方式执行 sudo 命令执行一些特权命令即可,新版的 ceph-deploy 可以指定包含 root 的在内只要可以执行 sudo 命令的用户,不过仍然推荐使用普通用户,比如 ceph、cephuser、cephadmin 这样的用户去管理 ceph 集群。

在包含 ceph-deploy 节点的存储节点、mon 节点和 mgr 节点等创建 ceph 用户。

groupadd ceph -g 2020 && useradd -u 2020 -g 2020 ceph && echo "ceph" | passwd --stdin ceph

各服务器允许 ceph 用户以 sudo 执行特权命令

vim /etc/sudoers 
root ALL=(ALL) ALL 
ceph ALL=(ALL) NOPASSWD: ALL
#或者
echo "ceph ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 

配置免秘钥登录,在 ceph-deploy 节点配置允许以非交互的方式登录到各 ceph node/mon/mgr 节点,即在 ceph-deployment 节点生成秘钥对,然后分发公钥到各被管理节点。

su - ceph
ssh-keygen 
ssh-copy-id [email protected] 
ssh-copy-id [email protected] 
ssh-copy-id [email protected] 
ssh-copy-id [email protected] 
ssh-copy-id [email protected] 
ssh-copy-id [email protected] 
ssh-copy-id [email protected] 
ssh-copy-id [email protected]

3.3 配置主机名解析

在各个主机配置主机名

hostnamectl set-hostname 主机名

在各个主机配置主机名解析

vim /etc/hosts
10.0.0.11 ceph-node1.lck.local ceph-node1 
10.0.0.12 ceph-node2.lck.local ceph-node2 
10.0.0.13 ceph-node3.lck.local ceph-node3 
10.0.0.14 ceph-mon1.lck.local ceph-mon1 
10.0.0.15 ceph-mon2.lck.local ceph-mon2 
10.0.0.16 ceph-mon3.lck.local ceph-mon3 
10.0.0.17 ceph-mgr1.lck.local ceph-mgr1 
10.0.0.18 ceph-mgr2.lck.local ceph-mgr2 
10.0.0.19 ceph-deploy.lck.local ceph-deploy

3.4 配置参数优化

vim /etc/security/limits.conf
root     soft   core     unlimited
root     hard   core     unlimited
root     soft   nproc    1000000
root     hard   nproc    1000000
root     soft   nofile   1000000
root     hard   nofile   1000000
root     soft   memlock  32000
root     hard   memlock  32000
root     soft   msgqueue 8192000
root     hard   msgqueue 8192000

3.5 在 ceph-deploy 安装 ceph 部署工具

sudo yum install -y ceph-deploy python-setuptools python2-subprocess3

ceph-deploy 使用帮助

ceph-deploy --help
new:开始部署一个新的 ceph 存储集群,并生成 CLUSTER.conf 集群配置文件和 keyring 认证文件。 
install: 在远程主机上安装 ceph 相关的软件包, 可以通过--release 指定安装的版本。 
rgw:管理 RGW 守护程序(RADOSGW,对象存储网关)。 
mgr:管理 MGR 守护程序(ceph-mgr,Ceph Manager DaemonCeph 管理器守护程序)。 
mds:管理 MDS 守护程序(Ceph Metadata Server,ceph 源数据服务器)。 
mon:管理 MON 守护程序(ceph-mon,ceph 监视器)。 
gatherkeys:从指定获取提供新节点的验证 keys,这些 keys 会在添加新的 MON/OSD/MDS 加入的时候使用。 
disk:管理远程主机磁盘。 
osd:在远程主机准备数据磁盘,即将指定远程主机的指定磁盘添加到 ceph 集群作为 osd 使用。
repo:远程主机仓库管理。 
admin:推送 ceph 集群配置文件和 client.admin 认证文件到远程主机。 
config:将 ceph.conf 配置文件推送到远程主机或从远程主机拷贝。 
uninstall:从远端主机删除安装包。 
purgedata:从/var/lib/ceph 删除 ceph 数据,会删除/etc/ceph 下的内容。 
purge: 删除远端主机的安装包和所有数据。 
forgetkeys:从本地主机删除所有的验证 keyring, 包括 client.admin, monitor, bootstrap 等认证文件。 
pkg:管理远端主机的安装包。 
calamari:安装并配置一个 calamari web 节点,calamari 是一个 web 监控平台。

3.6 初始化 mon 节点

[ceph@ceph-deploy ~]$ mkdir ceph-cluster    #用于保存当前集群的初始化配置信息 
[ceph@ceph-deploy ~]$ cd ceph-cluster/

[ceph@ceph-deploy ceph-cluster]$ ceph-deploy new --cluster-network 192.168.0.0/24 --public-network 10.0.0.0/24 ceph-mon1.lck.local

验证初始化完成之后,是否生成配置文件

[ceph@ceph-deploy ceph-cluster]$ ll
total 12
-rw-rw-r-- 1 ceph ceph  258 Aug  8 20:52 ceph.conf
-rw-rw-r-- 1 ceph ceph 4086 Aug  8 20:52 ceph-deploy-ceph.log
-rw------- 1 ceph ceph   73 Aug  8 20:52 ceph.mon.keyring
[ceph@ceph-deploy ceph-cluster]$ cat ceph.conf
[global]
fsid = 245d70b6-c729-447a-b336-9f428a358eec
public_network = 10.0.0.0/24
cluster_network = 192.168.0.0/24
mon_initial_members = ceph-mon1
mon_host = 10.0.0.14
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

3.7 初始化 ceph 存储节点

[ceph@ceph-deploy ceph-cluster]$ ceph-deploy install --no-adjust-repos --nogpgcheck ceph-node1 ceph-node2 ceph-node3

部署 Ceph 集群详解_第3张图片

3.8 配置 mon 节点并收集秘钥

在三个 mon 节点安装 ceph-mon

yum install ceph-mon -y

在部署服务器 ceph-deploy 通过读取当前目录下的 ceph.conf 配置文件初始化 mon 节点,mon 节点 ha 还可以后期横向扩容。

[ceph@ceph-deploy ceph-cluster]$ ceph-deploy mon create-initial

部署 Ceph 集群详解_第4张图片
生成keyring文件,这些文件主要是后期用来初始化这个节点的文件

[ceph@ceph-deploy ceph-cluster]$ ll
total 476
-rw------- 1 ceph ceph    113 Aug  8 21:50 ceph.bootstrap-mds.keyring
-rw------- 1 ceph ceph    113 Aug  8 21:50 ceph.bootstrap-mgr.keyring
-rw------- 1 ceph ceph    113 Aug  8 21:50 ceph.bootstrap-osd.keyring
-rw------- 1 ceph ceph    113 Aug  8 21:50 ceph.bootstrap-rgw.keyring
-rw------- 1 ceph ceph    151 Aug  8 21:50 ceph.client.admin.keyring
-rw-rw-r-- 1 ceph ceph    258 Aug  8 20:52 ceph.conf
-rw-rw-r-- 1 ceph ceph 244069 Aug  8 21:50 ceph-deploy-ceph.log
-rw------- 1 ceph ceph     73 Aug  8 20:52 ceph.mon.keyring

3.9 验证 mon 节点

验证在指定节点已经自动配置并启动了 ceph-mon 服务,并且 ceph-deploy 节点在初始化当前目录会生成一些 bootstrap ceph mds/mgr/osd/rgw 的 keyring 认证文件,这些初始化文件拥有对 ceph 集群的最高权限,所以一定要保存好。

[root@ceph-mon1 ~]# ps -ef | grep ceph-mon
ceph       1895      1  0 21:50 ?        00:00:00 /usr/bin/ceph-mon -f --cluster ceph --id ceph-mon1 --setuser ceph --setgroup ceph
root       2181   1454  0 21:55 pts/0    00:00:00 grep --color=auto ceph-mon

也会把 ceph-deploy 节点的配置文件同步到 mon 的配置文件。

[root@ceph-mon1 ~]# cat /etc/ceph/ceph.conf
[global]
fsid = 245d70b6-c729-447a-b336-9f428a358eec
public_network = 10.0.0.0/24
cluster_network = 192.168.0.0/24
mon_initial_members = ceph-mon1
mon_host = 10.0.0.14
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

3.10 向 ceph 存储节点分发 admin 秘钥

在 ceph-deploy 节点把配置文件和 admin 密钥拷贝至 Ceph 集群需要执行 ceph 管理命令的节点,从而不需要后期通过 ceph 命令访问与对 ceph 集群进行管理配置的时候每次都需要指定 ceph-mon 节点地址和 ceph.client.admin.keyring 文件。

把 ceph 集群配置文件(ceph.conf)和 client.admin 认证文件(ceph.client.admin.keyring)到推送到 ceph-node1 ceph-node2 ceph-node3 三个节点。

[ceph@ceph-deploy ceph-cluster]$ ceph-deploy admin ceph-node1 ceph-node2 ceph-node3

部署 Ceph 集群详解_第5张图片

3.11 ceph 存储节点验证秘钥

[root@ceph-node1 ~]# ll /etc/ceph/
total 12
-rw------- 1 root root 151 Aug  8 22:09 ceph.client.admin.keyring
-rw-r--r-- 1 root root 258 Aug  8 22:09 ceph.conf
-rw-r--r-- 1 root root  92 Apr 24  2020 rbdmap
-rw------- 1 root root   0 Aug  8 22:09 tmpgIZUHs

认证文件的属主和属组为了安全考虑,默认设置为了 root 用户和 root 组,
如果需要 ceph 用 户也能执行 ceph 命令,那么就需要对 ceph 用户进行授权。
三台 ceph 存储节点都要执行。

[root@ceph-node1 ~]# setfacl -m u:ceph:rw /etc/ceph/ceph.client.admin.keyring
[root@ceph-node2 ~]# setfacl -m u:ceph:rw /etc/ceph/ceph.client.admin.keyring
[root@ceph-node3 ~]# setfacl -m u:ceph:rw /etc/ceph/ceph.client.admin.keyring

验证 ceph 存储节点的 ceph 用户是否有权限执行 ceph 管理命令

[ceph@ceph-node1 ~]$ ceph -s
  cluster:
    id:     245d70b6-c729-447a-b336-9f428a358eec
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum ceph-mon1
    mgr: no daemons active
    osd: 0 osds: 0 up, 0 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:

3.12 部署 ceph-mgr 节点

在所有 ceph-mgr 节点安装 ceph-mgr

[root@ceph-mgr1 ~]# yum install ceph-mgr -y

初始化 ceph-mgr 节点

[ceph@ceph-deploy ceph-cluster]$ ceph-deploy mgr create ceph-mgr1

部署 Ceph 集群详解_第6张图片

3.13 验证 ceph-mgr 节点

在 ceph-mgr 节点验证进程是否起来

[root@ceph-mgr1 ~]# ps -ef | grep ceph
root       1877      1  0 22:22 ?        00:00:00 /usr/bin/python2.7 /usr/bin/ceph-crash
ceph       1982      1  0 22:28 ?        00:00:00 /usr/bin/ceph-mgr -f --cluster ceph --id ceph-mgr1 --setuser ceph --setgroup ceph
root       2062   1458  0 22:29 pts/0    00:00:00 grep --color=auto ceph

在 ceph 存储节点查看 ceph-mgr1 是否为active

[ceph@ceph-node1 ~]$ ceph -s
  cluster:
    id:     245d70b6-c729-447a-b336-9f428a358eec
    health: HEALTH_WARN    #OSD小于3个会报警;每个OSD的PG小于一定数量会报警
            OSD count 0 < osd_pool_default_size 3

  services:
    mon: 1 daemons, quorum ceph-mon1
    mgr: ceph-mgr1(active)
    osd: 0 osds: 0 up, 0 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:

3.14 ceph-deploy 管理 ceph 集群

在 ceph-deploy 节点安装 ceph-common 以便统一管理集群

[ceph@ceph-deploy ceph-cluster]$ sudo yum install ceph-common -y

ceph-deploy 节点目前还不能使用 ceph 管理命令,需要推送正证书给自己

[ceph@ceph-deploy ceph-cluster]$ ceph-deploy admin ceph-deploy

认证文件的属主和属组为了安全考虑,默认设置为了 root 用户和 root 组,
如果需要 ceph 用 户也能执行 ceph 命令,那么就需要对 ceph 用户进行授权。

[ceph@ceph-deploy ceph-cluster]$ sudo setfacl -m u:ceph:rw /etc/ceph/ceph.client.admin.keyring

验证 ceph-deploy 节点的 ceph 用户是否有权限执行 ceph 管理命令

[ceph@ceph-deploy ceph-cluster]$ ceph -s
  cluster:
    id:     245d70b6-c729-447a-b336-9f428a358eec
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3

  services:
    mon: 1 daemons, quorum ceph-mon1
    mgr: ceph-mgr1(active)
    osd: 0 osds: 0 up, 0 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:

3.15 准备 OSD 节点,擦除 OSD 节点磁盘的数据

列出 ceph node 节点的所有磁盘

[ceph@ceph-deploy ceph-cluster]$ ceph-deploy disk list ceph-node1

部署 Ceph 集群详解_第7张图片
在 ceph-deploy 节点使用 ceph-deploy disk zap 擦除各 ceph node 的 ceph 数据磁盘

ceph-deploy disk zap ceph-node1 /dev/sdb 
ceph-deploy disk zap ceph-node1 /dev/sdc 
ceph-deploy disk zap ceph-node1 /dev/sdd 

ceph-deploy disk zap ceph-node2 /dev/sdb 
ceph-deploy disk zap ceph-node2 /dev/sdc 
ceph-deploy disk zap ceph-node2 /dev/sdd 

ceph-deploy disk zap ceph-node3 /dev/sdb 
ceph-deploy disk zap ceph-node3 /dev/sdc 
ceph-deploy disk zap ceph-node3 /dev/sdd

擦除成功的截图
部署 Ceph 集群详解_第8张图片

3.16 ceph 集群中添加 OSD

数据分类保存方式:
Data:即 ceph 保存的对象数据
Block: rocks DB 数据即元数据
Block-wal:数据库的 wal 日志

可以将这三类数据分开保存在不同磁盘上,也可以保存在同一块磁盘上。
部署 Ceph 集群详解_第9张图片

#命令示例:
ceph-deploy osd create {node} --data /path/to/data --block-db /path/to/db-device 
ceph-deploy osd create {node} --data /path/to/data --block-wal /path/to/wal-device 
ceph-deploy osd create {node} --data /path/to/data --block-db /path/to/db-device --block-wal /path/to/wal-device

在 ceph-deploy 节点添加 OSD,并记录下 osd ID 。

ceph-deploy osd create ceph-node1 --data /dev/sdb    #osd ID:0
ceph-deploy osd create ceph-node1 --data /dev/sdc    #osd ID:1
ceph-deploy osd create ceph-node1 --data /dev/sdd    #osd ID:2

ceph-deploy osd create ceph-node2 --data /dev/sdb    #osd ID:3
ceph-deploy osd create ceph-node2 --data /dev/sdc    #osd ID:4
ceph-deploy osd create ceph-node2 --data /dev/sdd    #osd ID:5

ceph-deploy osd create ceph-node3 --data /dev/sdb    #osd ID:6
ceph-deploy osd create ceph-node3 --data /dev/sdc    #osd ID:7
ceph-deploy osd create ceph-node3 --data /dev/sdd    #osd ID:8

在 ceph-node 节点查看 OSD 服务是否启动

[ceph@ceph-node1 ~]$ ps -ef | grep osd
ceph        3702       1  0 00:04 ?        00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph
ceph        4189       1  0 00:05 ?        00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 1 --setuser ceph --setgroup ceph
ceph        4673       1  0 00:06 ?        00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 2 --setuser ceph --setgroup ceph
ceph        4818    2759  0 00:11 pts/0    00:00:00 grep --color=auto osd

3.17 设置 OSD 服务自启动

[root@ceph-node1 ~]# systemctl enable ceph-osd@0 ceph-osd@1 ceph-osd@2
[root@ceph-node2 ~]# systemctl enable ceph-osd@3 ceph-osd@4 ceph-osd@5
[root@ceph-node3 ~]# systemctl enable ceph-osd@6 ceph-osd@7 ceph-osd@8

3.18 验证 ceph 集群

[ceph@ceph-deploy ceph-cluster]$ ceph health
HEALTH_OK
[ceph@ceph-deploy ceph-cluster]$ ceph -s
  cluster:
    id:     245d70b6-c729-447a-b336-9f428a358eec
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum ceph-mon1
    mgr: ceph-mgr1(active)
    osd: 9 osds: 9 up, 9 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   9.0 GiB used, 891 GiB / 900 GiB avail
    pgs:

3.19 从 RADOS 移除 OSD

Ceph 集群中的一个 OSD 是一个 node 节点的服务进程且对应于一个物理磁盘设备,是一个专用的守护进程。在某 OSD 设备出现故障,或管理员出于管理之需确实要移除特定的 OSD 设备时,需要先停止相关的守护进程,而后再进行移除操作。对于 Luminous 及其之后的版本来说,停止和移除命令的格式分别如下所示

1. 停用设备:ceph osd out {osd-num}     #在 ceph-deploy 节点执行
2. 停止进程:sudo systemctl stop ceph-osd@{osd-num}      #在 ceph-node 节点执行
3. 移除设备:ceph osd purge {id} --yes-i-really-mean-it     #在 ceph-deploy 节点执行

若类似如下的 OSD 的配置信息存在于 ceph.conf 配置文件中,管理员在删除 OSD 之后手动将其删除。
不过,对于 Luminous 之前的版本来说,管理员需要依次手动执行如下步骤删除 OSD 设备。

1. 于 CRUSH 运行图中移除设备:ceph osd crush remove {name} 
2. 移除 OSD 的认证 key:ceph auth del osd.{osd-num} 
3. 最后移除 OSD 设备:ceph osd rm {osd-num}

3.20 添加 ceph 存储节点

步骤 1-5 是添加 ceph-node 节点
步骤 6-8 是添加 OSD 磁盘

  1. 配置ceph仓库、epel仓库,参考3.1
  2. 创建用户,参考3.2
  3. 配置主机名解析,参考3.3
  4. 初始化 ceph-node 节点,参考3.7
  5. 向 ceph-node 分发 admin 密钥,参考3.10,1.11
  6. 擦除 ceph-node 磁盘数据,参考3.15
  7. ceph 集群中添加 OSD,参考3.16
  8. 设置 OSD 服务自启动,参考3.17

四、测试上传与下载数据

存取数据时,客户端必须首先连接至 RADOS 集群上某存储池,然后根据对象名称由相关的 CRUSH 规则完成数据对象寻址。于是,为了测试集群的数据存取功能,这里首先创建一个用于测试的存储池 mypool,并设定其 PG 数量为 32 个。

4.1 创建 pool

创建 pool 并且命名为 mypool

[ceph@ceph-deploy ceph-cluster]$ ceph osd pool create mypool 16 16 #16个PG 和 16个PGS(PG的组合方式)
pool 'mypool' created

列出当前所有 pool,有多种查看方式

[ceph@ceph-deploy ceph-cluster]$ ceph osd lspools
1 mypool
[ceph@ceph-deploy ceph-cluster]$ ceph osd pool ls
mypool
[ceph@ceph-deploy ceph-cluster]$ rados lspools
mypool

查看 mypool 存储池的所有 osd

[ceph@ceph-deploy ceph-cluster]$ ceph osd ls 1
0
1
2
3
4
5
6
7
8

当前的 ceph 环境还没还没有部署使用块存储和文件系统使用 ceph,也没有使用对象存储的客户端,但是 ceph 的 rados 命令可以实现访问 ceph 对象存储的功能

4.2 上传文件

[ceph@ceph-deploy ceph-cluster]$ sudo rados put conf-back /etc/ceph/ceph.conf --pool=mypool #把 messages 文件上传到 mypool 并指定对象 id 为 test-msg1

4.3 列出文件

[ceph@ceph-deploy ceph-cluster]$ rados ls --pool=mypool
conf-back

4.4 查看文件信息

ceph osd map 命令可以获取到存储池中数据对象的具体位置信息。
表示文件放在了存储池为 1 的 4a91ce7a 的 PG 上,在线的 OSD 编号 7,5,0,主 OSD 为 7, 活动的 OSD 7,5,0,表示数据放在了 3 个副本,具体是 ceph 的 crush 算法计算出三份数据保 存在哪些 OSD。

[ceph@ceph-deploy ceph-cluster]$ ceph osd map mypool conf-back
osdmap e40 pool 'mypool' (1) object 'conf-back' -> pg 1.4a91ce7a (1.a) -> up ([7,5,0], p7) acting ([7,5,0], p7)

4.5 下载文件

[ceph@ceph-deploy ceph-cluster]$ sudo rados get conf-back --pool=mypool /opt/conf.txt
#验证下载的文件
[ceph@ceph-deploy ceph-cluster]$ ll /opt/
total 4
-rw-r--r-- 1 root root 258 Aug  9 01:35 conf.txt
[ceph@ceph-deploy ceph-cluster]$ cat /opt/conf.txt
[global]
fsid = 245d70b6-c729-447a-b336-9f428a358eec
public_network = 10.0.0.0/24
cluster_network = 192.168.0.0/24
mon_initial_members = ceph-mon1
mon_host = 10.0.0.14
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

4.6 修改文件

[ceph@ceph-deploy ceph-cluster]$ sudo rados put conf-back /etc/redhat-release --pool=mypool 
[ceph@ceph-deploy ceph-cluster]$ sudo rados get conf-back --pool=mypool /opt/2.txt
#验证下载文件
[ceph@ceph-deploy ceph-cluster]$ cat /opt/2.txt
CentOS Linux release 7.8.2003 (Core)

4.7 删除文件

[ceph@ceph-deploy ceph-cluster]$ sudo rados rm conf-back --pool=mypool
[ceph@ceph-deploy ceph-cluster]$ rados ls --pool=mypool

五、扩展 ceph 集群实现高可用

5.1 扩展 ceph-mon 节点

Ceph-mon 是原生具备自选举以实现高可用机制的 ceph 服务,节点数量通常是奇数。

将 mon2 加入集群

[root@ceph-mon2 ~]# yum install ceph-common ceph-mon -y
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy mon add ceph-mon2

将 mon3 加入集群

[root@ceph-mon3 ~]# yum install ceph-common ceph-mon -y
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy mon add ceph-mon3

验证 ceph-mon 状态

[ceph@ceph-deploy ceph-cluster]$ ceph quorum_status
[ceph@ceph-deploy ceph-cluster]$ ceph quorum_status --format json-pretty

部署 Ceph 集群详解_第10张图片
验证 ceph 集群状态

部署 Ceph 集群详解_第11张图片

5.2 扩展 mgr 节点

[root@ceph-mgr2 ~]# yum install ceph-mgr -y
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy mgr create ceph-mgr2 
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy admin ceph-mgr2 # 同步配置文件到 ceph-mg2 节点

验证 mgr 节点状态
部署 Ceph 集群详解_第12张图片

你可能感兴趣的:(Ceph,分布式存储,存储,ceph,运维,运维开发)