网络通信 频道

猎聘网资深运维工程师分享项目发布经验

  以下整理总结来自猎聘网资深运维研发工程师毛小永于6月4日下午在创客168沙龙的分享——猎聘青龙发布系统。

  程序猿们昏天黑地、大战代码300回合后做出的项目迟迟无法上线的痛有谁懂?上线失败的眼泪去哪儿流?上线后的频频出错的项目从哪儿改?开发狗、攻城狮们和程序猿们项目上线的鸭梨怎样才能轻松吃掉?Follow me!一起来看猎聘网如何零压力玩转项目上线,服务如何丝滑流畅不卡顿~

  老司机介绍

猎聘网资深运维工程师分享项目发布经验
猎聘网资深运维研发工程师毛小永

  毛小永,猎聘网资深运维研发工程师,拥有多年运维研发经验,曾负责青龙发布系统、CMDB、变色龙指令系统等的设计和开发工作,推动全业务规范化,运维平台自动化、标准化、规范化建设。

  青龙的前世今生

  猎聘网初期发布项目时,只能把项目war包拖到线上去,每次上线时找一个专门负责发布的运维人员进行发布,效率极低。后来猎聘网专门做了一个用于发布的系统——青龙发布系统,每一个开发人员和QA人员在自己权限范围内可随时发布权限范围内的项目,大大提高了项目发布效率。并且该发布系统采取集群化部署,高可用、高效、简单易用,发布的效率、可靠性和质量相较之前有了质的飞跃,到了大家的一致认可。

猎聘网资深运维工程师分享项目发布经验

  上图是发布系统的主界面。该系统有三大模块,第一模块是预发布区。预发布区可认为是沙漏区域,所有项目在上线过程中不会直接发布到线上,需要先经过测试人员的测试,然后经过沙漏区的安全测试后,才会正式发布到线上。第二个模块是生产区,是一个包含Java、Node.js、python等项目和安卓、iOS平台的APP的发布。第三个模块是监控区。虽然青龙只是一个发布系统,但仍会监控上线之后的项目,保证当上线的项目出现问题后,运维人员第一时间及时恢复。总而言之,青龙发布系统是一个一体化的,包括了测试、上线和监控等多方位的操作的系统,简单易用。

  作为一个发布系统,首要一点是项目在上线过程中不能影响用户的使用。如果项目在上线过程中,经常返回404或者500说明该发布系统很失败。第二点,该系统包含对多平台支持。其实青龙发布系统只是猎聘网平台的一个系统,多平台的支持可以促进整个技术体系,运维体系、架构系统等统一规划、统一设计,方便在公司的层面构建整体化、标准化的平台。第三点是青龙发布系统支持集群多任务发布,快且稳定,且有自我守护的升级模式。除此之外,青龙发布系统还会对实时日志进行分析和智能预测。

  青龙身承六大法力提供技术保障

  第一大特性:上线过程零宕机,即项目在发布过程中对用户零影响。发布系统支持上线前进行灰度测试且操作随时可中断。

猎聘网资深运维工程师分享项目发布经验

  上图是整个网络及服务器的部署情况。最外层是nginx网络层,nginx把流量直接引导到线上三个区域中,经过三个区域网络层后,服务端根据得到的请求,把数据引导到后端系统。这些区域的特点是逻辑层面相互隔离,即当流量进入区域A时,所有的请求都在A区域内完成,这就是对线上用户零影响、零宕机的原因。实际上的零宕机是不可能实现的,但可以用另一种方式实现零宕机的效果。原理很简单,当给区域A部署项目时,把区域A的nginx节点打掉,这样线上所有的用户请求都会被打到区域A2和A3中。这样区域A已经不提供服务了,那A区域内的机器可随便处置。当把A区域内的项目处置完毕之后,再把流量打回来,这样在用户层面是没有任何影响的。

  第二大特性:多平台支持。Java、Node.js、python等项目、iOS和安卓的APP等都可纳入到发布体系中,但这只是一小步,青龙发布系统真正的目的是把所有的项目以及需要的环境能过统一规划,统一管理。

  第三大特性:集群多任务。集群多任务的特点是可靠、高效率,可批量发布,所以项目上线更快,效率更高。

  第四大特性:守护升级。当项目上线时用户只会访问A结点,而运维人员会访问青龙发布系统的B结点,这样在发布系统中,对于用户发布的所有东西,系统都自动认为其是一个项目。下图是实现守护升级模式的概念图:

猎聘网资深运维工程师分享项目发布经验

  当青龙发布系统需要升级时,会首先访问生产区,把待上线的项目部署到青龙预发布区中。升级生产区时,生产区此时专供研发和QA人员使用,他们通过访问预发布区的发布系统,把项目和代码部署到生产区。

  第五大特性:日志处理。在发布过程中,经常采用批量发布模式,由于发布项目众多,不可能挨个排查项目问题。青龙发布系统的解决办法是把发布过程中的日志采集到系统中,系统的预估后判断上线项目是否有问题,把结果直接反馈给用户。日志系统需要不断改进,只有把新的类型的信息不断加入到系统中,该系统判断才会更加准确。下图是系统简单的发布截图,当发布失败的时候,日志系统中会有一个详细的项目发布失败的信息。如果项目发布失败,最快恢复的方式就是回滚。如果项目发布成功,那也不代表项目结束,还要考虑发布效果、特殊文件是否可以成功上传、上线后的监控等问题。

猎聘网资深运维工程师分享项目发布经验

  第六大特性:一体化监控。猎聘平台除了采用第三方的监控,还使用系统本身的监控,同时也会关注服务的监控,用来监控服务内部和外部的流量监控。项目发布后,服务机成功启动,流量也恢复了,但还要监控服务器是否把流量内部消化了,系统是不是正常运行等情况。如果把流量切掉,再打回来,项目和服务也是正常的,那发布任务就成功了,但如果中间有一个环节出问题发布就失败了。

  写在最后:

  青龙—猎聘发布系统集发布、升级、监控于一身,上线过程零宕机、多平台支持各类项目、可集群多任务发布项目、自我守护升级模式、日志自动分析处理和一体化监控六大特性让青龙发布系统简单易用,可靠性极高。这么好用的发布系统,还不赶快来试试?

1
相关文章