客服系统mesos/marathon迁移到DC/OS的探索(1)

我们客服系统使用mesos/marathon来管理springboot微服务已经有一年半了,没出现过任何故障,运行十分稳定。在这期间, 基于mesos/marathon开发的DCOS又提供了很多新特性还有丰富的framework, e.g. Cassandra,ES,mr-redis,mq等framework,这些framework都实现了高可用,快速扩容缩容。其中mr-redis提供的高可用,主从自动切换,快速部署等特性允许我们重新定义redis的运维方式,可以减少很多工作量,所以我们在考虑把mesos/marathon迁移到DCOS。

在今年6月北京国家会议中心的MesosCon大会上,通过讲师们的深入讲解,让我对DCOS有了进一步了解,于是就想在我们的系统中尝试一下DCOS......

先说明一下我们客服系统是如何使用mesos/marathon的,还有使用过程中遇到的相关问题

  • 使用方式

      github -> nexus-> marathon shell pull jar && run jar (`mesos container
      a.k.a unified container`)
    
      1. 开发提交代码到github, build出的package自动传到nexus
    
         最初我们也尝试过用docker来部署,当时在build出jar包的同时会build一个对应docker
         image,并传到私有的docker registry, 但是这个严重拖延了部署时间, 最后我们选择
         直接部署jar包,即使用mesos container,这种方式提高了部署效率
    
      2. marathon中的task会从nexus下载jar包,然后通过shell命令直接运行,整个运行环境
         是受cgroups的isolator限制的
    
    
  • 问题

1. mesos container 运行springboot程序的部署方式在dcos上是否可行?(之前我一直以为
    dcos只支持docker)
    
2. 曾经服务升级过程中遇到的一个坑,新版本的服务部署过程中由于配置或者起他未知问题hang
    住无法启动成功,于是我手动kill了hang住的task,但是之前运行正常的服务task也被kill
    了, 因此 nginx 对应的接口报了502, 整个服务不可用。这种情况为什么会发生?

我也是带着这2个问题来参加MesosCon会议的,幸运的是会议上Mesosphere公司的工程师Jörg Schad, Vinod Kone & Gregory Mann在问答阶段解释了这2个问题:

     第一个问题答案: Schad 回答说DCOS支持原生的mesos container, 同时也支持
     universal container, 大家也称原生的container为unified container, 这么多
     称呼很容易让人迷惑。听到这个答案后我就觉得mesos/marathon 迁移到dcos完全可行。
    
     第二个问题答案:Vinod Kone & Gregory Mann在讲解Executor 生命周期的过程中提到
     了Task group, task是如何工作的, 同一个Task group 里的task认为都是相同的,如
     果新加的task 健康检查没有通过,整个Task group里的task都会被kill掉。 这个特性就
     解释了我们在升级sprintboot服务Webapp从v1到v2版本过程中v2启动有问题,手动kill后,
     所有的 webapp服务都被kill, nginx直接返回502. Vinod Kone & Gregory Mann 解
     释说他们也从用户收到新的需求更改Task group管理task的这种方式,

     但是这个pr还没有排期,所以我们只能通过比较tricky的方式来解决,e.g: 当发现Task 
     group A中的新版服务无法正常启动的时候,我们可以另外新建一个Task group B来部署旧
     版服务,等这个Task group B 中的task通过健康检测可以提供服务的时候,再手动kill掉
     Task group A的服务并分析原因,这样就会保证 Webapp 这个服务一直是可用的。

经过MesosCon会议中的学习,回到公司以后,我就简单阅读了一下DCOS文档并搭建了一套环境来做测试 , 也有了初步的结论,即迁移到DCOS有好处也有坏处,需要针对不同场景需求作出取舍。

阿里云ECS server节点配置

  • 1个bootstrap节点 (2 core, 16G, SSD)
  • 1个master节点 (4 core, 16G, SSD)
  • 2个agent节点 (4 core, 16G, SSD)

部署试验

当dcos部署以后,我迁移了一个crm的sprintboot 程序到dcos, 部署过程中突然发现启动时间增加了很多,于是就分场景做了测试

  1. ECS直接run crm.jar

  2. marathon shell 部署crm.jar

  3. dcos 使用mesos-container部署crm.jar

  4. 在使用marathon和dcos部署过程中对cpu的配额做了微调

下面是记录了jar的启动时间如下:

Service ECS bare runtime Mesos/Marathon runtime DC/OS
CRM (1 cpu, 756MB mem) 35s 38s 100s
CRM (0.5 cpu, 756MB mem) 35s 40s 200s

试验总结:

  • Marathon即使设置了isolator (cpu/cgroups,mem/cgroups),在jar启动过程中(a.k.a container创建的过程), cgroups的limit 并没有生效, 所以0.5 cpu和 1个cpu对启动时间没有什么影响。

这个特性也保证了jar能很快的启动,即使比起在ecs直接起jar也慢不了太多。

  • DCOS 启动这么慢和cpu的配额有一部分原因,从结果可以推断dcos在container创建中对资源做了限制。

这个特性严格限制了资源的使用率,对控制服务器的load有好处,但是dcos启动jar的时间还是很慢,这个时间差对SLA来讲却是至关重要的

我们可以用到的dcos特性

  • pod特性
    pod把多个container可以看成一个服务,可以共享network, health check 等,如果一个container有问题,会全部重启,或者整体迁移到另外的节点重新部署, 对有依赖的服务来说这个特性很有帮助,这几个有依赖的服务可以直接通过localhost:port 来访问,提供了访问速度。

  • dashboard
    可以查看整个集群的资源使用情况,相比原生的监控,这个界面更友好,而且都整合到一个平台,方便运维人员查看。

  • dcos cli

    dcos让习惯通过terminal来管理系统的运维人员能更方便快捷的来管理整个集群。

最后总结

DCOS启动jar慢可能与dcos加了很多起他组件(security)有关,在没有完全搞清楚为什么启动慢之前,暂时我们先不会把mesos/marathon上的服务迁移到DCOS上,毕竟SLA更重要。

下一步计划

准备把mr-redis(https://github.com/mesos/mr-redis)这个framework porting到当前的mesos/marathon中,这样就解决了快速部署和高可用的需求,现在已经完成了一部分工作,等全部完成后会再分享出来


Note: 对于dcos启动jar慢的问题,欢迎大家提建议,一起讨论一起学习...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容