Ceph中国社区分享:Ceph在Ctrip携程的应用

Ceph中国首次进行的线上分享活动第一期我们邀请到的是携程工程师刘俊。

Hi,大家好,我叫刘俊,来自携程。 很高兴认识大家,今天我要跟大家分享的是Ceph在Ctrip(携程)的应用。 欢迎大家提问。

今天我要给大家分享的有如下部分:

首先,我先介绍一下Ceph在携程的现状:

之前只是介绍了环境信息,如PPT所述。

下面我介绍一下Ceph在我们公司的部署情况:

我们公司总共部署了四套Ceph集群,分别在不同的IDC。

他们的部署结构都相同。

下面我给出一个集群的部署结构图:

我解释一下:

每个集群三台机器,每台机器12块硬盘。每块硬盘3T,所有机器部署模块完全相同。

这是为了运维的方便,以简化运维。

在Ceph前端我们部署了一个RGW集群。并采用DNS进行HA,后面我会对HA进行更详细的介绍。

这是我们曾经考虑和调研过的HA方式。其中后面三种可以归于一类。

在这后面三种中,我们选择了LVS+KEEPALIVE进行了DEMO。

下面我给出我的调研结果。

关于DNS轮询的优缺点请看PPT。

待会关于这几部分的问题,欢迎大家跟我探讨。

考虑到我们的使用场景,我们最终选用了DNS。

HA就先分享到这里。下面我再分享一下携程对Ceph运维所做的工作。

我会分为四个部分进行介绍。

第一部分:权限控制

也即用户管理。包括命名空间和权限部分。

下面我给出我们的结论;

因为我们采用的是Swift接口,使用的是Swift账号。

第二部分是关于监控。

监控这块我们采用的是Zabbix方案。下面我给出一个截图:

第三部分,我讲讲我们怎么收集Ceph日志

我们采用的方案是,ELK Logstash。下面我给出相关的截图:

第四部分,我讲讲Ceph的可视化。Ceph有多种可视化方案。

我们最终选择的是,Ceph Calamari。因为它正统。

接着,我给大家分享一下,Ctrip是如何测试Ceph性能的。

对象存储不同于文件系统和块存储,基准测试工具不是很多,多是不开源的。我在腾讯就使用过一种,但因为未开源,最终没有采用。

最终我们采用的是Intel的Cosbench。

下面是Cosbench测试出来的部分截图:

使用下来感觉,Cosbench还是很不错的,可以自定义测试项,图表均可自动化生成。

最后一部分,我给大家分享一下,我们在跨IDC数据同步方面的一些经验。

这块我们花的时间最多,当前也还在进行中。Ceph官方有他自己的跨IDC数据同步方案及Multi Region

这个方案我们也调研过,但感觉有如下问题:

1. 不太稳定,当数据同步的时候,会严重影响MasterRegion的性能。

甚至会崩溃,不够灵活。

2.不够灵活

必须同步所有的数据。并且无法控制同步策略。

基本是如上两点原因。跨IDC的数据同步,也可以采用修改,crushmap来实现。但因为性能,很少人这么使用。

为此我们开发了自己的跨IDC同步方案。下面我给出该方案的架构图。

以上就是我今天的分享。准备不是很充分,欢迎大家拍板砖。

互动问答环节

==============================

问题1:我想问下,logstash收集起来的日志怎么用呢?

答案:首先是过滤和定位问题的所在

问题2:

我有几个问题,第一,携程只使用Swift接口,那为什么不直接使用Swift?第二,ssd做raid1是用来做journal还是用来装系统?raid1为了可靠性?第三,集群里头主要存什么类型的数据?关心的性能指标是什么?是否能分享你们心目中的QoS。第四,日志收集了什么内容,是性能数据(perf count er)还是osd的log。

答: 第一,目前是只使用Swift接口,后续会把RBD加进来.

第二,都用,我们使用的是raid10.

第三,目前存放的有:软件包、静态图片以及图片特征值,后续会支持openstack image。我们关注的主要指标是延迟.

第四,日志目前主要收集的是log,收集日志的目的是为了当分布式系统出了问题的时候,方便定位.

问题3:请问携程做的主要是对象存储,是吗?

答:主要是对象存储

问题4:你们是否对rgw-agent进行了定制?主要是那些方面的定制?

答:我们不是定制,是完全自己设计了一套自己的同步方案。

问题5:同步是至什么,在什么时候同步啊?

答:可以通过策略进行控制。目前第一版本支持的是实时同步

问题6:如何用ssd加速集群性能的 ?效果明显不?

答:存放日志以加速性能

问题7:你们的机器上四块ssd坐了raid10?

答:四块SSD做了raid10

问题8:存储的是小文件还是大文件?

答:目前主要是小文件

问题9:您好,我想问一下数据同步问题,您使用Swift接口,是因为您调研过S3接口不能用吗?因为我使用s3数据同步时出现问题,架构是一个region,两个zone包含两个集群,问题如下(网上的log,跟我问题一样): (env)root at ceph-rgw41:~/myproject# ./radosgw-agent -ccluster-data-sync.conf -q

region map is: {u’us’: [u’us-west’, u’us-east’]}

ERROR:radosgw_agent.worker:failed to sync object new-east-bucket/new-east.json:state is error

ERROR:radosgw_agent.worker:failed to sync objectnew-east-bucket/new-east.json: state is error

ERROR:radosgw_agent.worker:failed to sync objectnew-east-bucket/new-east.json: state is error

答:不是,S3我也成功使用过,但配置起来比较复杂。使用Swift主要是因为前期我们调研过Swift对象存储,并且使用过程中也没有发现S3可以支持而Swift不能支持的功能。

问题10:跨机房同步你们是异步的吗?可以基于用户还是bucket同步?

答:是的,都可以

问题11:对象存储能提高速度不?

答:SSD主要是用来存放日志的,当然对提升性能也是有帮助的,目前我们还没对性能进行优化。

问题12:RGW服务器的配置是如何?

答:RGW是部署在Ceph集群的机器上面的,具体配置见前面图片。

问题13:你们存储小文件的时候,数据量大概多少,同步会有问题吗?每个小文件实际占用空间呢?

答:对象存储相对什么能提高速度呢?这个速度不至于,我们带宽可达100M。小文件从几K到500M以内。

问题14:你们是用httpd还是CivetWeb?civetweb配置https有办法么?

答:CivetWeb,我们没有使用https

问题15:数据同步是基于文件还是cephobj?

答:数据同步我们调用的上层Swift接口。

问题16:性能如何

答:性能能满足我们的需求;

问题17:存储的数据到达什么量级了?

答:存储的数据可参见前面图片;

问题18:跨DC的数据同步是主备模式吗?还是主主模式

答:可以说主备模式。

问题19:4块盘做raid10,为什么要这么做,硬raid?放日志还是做cache?

答:是硬Raid,做日志。

问题20:为什么要做跨机房同步?想解决什么问题?

答:为了解决本地访问的问题;

问题21:同步的时候是在同步object吗?还是用了其他什么办法?

答:有几个层面的Object,我们是调用Swift接口来同步的。

问题22:ctrip自研的rgw-agent如何实现增量同步?也是基于data log,md log和bi log?

答:这是具体实现问题,有多种策略。以后我们可以私下多讨论下。

问题23:radosgw 原生的方案也是实时同步、会影响主radosgw的性能,你们不是异步同步,为什么主的没影响性能呢?

答:我们有多种同步策略,可以根据需要调整。

问题24:貌似用的swiftclient?对s3的接口支持到什么程度了?另外支持断点续传吗?

答:Swiftclient是我们使用的一种方式,S3接口尚未具体测试,官网可查阅相关文档。暂不支持断点续传。

问题25:几k的文件在集群中实际占用空间是这个文件大小还是分配object大小?(加入object比该文件大)

答:应该是Object大小。

Leave a Comment

电子邮件地址不会被公开。