朱荣泽:大家下午好,我叫朱荣泽,现在给大家做一个基于Ceph的存储全家桶。这是我演讲内容的一个大纲,我站在一个云平台的建设者角度去看云平台对于处理系统是怎样的,我们怎么选择的,是需要大家对OpenStack有一些基本的了解。我首先介绍一下我们来自哪里,我们是Ucloud一个中国大的厂商,MIRANTIS是美国最专业的厂商,它跟一家合资公司叫UMCloud,UMCloud在国内专门提供一些专业的产品等等。我们先讲一下Mirantis它的最新架构怎样,这是一个最新的架构,主要分为三部分,全部是由开源云件组成,中间是云计算平台,上层是为各个用户提供了容器还有虚拟机还有裸机,裸机和虚拟机是OpenStack提供的,另外平台做的事情,OpenStack是用Mirantis部署的,大家也知道之前开发了一个开发工具,能部署三百台到五百台是没有问题的,我单纯说的部署,不是集联的方式,Mirantis也会遇到一些困难的问题,前几周已经发布了将近九百个节点的一个报告,大家可以在Mirantis的博客上查到。
中间的云算平台大家可以看到是普通的X86服务器组成的,右边是一个生命周期管理,主要是用于OpenStack集群的升级变更,以后Mirantis云盘不会跟某一个OpenStack绑定,会滚动上面的OpenStack,比如从最新的O板到P板或者下一个版本都可以滚动的升级,而且它跟整个Mirantis云盘相关性是没有很强的,而且还能动态的去修改配置。右边是一个运维的平台,主要是对云平台进行监控和报警,我们看到整个云平台是会非常灵活跟敏捷的,底层的存储系统怎么才能满足云平台的需求?这是我们总结的开源平台对处理系统的要求,五个方面,首先对于接口来说,因为云平台上面跑着各种的业务和各种运营时态,所以需要基本的快存储,快存储可能要跟你进行对接还有提供快设备,特别是面向互联网的应用是需要对象存储的,还有一些存储应用接口,但是对于传统存储来说,它会比较差,不能满足。第二是可编程性,提供一个API方便集成,这样做平台能够快速的调用一个存储系统的资源,定义存储资源的调度,对于传统存储来说它只是会提供API的接口,而且输入是分钟级别的,非常慢,这是跟传统对接的时候会发现的一个问题,你也不希望我创建要几分钟才会创建好,这其实不符合云平台对系统的要求。另外是Workload,云盘可能会跑着各种的数据库包括一些大数据或者像其他的一些负载,可能有一些大存储的,或者要求低延迟的,可能需要你去满足它的要求,但是传统存储会专注于某一版面,也不是太合适,另外是扩展性,因为你随着云平台的扩展你需要资源做一个相应的扩展,不管是容量还是性能的,而且是需要在线扩展的,扩展的时候我必须要不能宕机,因为传统的存储都是卖盒子的方式,扩展起来非常麻烦,而且需要一段的维护时间。另外主要是一个可管理性,包括统一部署、统一监控、统一运维,这样是可以跟云平台的进行整合结合,需要一个管理员就可以把整个云平台还有所有的网络存储都全部管理起来,不需要另外有一套专门的存储管理人员。
其实这样我们就定义了我们需要的统一存储,至少提供三种存储接口,可以无缝的承接OpenStack或者NFS。这是我们需要的一个统一存储,下面的Rados为是高可用、高可靠无缝拓展的,上面是提供快速对接的,还有CephGRW是对应用直接提供的接口,而且可以使用其他的插件,还有一个CephFS可以提供一个文件系统的接口,也可以跟OpenStack做一个对接。
这个是Ceph统一存储的部署架构,OSD主要提供存储资源,MON主要是维护状态,其他主要是提供对外的服务,只提供存储是OpenStack跟MON直接进行加护,整个集群所有的都是全分布式的,而且没有故障的,带来的好处就是性能强。我们拿OpenStack举例,对于OpenStack来说有很多需要使用存储后端的,NOVA虚拟机可以直接使用,虚拟机可以快速的启动,而不需要下载到本地再启动,因为下载会速度非常慢,我通过这个存储就可以很快,另外是一个新的平台也可以直接的使用整个集群的,另外一个好处就是我经常存在这里,虚拟机启动以后可以减少整个数据的复制链路,就把整个语音操作下发到Ceph去做,这样就可以快速的去做,这边是使用RADOS,这边是MANLA,另外是个做一个计量,会把总的指标数据全部存下来,存在本地都没有很好的解决以后尊出的高可用,假如直接用这个对接就可以让你负责整个数据的分布。然后就是Ceph怎么做支持。
我们再来看一下为什么我们Ceph是开源首选的存储方案,周围它是一个开源的方案,这会吸引非常多的开发者,而且可编程性强,可以持续改进,可以在上面提供很多的创造力,做有创造性的一些工作,激发开发者的创造力,因为Ceph是一个分布式的,我可以对接一些存储系统,做更多的推荐,让Ceph帮我做底层的分布式和高可用高可靠,另外它是一个硬件无关的系统,好处可以激发架构师的创作力,比如我要实现减少你的工作负担,拿我应该使用怎样的服务器都可以配置的。另外它是一个合适的架构根河市的技术,因为云平台对于扩展性还有元数据处理是非常强的,比如组件分布,对于Ceph来说可以部署在服务器上,这可以提高拓展性,另外一个是元数据处理,我们知道一般的系统对于分块主要两种方式,第一个是做一次性的,计算出我到底板块错在哪里,还会做一个存储,一些商业的存储是查表,因为查表可以做很多高级特性,比如做消重、或者数据迁移、拍照等,但是Ceph里面就没有把原数据做表格的形式,而且全部通过计算得到的,这样是有一个元数据的。还有一个是快照和克隆,对于OpenStack吸引力非常强,这样你就可以快速的创建一个虚拟机,而且你可以创建快照,这个是可以实现的。还有另外一个,因为Ceph社区是非常强大的,会有BP级别的块存储,30PB级别的对象存储这个都是社区的一些实践。
我们这边可能还会存在一些问题,就是分布式带来的复杂性,为什么带来复杂性,因为我们的分布式规模特别大,会对你的架构设计,因为你设计非常多的因素,特别像网络、硬件等等,主要是通过网上的架构设计,比如我们的网络架构,我后面怎么去做一个部署,怎么去分割网络的流量,提高它大的性能,还有服务器配置,我怎么充分利用CPU、SSD还有一个网卡的性能,三者的性能要是能够均衡的,可以存储池进行规划,还有一个CRUSH MAP的设计,你要对自己集群的性能可靠性可用性要有一个权衡,还有你的数据流量也要权衡,还有一些自动化部署管理及优化。
另外一个问题,不同的Workload我们怎么优化,比如有些对容量有要求,所以我们可以做一些优化服务,比如硬件配置的优化,还有操作系统参数优化,因为我们知道有缺点会做一个调优,而且把它CPU全部榨干,还有Ceph的参数优化,存储池配置优化,可以做一些代码的优化,还有架构优化。还有大规模部署的问题,比如你部署一两百台Ceph集群怎么做,像推土机一个小时部署起来,这涉及到Ceph集群生命周期管理,还有自动化图形部署工具。这是常见的一些运维操作优化,比如我们遇到一种情况,我们做一个30PB的集群,几乎每周都会画换几块盘,操作非常频繁,这样我们就可以直接换盘操作直接放在我们的自动化管理界面上,快速的做一个换盘,不需要手动的换,这样可以避免你因为手动带来的误操作。下面还有一个报警的工具。我们业提供产品,会有一个平台主要是做管理和部署,目标是一个人一小时交付大规模的Ceph集群,像服务器初始化都可以通过图形化的界面做操作,这是一个自动化部署安装流程,刚开始部署的时候可能每一步都是你需要敲命令或者用其他配置起来,通过图形化的界面可以把这些全部变更。下面一些数据,还有故障排查,像网络故障,因为网络故障导致集群出问题,之前我们遇到一些非常奇葩的问题,比如交换机只能过小包不能过大包。硬件故障包括CPU等等,还有操作系统,大家可以在Mirantis直接下载。谢谢大家。