宜信开源|详解PaaS平台LAIN的功能和架构

宜信技术学院

LAIN是宜信公司大数据创新中心开发的开源PaaS平台。在金融的场景下,LAIN 是为解放各个团队和业务线的生产力而设计的一个云平台。LAIN 为宜信大数据创新中心各个团队提供了统一的测试和生产环境,简化了服务的部署与上线流程,也降低了运维人员对系统管理的复杂度。

一、设计理念及解决问题

LAIN 规范了一个应用的开发、测试、上线工作流,提供了为应用做的容器编排、权限控制、SDN、流量管理、监控报警、备份、日志等 devops 问题的整体解决方案。

在 LAIN 上,应用是一个基本的概念,某个应用的开发者只需要定义一个 lain.yaml 即可定义应用的编译和运行方式,对应用代码侵入性很低。LAIN 基于容器技术,面向多样化的技术栈,并且天然隔离系统和应用的依赖。

当 LAIN 用户创建一个应用(服务)时,可以到 LAIN 上注册该应用,当前的用户自动成为了该应用的维护者,拥有了进一步操作该应用的权限。构建应用的环境需要 docker 和 lain 命令行工具,为了方便,我们创建了一个 vagrant box 即 lain-box. 在构建应用时,除了工程代码外,还需要一个 Docker 镜像作为基础镜像,即编译的环境。如果是二进制的工程,如 golang,则可以在运行时换掉一个底,否则会使用 build 镜像为 release 镜像。准备好镜像和编译/运行的脚本后,就可以编辑 lain.yaml 了。

具体来说,LAIN 解决了以下四个问题:

1、应用开发之下的devops问题的整体解决方案

常见问题

Lain是怎么做的

2、规范了应用开发的工作流程,并辅以适当的SCM支援

常见问题

Lain是怎么做的

3、提高整体资源利用率,优化冗余资源池

常见问题

Lain是怎么做的

4、TBD:架构上提供了服务治理的可能性和解决方案

二、特征

在应用的层面上,LAIN 还有以下特征:

1、基于配置文件定义应用

2、SDN网络安全隔离

3、基于容器技术支持多样化的技术栈

4、应用在线扩容缩容

5、节点在线扩容缩容

6、服务自动维持和灾难恢复

7、内部服务依赖和发现机制

8、统一认证

9、虚ip和负载均衡器统一管理

10、web load balancer的自动配置

11、集群体系化的日志收集

12、私有docker registry以及认证机制

13、应用配置加密存储

14、本地化开发环境

15、应用部署运维API以及相应的CLI客户端

16、集群管理CLI

17、规范化的开发workflow

18、可选的集群体系化的备份和恢复(backupd + moosefs)

19、可选的集群日志查询组件(kafka + elasticsearch + kibana)

20、可选的系列预置应用

三、系统架构

1、物理视图

从物理层面看,每一个 lain 集群是由一个或多个网络互通的节点(Node)构成的。

每个节点可以被赋予不同的 label ,供容器调度时进行节点选择使用。 目前的实现中,需要所有节点位于同一个路由器后。

2、逻辑视图

从逻辑层面看,一个 lain 集群是由多个应用组成,应用和应用之间网络相互隔离(通过SDN技术)。

每一个应用是由多个 Docker 容器组成,每个容器都可能运行在不同的节点上。

应用开发者可以在一个应用中定义多种容器(称为 proc),每个 proc 可以指定为在集群上运行多份,每份即为一个容器,被称为 proc instance 。Lain 集群会尽可能保证有指定份数的容器在运行,如果有容器 crash 或者节点 fail 的情况发生,集群会试图重启容器或者在节点间迁移容器。

3、系统架构设计图

目标是做成一层一层可以深入的架构图

总图

节点

4、工作流程

GitHub地址:https://github.com/laincloud

白皮书:https://laincloud.gitbooks.io/white-paper/content/

来源:宜信技术学院