如何快速部署Ceph分布式高可用集群
Ceph分布式存储底层实现原理
上文介绍了ceph的原理以及ceph的部署(部署了一个mon角色)部署OSD
本文继续介绍下ceph的部署
查看磁盘使用情况
部署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环境补充
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
vi /etc/resolv.conf
nameserver 114.114.114.114 #添加DNS
nameserver 8.8.8.8