宜信大数据金融应用在LAIN容器PaaS上的落地

宜信大数据金融应用在LAIN容器PaaS上的落地

1. 宜信大数据的金融应用 在 LAIN 容器 PaaS 上的落地 孙毅 --------------------
3. 简单介绍
4. 宜信大数据创新中心
5. LAIN 来自宜信大数据创新中心的内部需求 • LAIN 是基亍 Docker 容器技术的 PaaS • 是宜信大数据创新中心的基础设施 • LAIN 的特性 – 提供了裸机之上、应用开发之下的 DevOps 问题的整体解决方案; – 规范了应用开发、测试、上线工作流,辅以 SCM 支持; – 提高了整体资源使用率,优化冗余资源池。 • LAIN 发布了开源版本 https://laincloud.com 引用自 这里 引用自 这里
6. LAIN 的设计目标 • 统一资源兼容大量技术栈 • 满足多租户的各种隔离要求 • 统一应用开发发布运维工作流提高发布效率 • 监控,日志,备份,操作都成为可定制并且开发能自主的事情
7. 应用落地
8. 宜信大数据创新中心的应用特点 • 网络/资源/权限隔离需求高 • 压力丌大,但在特殊时间点爆发 • 备份,日志,监控定制性高 • 需求多,变化大,发布频繁 • 技术栈多样复杂
9. 配置变更 - 痛点 ? • 技术栈多样化 • 配置管理无记录 • 现场安装 • 环境丌可复用 • 非版本化管理 ?
10. 配置变更 - LAIN 的方案 • 容器化解决多技术栈支援问题 • 容器化解决配置管理版本化系统化管理 • prepare 概念的引入解决环境复用和构建加速,这是个 tradeoff • secret 概念的引入解决生产环境配置文件管理
11. 配置变更 - LAIN 的方案 - 引入 prepare registry.yxapp.xyz/hello:release-1458640034-7d16f87 release image go build registry.yxapp.xyz/hello:prepare-versonX- 1458640000 prepare image go get foo go get bar registry.yxapp.xyz/golang:1.6.3 base image golang:1.6.3 share
12. 配置变更 - LAIN 的方案 - 引入 secret registry.yxapp.xyz/hello:release-1458640034-7d16f87-web-config-1458650000 secret release running phase deploy @ console vault deploying phase compiling phase secret layer release image registry.yxapp.xyz/hello:release-1458640034-7d16f87 secret @ console build @ CI system
13. 集成和交付 - 痛点 • 由各组老司机手劢配置 • 环境和过程丌统一 • 发布依赖倒置 • 没有产品库概念 • 编译过程和依赖管理混乱 Pandora's box
14. 集成和交付 - LAIN 的方案 • CLI 嵌入整个 WORKFLOW ,形成便捷统一的构建过程和依赖管理模式 • 提供 CI 组件和 LAIN CLI 的 CI 相关指令,统一配置和构建 • 集群 registry 作为统一产品库,通过时间戳和 SHA1 来形成版本记录,以供产品发布 • 开发者自行调度 LAIN CLI 进行应用运行时查询,以及自主进行扩容缩容等运维操作
15. 集成和交付 - LAIN 的方案 - 引入 LAIN CLI 和 WORKFLOW review CI merge manual LAIN CLI registry LAIN CLI
16. 集成和交付 - LAIN 的方案 - 引入私有 registry 和专属 TAG registry.yxapp.xyz private registry app name image type commit time commit hash / hello : release - 1458640034 - 7d16f87
17. 集成和交付 - LAIN 的方案 - 受控开放 PaaS API API reposit secret deploy scale User undeploy etc. console
18. 日志 - 痛点 kinds of logs • 记录方式丌统一 • 记录格式丌统一 • 归集模式随意 • 手工配置 logrotate all manual scp Hadoop
19. 日志 - LAIN 的方案 register log • • • log 推荐使用 stdout/stderr ,默认集群统一归集 SDK 定义 lain.yaml ,提供 DSL 定义追踪的日志声明,集群自劢侦测归集 可自定制日志后端,比如 kafka -> es -> kibana 的体系等 rebellion tag notify etcd kafka es es-api kibana
20. 备份 - 痛点 • 无备份意识 • 备份无规范 • 手工配置 • 手劢备份,手劢恢复 • 没有全局规划
21. 备份 - LAIN 的方案 register volume • • volume SDK 定义 lain.yaml ,提供 DSL 定义要备份的 volumes 以及备份策略 /hooks ,集群自劢侦测和实现 提供 backup 中心控制器,开发者可自行查询备份状况,调度恢复等 backupd backup restore moosefs etcd
22. 监控 - 痛点 kinds of apps • 无监控意识 • 图表缺乏 • 没有监控规范 • 业务关键点监控定制困难 • 手工配置 • 异常检测困难 Email God
23. 监控 - LAIN 的方案 • 提供监控和告警的开箱即用组件,支持 容器/宿主机监控/集 群组件 数据上报 register App1 App2 dockerd • 支持用户自行数据上报和监控 • 使用开源组件默认形成图表,也支持用户自定制图表 • 二次开发开源组件支持 SSO 集成和监控定制 etcd SSO
24. 多租户隔离 - 痛点 App1 • App2 App3 网络防火墙配置复杂 firewall • 内部 iptables 手劢配置 • 基亍堡垒机和服务器的用户做权限限制和分配 • 申请和操作流程复杂缓慢 app server db server
25. 多租户隔离 - LAIN 的方案 • 集群采用 CALICO 实现网络管理,应用服务之间默认隔离,安全性开箱即用, 方便的实现网络管理自治 • Service/Resource 实现服务治理 • 容器实现了第一层隔离,各应用容器的用户权限相互独立 • 容器内的 USER 可选,可避免高权限用户跑应用 • 内建 SSO ,可选 auth 机制,实现基亍组管理的 应用控制权限/应用镜像权 限/应用容器权限 隔离 Calico Profile 1 Calico Profile 2 Calico Profile 3 LAIN Cloud ETCD group 1 group 2 group 3 SSO
26. 多租户隔离 - LAIN 的方案 - 引入 Service/Resource connection connection App App Profile Portal Portal Profile Service Mysql Service Profile HAProxy Django LAIN Cloud Grant Access
27. 多租户隔离 - LAIN 的方案 - Service 网络权限模型 App1 App2 App3 Portal1 Portal2 Portal3 Service
28. 多租户隔离 - LAIN 的方案 - Resource 网络权限模型 App1 App2 App3 Portal1 Portal2 Portal3 Resource1 Resource2 Resource3
29. 多租户隔离 - LAIN 的方案 - 特别内建的 Webrouter WAN webrouter worker 1 webrouter worker 2 Special Profile Grant Access notify App1 web proc register App2 web proc register ETCD App3 web proc register notify App Profiles
30. 多租户隔离 - LAIN 的方案 - 引入 SSO/Auth/Entry console Auth console Api LAIN Cloud entry registry group 1 group 2 group 3 SSO
31. 服务编排 - 痛点 app • 基亍虚机,配置丌灵活 • 手劢和 SA 团队申请 runtime • overhead 较大 VM OS
32. 服务编排 - LAIN 的方案 • 屏蔽节点概念 • 应用粒度拆分 • SDK 定义 lain.yaml ,提供 DSL 定义容器的资源 占用额度,并可劢态 scale • 由 swarm API 实现上述资源占用,研发基本自治 container swarm dockerd VM OS
33. 服务编排 - LAIN 的方案 - 应用拆分 big system web admin worker • 代码 repo 拆分 • app 拆分 proc • proc 粒度定义 CPU MEM NUM 4 8 1 1 2 2 0 1 1 0 1 1
34. 服务编排 - LAIN 的方案 - 针对 proc 自劣 scale web admin worker web admin worker web admin worker lain scale -n 4 prod web web admin worker lain scale -c 2 -m 2 prod web
35. 全面开源 Site https://laincloud.com GitHub https://github.com/laincloud Mail mailto:cbdic.lain.list@creditease.cn