自建ceph存储集群方案之从零到一

2024-04-08 12:52

本文主要是介绍自建ceph存储集群方案之从零到一,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述

根据硬件摩尔定律,硬件成本随时间越来越低,性能较之前越来越高,尤其是随着pcie全闪灯普及,理论上作为云服务的基础设施,存储应该越来越便宜。然而,购置商用sds产品的成本却一直居高不下,越来越多的初创项目、创新企业考虑自研自用存储集群,大大降低成本。
ceph自诞生至今,经过多个版本更新维护,无数爱好者的贡献和实际生产项目的优化,目前已经相对稳定成熟,甚至是某些对接场景下分布式存储系统的最优解。
依据笔者多年实际toB、toC、toG累积近百P规模级别项目的实际经验,本文尽可能详细描述如何零开始完成自建自己的大规模存储集群,以及各个阶段的注意事项,偏向方案规划类,部分技术细节不做详细展开,项目技术合作可以私聊。

确认需求

在开始之前,首先需要确认以下几点

  • 容量需求(预估要存多少数据量)
  • 安全级别需求(副本还是纠删、rack还是host容灾)
  • 性能需求(读密集型还是io型还是冷热备)
  • 业务需求(使用块、文件、对象,大文件还是小文件)
  • 功能需求 (需要用到的ceph版本,docker cephadm还是rook ceph)
  • 项目周期(预计一步搭建部署完还是精简配置,后期扩容)
  • 成本(预算)

硬件规划阶段

硬件选型时需要格外注意,因为后期不好调整。存储服务器需要注意以下几点:

  • 支持多网卡配置(做bond和网段分离)
  • 支持较多 sata(一般3u16或者4u24均可,单节点osd数量不建议超过20)
  • 支持多个pcie槽位(根据wal、db配比,按建议比例分配预留)
  • 支持双电源冗余(按需)
  • 支持pmi/ibmc(按需)
  • 支持较大内存(一般单个osd需要预留6到10G内存空间)
  • 支持系统盘ssd raid
  • 支持硬盘点灯定位

根据实际需求,配比,规模准备硬件和上架

网络拓扑

  • 多级网络
  • 网段分离(按需,一般需要万兆cluster内网和对外public网)

上架

  • 网络测试
  • 单盘测试
  • 稳定性测试

系统部分

  • 系统安装
  • 关闭防火墙与swap部分
  • 免密配置
  • 主机名与ip规划
  • 内核参数配置
  • 硬盘jbod与raid加载(按需)
  • 常用监控运维工具(smartctl,nettools,nnmo,tmux等)

ceph部分

  • 节点角色规划
  • ceph软件安装部署
  • mon、osd、mds、rgw等组件创建
  • 定制crush(按需)
  • pool规划(tier cache、index pool、pgnum等)
  • 监控相关(ssd寿命,Prometheus,dashboard,snmp告警等)
  • nginx与ha配置
  • 访问测试
  • 可靠性测试
  • 稳定性测试
  • io压力测试
  • 参数调优

业务部分

  • 对象(policy、acl、cors、lifecycle、version等)
  • 块(卷特性,clone等)
  • 文件 (多活、热备、绑目录等)

后续运维

  • 日常运维培训
  • 常见问题FAQ
  • 定期巡检报告

项目验收

这篇关于自建ceph存储集群方案之从零到一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/885641

相关文章

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

MySQL中闪回功能的方案讨论及实现

《MySQL中闪回功能的方案讨论及实现》Oracle有一个闪回(flashback)功能,能够用户恢复误操作的数据,这篇文章主要来和大家讨论一下MySQL中支持闪回功能的方案,有需要的可以了解下... 目录1、 闪回的目标2、 无米无炊一3、 无米无炊二4、 演示5、小结oracle有一个闪回(flashb

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Java实现数据库图片上传与存储功能

《Java实现数据库图片上传与存储功能》在现代的Web开发中,上传图片并将其存储在数据库中是常见的需求之一,本文将介绍如何通过Java实现图片上传,存储到数据库的完整过程,希望对大家有所帮助... 目录1. 项目结构2. 数据库表设计3. 实现图片上传功能3.1 文件上传控制器3.2 图片上传服务4. 实现

C语言中的浮点数存储详解

《C语言中的浮点数存储详解》:本文主要介绍C语言中的浮点数存储详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、首先明确一个概念2、接下来,讲解C语言中浮点型数存储的规则2.1、可以将上述公式分为两部分来看2.2、问:十进制小数0.5该如何存储?2.3 浮点