数人云发布Swan1.0,推动开源生态成长

2017年6月30日Mesos调度器Swan1.0正式发布,自2016年11月10日Swan项目正式开源,历经半年多的打磨,Swan在开源社区的帮助和数人云研发团队的努力下,已经在性能和功能方面有了巨大的提升。

Markdown

Swan是基于Mesos Restful API编写的应用调度框架,可以帮助用户轻松发布应用,实现应用的滚动更新,并根据用户指定的策略做应用的健康检测和故障转移。应用管理做为Swan的基本功能,也是最重要的功能,在本次重构中做了进一步提升,精简了数据结构,并通过数据库读写和逻辑优化,使得功能更加稳定。

应用管理主要包括以下几点功能:

1)应用的CRUD
属于应用基本操作,重构对CRUD的逻辑做了很多优化,减少不必要的数据库读写,提升了性能。

2)扩缩
扩缩将之前的两个接口合为了一个,使用上更简单。同时支持了对独立IP的支持,支持扩实例过程中,用户输入IP列表为新增的实例注入单独IP。 IP的管理目前是静态的,由用户输入,后期将做成自动的IPAM,只需用户在发应用时指定一个网络即可,可以做到自动的获取IP,释放IP,避免人为输入IP的麻烦。
扩缩还有一个改进—更清楚的错误信息,如果扩缩失败,用户可明确查看出错原因,提升了用户体验。

3)更新
更新与Marathon有一点不同,可指定需要更新的实例数,且如果考虑灰度,还可传入一个新版本流量占全部流量的百分比,做到控制更新版本实例的流量。 更新失败目前的策略是会停止更新,由用户来选择回滚,主要考虑到用户会比较关心失败的原因,如果自动回滚,错误现场可能会被冲掉。当然,后期计划做成可配置的。

4)版本回滚
新版回滚作为一个独立接口,且现在回滚时支持要回滚到的版本号,默认如果不传版本ID,可回滚到上一版本,如果传了,则回滚的版本ID指定的版本。这样做的目的是为了更灵活,虽然大部分情况下都是回滚到上一版本,但通过版本号可以实现跨版本回滚。

Swan1.0的其他主要功能:

1、Mesos-Based Health Checks 健康检查
实现基于Mesos的健康检查,Swan最初是自己做的健康检查,后来考虑到性能的问题,决定还是采用Mesos的健康检查。之前基于Mesos的健康检查存在部分Bug和问题,在最新的版本应该已经做了修复,二是基于Mesos的健康检查目前只能配置一个,不支持多个Mesos,现阶段数人云的开发同事也正在对这一功能进行开发。

健康检查目前支持三种:HTTP、 TCP,Command,现在Swan上都能做很好的支持。不过Command还是有个坑,就是Mesos默认会切换到容器的Namespace中执行Command,那么问题来了,如果你要执行的Command在容器镜像中没有那就杯具了,Command检测就会失败。所以这种方式不推荐,最好用HTTP或TCP。

2、HA 高可用
目前Swan高可用是基于Zookeeper做Leader选举。之前做过一版基于Raft协议,感觉Hold不住,索性换了Zookeeper,好在Mesos目前也是用Zookeeper,这样反而更简单。

Leader选举的基本原理是多个Swan同时去Zookeeper的一个目录下创建一个自增长序列的临时节点, 该节点在客户端断开一段时间以后会被Zookeeper自动删除。通过比较自增序列,找出序列最小的节点,最小的也就是最先创建的,谁最先创建谁就是Leader,选出Leader之后,其余节点去监控Leader的事件,如果Leader断开,创建的节点会被删除,其他节点在收到该事件时再重新开始Leader选举,依次来完成Leader的选举过程。

目前来说,用此方式做的Leader选举,在Swan这边测试的还是比较稳定,暂时没出现选举失败或出错等BUG。

3、 Event Subscription 事件机制
事件机制是通过对外暴露一个Event接口来实现。当有客户端连接到该接口后,Swan会实时发送Task的变更事件,新建或状态更新等给客户端。重构主要精简了事件的数据结构。

4、 Compose 编排
Compose是Swan新增的一个功能。主要是支持Docker Compose V3的编排。Docker Compose V3是Docker借助Swan的分布式特性而实现的分布式编排引擎,Swan借助与自身的DNS功能,也能够解析Compose V3的Spec来做分布式跨主机编排。

5、Calico-based IP-Per-Task 基于Calico的独立IP
Calico IP主要是通过Calico来创建网络,然后通过创建应用时选择网络,手动填入Task的IP来实现。内部是通过Docker的--ip参数来传入IP,网络间的通信由Calico来做,而且是一个手动的IPAM。之后可能会考虑做成自动的IPAM,更方便用户的使用。

6、Schedule strategy 调度策略
调度策略是这次重构新加入的功能,主要是为了提高调度的灵活性和资源的利用率,加入了Random、Spread、Binpack三种调度策略。

数人云Mesos调度器Swan未来将通过加强Agent功能来辅助调度器来做一些事情,比如上报Mesos Agent主机的负载来为调度做选择,或是查询Mesos Agent主机上的容器数等等,具体的功能还在进一步细化中;通过Agent查询负载来做基于机器负载的调度策略,或通过Agent查询容器数来做基于容器数的调度策略,或者是实现其他的调度策略;通过开发Excutor和调度器结合来创建基于KVM的虚拟主机,并进一步优化应用管理的逻辑和策略,来提升Swan应用管理的能力。

数人云从公司创立起,就一直在积极拥抱开源路线,并借助社区的力量使之更好的发展起来,让更多的国内开发者体验并参与到最新的开源技术中。Marathon和Aurora是大家所熟知的Mesos框架,通过Swan开源项目的升级迭代,数人云将最新研发成果与社区共享,为开发者提供了更多的选择。

目前国内云计算领域正在涌现出越来越多的创新型开源项目,中国开源技术在国际开源社区中的影响力不断提升,也为更多企业在上云中提供了更多灵活性,大家携手共同推进中国开源生态加速度成长。

关于数人云

数人云创始团队来自谷歌、红帽和惠普,作为领先的云计算开源技术实践者,数人云致力于帮助传统企业提升IT对业务的支撑能力,帮助客户统一管理资源和应用,加速应用交付、提升运维效率,建设新一代基于云计算技术的IT架构体系。 数人云重点聚焦打造基于容器的最轻量级PaaS平台,在实现应用全生命周期管理的同时,管理海量监控、日志等产生的各类数据,自动分配应用资源、对业务运行状况进行自动分析,提升企业的IT工业化程度,构建灵动新IT。

2017年数人云正式成为Linux基金会成员,并加入OCI(The Open Container Initiative)联盟,携手与全球云计算领域伙伴共同推动容器相关标准的建立。