意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

部署Ceph分布式高可用集群中篇

来源:恒创科技 编辑:恒创科技编辑部
2024-02-03 10:10:59
前言

​​如何快速部署Ceph分布式高可用集群​​

​​Ceph分布式存储底层实现原理​​

上文介绍了ceph的原理以及ceph的部署(部署了一个mon角色)
本文继续介绍下ceph的部署
部署OSD

​查看磁盘使用情况​


部署Ceph分布式高可用集群中篇

部署Ceph分布式高可用集群中篇_高可用

部署osd需要一个裸设备磁盘
分别给3台虚拟机挂载一个10G的裸磁盘设备

​添加方式(by图形界面操作方式)​

部署Ceph分布式高可用集群中篇_重启_02部署Ceph分布式高可用集群中篇_重启_03

​查看磁盘fdisk -l​

部署Ceph分布式高可用集群中篇_数据_04

​将/dev/sdb磁盘加入集群​

ceph-deploy osd create cephnode-01 --data /dev/sdb
ceph-deploy osd create cephnode-02 --data /dev/sdb
ceph-deploy osd create cephnode-03 --data /dev/sdb

部署Ceph分布式高可用集群中篇_重启_05

​查看集群osd状态​

ceph -s

部署Ceph分布式高可用集群中篇_数据_06

​查看osd列表 ceph osd tree​

部署Ceph分布式高可用集群中篇_数据_07

​安装manager节点​

ceph-deploy mgr create cephnode-01

部署Ceph分布式高可用集群中篇_数据_08

资源池Pool管理

​如何向Ceph中存储数据​

部署Ceph分布式高可用集群中篇_高可用_09

需要在 Ceph 中定义一个 pool 资源池
pool 是Ceph中存储object对象抽象概念
可以将其理解为 Ceph 存储上划分的逻辑分区
pool 由多个 pg 组成
而 pg 通过 CRUSH 算法映射到不同的OSD上
同时pool可以设置副本size大小,默认副本数量为3

部署Ceph分布式高可用集群中篇_高可用_10

Ceph客户端向 monitor 请求集群的状态
并向 pool 中写入数据
根据 PGs 的数量 通过CRUSH 算法将其映射到不同的 OSD 节点上 实现数据的存储
可以把 pool 理解为存储object数据的逻辑单元

​创建一个 pool 资源池​

其名字为 z0ukun,PGs 数量设置为 64
设置 PGs 的同时还需要设置 PGP(通常PGs和PGP的值是相同的)

cd ceph-admin
ceph osd pool create z0ukun 64 64

​查看集群 pool 信息​

ceph osd lspools

部署Ceph分布式高可用集群中篇_高可用_11

​查看资源池副本的数量​

默认创建的资源池包含3个副本
ceph osd pool get z0ukun size

部署Ceph分布式高可用集群中篇_重启_12

​查看PGs和PGP数量​

ceph osd pool get z0ukun pg_num
ceph osd pool get z0ukun pgp_num

​调整 pool 副本数量为2​

ceph osd pool set z0ukun size 2

​调整pg_num和pgp_num​

ceph osd pool set z0ukun pg_num 128
ceph osd pool set z0ukun pgp_num 128

如果在生产环境中调整 pool 的参数可能会涉及到数据的迁移,因此调整时候需要重点评估再做调整

Ceph Monitor 扩容
此时Ceph集群的monitor是单点
一旦cephnode-01出现故障
整个集群将处于不可用的状态
因此需要部署monitor的高可用
由于monitor使用Paxos算法
因此需要确保集群有2n+1个节点才能保障集群能够正常参与仲裁选举
将cephnode-02和cephnode-03也当作是monitor节点加入到集群中来

​扩容monitor节点​

ceph-deploy mon add cephnode-02
ceph-deploy mon add cephnode-03

部署Ceph分布式高可用集群中篇_数据_13

​查看当前集群仲裁选举的情况​

ceph quorum_status --format json-pretty

部署Ceph分布式高可用集群中篇_数据_14

​查看集群状态​

部署Ceph分布式高可用集群中篇_数据_15

health: HEALTH_WARN
mons are allowing insecure global_id reclaim
clock skew detected on mon.cephnode-02

这是集群时间不同步导致的

​修改ceph配置中的时间偏差阈值​

1、vim /etc/ceph/ceph.conf 

在global下面添加

mon clock drift allowed = 2
mon clock drift warn backoff = 30

2、同步到其他节点
ceph-deploy --overwrite-conf config push cephnode-02
ceph-deploy --overwrite-conf config push cephnode-03

3、每个节点重启mon
systemctl restart ceph-mon.target

部署Ceph分布式高可用集群中篇_重启_16

​查看集群中monitor的状态​

ceph mon dump

部署Ceph分布式高可用集群中篇_高可用_17

Ceph monitor扩容后
还需要修改部署节点的 ceph.conf 文件
然后将配置分发到集群中的所有节点
避免配置不一致

部署Ceph分布式高可用集群中篇_高可用_18

将配置文件拷贝到集群中的三个节点cephnode-01,cephnode-02和cephnode-03
scp /etc/ceph/ceph.conf cephnode-02:/etc/ceph/ceph.conf
scp /etc/ceph/ceph.conf cephnode-03:/etc/ceph/ceph.conf

部署Ceph分布式高可用集群中篇_重启_19

至此,monitor扩容完毕,生产中一般部署3个或者5个节点的Monitor,确保集群高可用状态

Ceph OSD 扩容
随着集群资源的不断增长
Ceph集群的空间可能会存在不够用的情况
因此需要对集群进行扩容

扩容通常包含两种:横向扩容和纵向扩容

横向扩容即增加台机器
纵向扩容即在单个节点上添加更多的OSD存储 以满足数据增长的需求

添加OSD的时候由于集群的状态(cluster map)已发生了改变
因此会涉及到数据的重分布(rebalancing)
即 pool 的PGs数量是固定的
需要将PGs数平均的分摊到多个OSD节点上

​将2个OSD扩容至3个OSD​

部署Ceph分布式高可用集群中篇_重启_20

扩容后
Ceph集群的OSD map发生改变
需要将PGs移动至其他的节点上

​再给每个节点添加一个磁盘​

部署Ceph分布式高可用集群中篇_数据_21

​添加 cephnode-01节点和 cephnode-02 节点的 /dev/sdc 磁盘​

ceph-deploy --overwrite-conf osd create cephnode-01 --data /dev/sdc

ceph-deploy --overwrite-conf osd create cephnode-02 --data /dev/sdc
添加OSD中会涉及到PGs的迁移
由于此时集群并没有数据
因此health的状态很快就变成OK
在生产中添加节点则会涉及到大量的数据的迁移

部署Ceph分布式高可用集群中篇_重启_22

​查看集群状态​

部署Ceph分布式高可用集群中篇_重启_23

这里也可以看到数据迁移的进度

部署Ceph分布式高可用集群中篇_重启_24

​安装vm环境补充​

设置固定IP
vm centos安装好之后
发现没有IP 则设置固定IP

部署Ceph分布式高可用集群中篇_数据_25

vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

部署Ceph分布式高可用集群中篇_数据_26

# 类型为网卡类型
TYPE=Ethernet
# 设置网关 为NAT网卡设置的网关
GATEWAY=192.168.168.2
# yes为实时生效
NM_CONTROLLED=yes
# 设置固定IP
BOOTPROTO=static
# 设置虚拟IP(需要在设置的子网网段内)
IPADDR=192.168.168.160

​重启网络&查看IP​

部署Ceph分布式高可用集群中篇_高可用_27

如果不能解析域名 则需要配置DNS
vi /etc/resolv.conf

nameserver 114.114.114.114 #添加DNS
nameserver 8.8.8.8


上一篇: Ceph分布式存储底层实现原理 下一篇: 手机怎么远程登录云服务器?