前言

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

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

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

部署OSD

查看磁盘使用情况


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

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



查看磁盘fdisk -l


将/dev/sdb磁盘加入集群

ceph-deploy osd create cephnode-01 --data /dev/sdbceph-deploy osd create cephnode-02 --data /dev/sdbceph-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-adminceph 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_numceph 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 128ceph 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-02ceph-deploy mon add cephnode-03

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

ceph quorum_status --format json-pretty

查看集群状态


health: HEALTH_WARNmons are allowing insecure global_id reclaimclock skew detected on mon.cephnode-02

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

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

1、vim /etc/ceph/ceph.conf 

在global下面添加

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

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

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

查看集群中monitor的状态

ceph mon dump

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

将配置文件拷贝到集群中的三个节点cephnode-01,cephnode-02和cephnode-03scp /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# 设置固定IPBOOTPROTO=static# 设置虚拟IP(需要在设置的子网网段内)IPADDR=192.168.168.160

重启网络&查看IP


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

nameserver 114.114.114.114            #添加DNSnameserver 8.8.8.8

部署Ceph分布式高可用集群中篇相关推荐

  1. 2021-11-10如何快速部署Ceph分布式高可用集群

    基础概念 目前Ceph官方提供三种部署Ceph集群的方法,分别是ceph-deploy,cephadm和手动安装 ceph-deploy 一个集群自动化部署工具,使用较久,成熟稳定,被很多自动化工具所 ...

  2. Centos 7 部署 OpenStack_Rocky版高可用集群3-1

    Centos 7 部署 OpenStack_Rocky版高可用集群3-1 文章目录 Centos 7 部署 OpenStack_Rocky版高可用集群3-1 1.前期准备 1.1 软硬件准备 1.1. ...

  3. docker 如何加入kubernetes_使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群...

    什么是 Kind Kind(Kubernetes in Docker) 是一个Kubernetes孵化项目,Kind是一套开箱即用的Kubernetes环境搭建方案.顾名思义,就是将Kubernete ...

  4. Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群

    Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群 前言 建议 官方译文 什么是 Sentinel? Sentinel 优点 Redis 配置文件 maste ...

  5. k8s 手动恢复redis 集群_二进制手动部署k8s-1.14高可用集群(二、集群部署)

    1. CA证书(任意节点) 1.1 安装cfssl cfssl是非常好用的CA工具,我们用它来生成证书和秘钥文件 安装过程比较简单,如下: # 下载 $ mkdir -p ~/bin $ wget h ...

  6. Java后台架构-分布式-高可用-集群-负载均衡-正向代理和反向代理

    双 11 即将来临,本文以设计淘宝网的后台架构为例,介绍从一百个并发到千万级并发情况下服务端的架构的14次演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知. 文章最 ...

  7. Kubernetes 部署一套高可用集群(二进制,v1.18)上

    生产环境K8S平台规划 服务器硬件配置推荐 官方提供三种部署方式 为Etcd和APISever自签SSL证书 Etcd数据库集群署 部署Master组件 部署Node组件 部署K8S集群网络 部署集群 ...

  8. Memcache 分布式高可用集群介绍

    分布式缓存需考虑如下三点: 1.缓存本身的水平线性扩展的问题. 2.缓存大病罚下的本身性能问题. 3.避免缓存的单点鼓掌问题. 分布式缓存存在的问题: 1.内存本身的管理问题.内存的分配,管理和回收机 ...

  9. kubeadm部署k8s1.9高可用集群--1集群概述

    前言 k8s部署的方式多种多样,除去各家云厂商提供的工具,在bare metal中,也有二进制部署和一系列的自动化部署工具(kubeadm,kubespary,rke等).具体二进制部署大家可以参考宋 ...

最新文章

  1. not syncing : corrupted stack end detected inside scheduler解决办法 以及高版本的激活码!
  2. java执行顺序_java执行顺序
  3. tomcat7 内存溢出 java.lang.OutOfMemoryError: Java heap space
  4. python基本使用-Python 基本用法
  5. python爬虫项目-33个Python爬虫项目实战(推荐)
  6. Android 功耗(8)---如何找到阻止进入deep idle / SODI的元凶
  7. SPOJ DQUERY 求区间内不同数的个数 主席树
  8. python编程:从入门到实践学习笔记-文件和异常
  9. mysql 临时表循环_在游标循环中查询临时表可以,但是结束循环后就无法查询了。...
  10. linux内核主频,Linux 内核时钟频率对系统性能影响
  11. 《我的互联网方法论》读书笔记
  12. 用python做个网络爬虫
  13. 【169天】黑马程序员27天视频学习笔记【Day08-上】
  14. 卸载联想硬盘保护系统
  15. c# vs2019 AForge简单使用
  16. 机器人协同工作,RobotArt是怎么做到的呢?
  17. 关于音频采样率,音频帧率,每次采集多少字节的理解
  18. CSS 控制边框样式
  19. html图片要存在哪里,将html中的图片和html保存在一个文件里
  20. nginx php spawn-fcgi,搭建CentOS+NGINX+Spawn-fcgi+CPP开发环境

热门文章

  1. python爬虫模拟浏览器的两种方法_python爬虫模拟浏览器访问-User-Agent过程解析
  2. MySQL数据库中的Date,DateTime,int,TimeStamp和Time类型的对比
  3. 日本研发高精度诊疗感应器,或颠覆疾病诊疗
  4. 被除数、除数、商、余数的正负号规律二
  5. 线性表11|单链表小结:腾讯面试题 - 数据结构和算法16
  6. Ontology与OO作为一种需求分析或软件构建方法的存在意义
  7. Large Memory Footprints on AIX
  8. 创业,“玩”的就是心态
  9. 一个失败的创意:GPGPU纹理化通用加速kD树的实现
  10. Protocol Buffers 学习(6):文件 | 字段选项介绍