从传统运维到云运维演进历程之软件定义存储(五)中

简介:

上篇文章主要讲了常见的几种数据保护方式,本文我们主要讲下Ceph有哪些常见的灾备设计方式。Ceph在灾备方面有三大神兵利器:故障域、RBD异地灾备、RGW异地灾备。

关卡五:Ceph灾备神兵利器-故障域

重要度:五颗星

转眼六篇文章过去了,还记得大明湖畔(本系列一)的运维小哥吗?勿忘初心,咱们还是回到最初的运维小哥,运维小哥经历了硬件选型、部署、调优、测试的一系列转型的关卡,终于就要到最后的上线了。但是往往在生产环境的要求都是无单点、高可用的架构设计,避免出现灾难故障影响业务正常运行。运维小哥最初的梦想搭建一个Ceph存储集群,对接云服务,底层存储实现高可用的数据访问架构。在正式上线之前,需要将集群架构部署好,并对存储集群进行服务器断电、机架断电等数据高可用测试,这时候就需要Ceph灾备神器【故障域】。现有24台服务器,用于搭建Ceph存储集群。

根据存储管理平台的需求和集群规模,需要实现:

将物理环境按高可用的拓扑架构规划好,并且完成存储集群部署。实现存储资源的统一管理,在降低存储管理难度的同时,提高管理效率;通过软件定义存储保证存储数据的高可用,从而经济地利用存储资源提高业务连续性;

根据现有物理资源规格及配置,在保证最大安全性及空间利用率的情况下合理规划存储资源池。将24台服务器分别规划在3个机架上,每个机架8台服务器,每个机架设置为一个故障域,创建一个3副本存储资源池,数据副本自动分布到不同故障域中,也是分布在不同机架上,保障数据安全。可以为机架、服务器、硬盘提供故障恢复能力。无论磁盘、服务器发生硬件故障,甚至整个机架发生故障,也不会造成停机或数据丢失。这与Ceph的自身设计Crush Map以及rule set有关,后面会具体讲述。

物理拓扑规划:每个机架相当于1个故障域,向每个机架分配相同数量、具有统一配置的主机。将24台服务器平均的分配到3个机架中,每个机架中8台服务器。

拓扑图

1

注:我这里说的1个机架相当于1个故障域并不代表只能这样做,要根据自己实际情况来规划故障域和Crush Map。

技术实现

Crush Map包含集群里所有存储设备的列表,和一些组织这些设备形成物理层级架构的Buckets,以及一套指定复制数据策略的规则。Buckets分不同的类型,高层级的Buckets可以聚合低层级的Buckets。比如一个典型的Bucket层级为OSD, Host, Rack, Row, Room, DC, Root。对于由这些buckets类型组成的一张Crush Map,其结构如下图所示,形成一棵树形结构。对于某种类型的Bucket,Crush算法可以将数据及其副本放置于该类型的不同的Bucket中,形成故障域。即使该故障域中有任何设备损坏,数据也是安全和可用的,从而来避免单点故障。

2

如果将Bucket跟集群物理架构映射得当的话,Crush Map可以很好的用来定位集群内的物理设备问题。比如,如果集群里有个OSD对应的硬盘坏了,可以从Crush Map中很容易的定位其物理位置,从而可以快速的进行更换。又比如,如果在Crush Map中看到一个host下面的所有OSDs全部down了,则可能的问题会出现在这个host电源断了或者是网络断了,而不会是在OSD自身身上。

Bucket除了有类型之外,还有权重。可以为最低层级的Bucket,比如OSD,定义一个权重。根据Bucket层级的树形结构,高层级的Bucket的权重则为其下面所有子树层级的权重之和。OSD上的权重代表了该OSD上存储数据的比重。如果为0,其上将不会存储任何数据。而如果一个OSD的权重为1,而另一个为2的话,第一个OSD上存储的数据量将只会有第二个OSD上数据量的一半。权重可以用来代表一个OSD对应的物理磁盘的真实容量。它还可以被用来减轻一个OSD上的负载。

具体的Crush Map操作查看官网:http://docs.ceph.com/docs/master/rados/operations/crush-map/?highlight=crushmap

 

总结

为保证存储数据的高可用,需要在前期做好集群部署规划。将同一个机架上服务器组成一个故障域,将数据副本分布存储在不同的故障域中,可以确保无论磁盘、服务器发生硬件故障,甚至整个机架出故障,也不会造成停机或数据丢失。

希望本关卡能够给予Ceph新手参考请读者见仁见智预知后事如何请期待《 架构灾备设计》。



本文转自Devin 51CTO博客,原文链接:http://blog.51cto.com/devingeng/1884396

相关文章
|
存储 运维 安全
【运维知识高级篇】一篇文章带你搞懂GitHub基础操作!(注册用户+配置ssh-key+创建项目+创建存储库+拉取代码到本地+推送新代码到Github)
【运维知识高级篇】一篇文章带你搞懂GitHub基础操作!(注册用户+配置ssh-key+创建项目+创建存储库+拉取代码到本地+推送新代码到Github)
375 0
|
4月前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
118 3
|
3月前
|
边缘计算 运维 Cloud Native
云原生技术的崛起:重新定义软件开发与运维
云原生技术的崛起:重新定义软件开发与运维
|
6月前
|
运维 Kubernetes 负载均衡
震惊!容器化运维竟藏如此大招,容器调度与服务编排让你的软件部署 “逆天改命”
【8月更文挑战第31天】在数字化时代,容器化技术革新了软件开发与运维方式,其高效、灵活及可移植的特点为企业应用部署提供了全新方案。容器调度与服务编排作为核心环节,通过优化资源分配、提升系统可靠性和可扩展性,实现了自动化管理。Kubernetes 等工具不仅简化了容器调度,还通过 Deployment、Service、Ingress 等资源对象实现了复杂应用架构的自动化运维,大幅提高了资源利用率和系统稳定性,减少了人工干预,加速了企业数字化转型。
84 2
|
7月前
|
存储 C++ 运维
开发与运维数组问题之指针的定义语法如何解决
开发与运维数组问题之指针的定义语法如何解决
46 6
|
7月前
|
机器学习/深度学习 人工智能 运维
自动化运维的崛起:重新定义IT管理的未来
在数字化浪潮不断推进的今天,自动化运维不再是可选项,而是提升企业竞争力的必由之路。通过深入探讨自动化运维的关键要素、实施步骤和面临的挑战,本文旨在揭示自动化技术如何革新传统的IT管理模式,并展望其在未来IT领域的应用前景。
73 1
|
7月前
|
人工智能 运维
学习若依的好地方,若依社区,好的运维,社区,也可以运营自己的社区,可以用于投放软件产品和海报展示,有空可以研究怎样运行社区,好的标题设计
学习若依的好地方,若依社区,好的运维,社区,也可以运营自己的社区,可以用于投放软件产品和海报展示,有空可以研究怎样运行社区,好的标题设计
|
7月前
|
运维 监控 大数据
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署
部署-Linux01,后端开发,运维开发,大数据开发,测试开发,后端软件,大数据系统,运维监控,测试程序,网页服务都要在Linux中进行部署
|
运维 监控 安全
软件源码开发,网络中的“摄像头”:运维监控系统
总之,监控运维系统在软件源码开发平台中有着不可或缺的作用,通过以上分析,可以看出监控运维系统不只是监控着服务器、数据库、操作系统等,还可以为软件源码开发平台运维团队提供资源管理、容量规划、日志与事件记录等作用,确保着软件源码开发平台的系统和服务的正常运行。
软件源码开发,网络中的“摄像头”:运维监控系统
|
存储 运维 对象存储
TStack运维笔记(05)- 配置共享存储
TStack运维笔记(05)- 配置共享存储
103 0