自建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

相关文章

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

在Java中将XLS转换为XLSX的实现方案

《在Java中将XLS转换为XLSX的实现方案》在本文中,我们将探讨传统ExcelXLS格式与现代XLSX格式的结构差异,并为Java开发者提供转换方案,通过了解底层原理、性能优势及实用工具,您将掌握... 目录为什么升级XLS到XLSX值得投入?实际转换过程解析推荐技术方案对比Apache POI实现编程

MySQL 存储引擎 MyISAM详解(最新推荐)

《MySQL存储引擎MyISAM详解(最新推荐)》使用MyISAM存储引擎的表占用空间很小,但是由于使用表级锁定,所以限制了读/写操作的性能,通常用于中小型的Web应用和数据仓库配置中的只读或主要... 目录mysql 5.5 之前默认的存储引擎️‍一、MyISAM 存储引擎的特性️‍二、MyISAM 的主

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失