学堂 学堂 学堂公众号手机端

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

lewis 1年前 (2024-04-01) 阅读数 5 #技术
前言

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

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

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

​查看磁盘使用情况​


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

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

​查看磁盘fdisk -l​

​将/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

​查看集群osd状态​

ceph -s

​查看osd列表 ceph osd tree​

​安装manager节点​

ceph-deploy mgr create cephnode-01

资源池Pool管理

​如何向Ceph中存储数据​

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

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

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

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

​查看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 quorum_status --format json-pretty

​查看集群状态​

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

​查看集群中monitor的状态​

ceph mon dump

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

将配置文件拷贝到集群中的三个节点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

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

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

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

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

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

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

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

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

​添加 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
在生产中添加节点则会涉及到大量的数据的迁移

​查看集群状态​

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

​安装vm环境补充​

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

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

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

​重启网络&查看IP​

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

nameserver 114.114.114.114 #添加DNS
nameserver 8.8.8.8


版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门