QCon上海2015 蚂蚁金服金融云PaaS docker实践 吴峥涛
2020-03-01 281浏览
- 1.
- 2.蚂蚁⾦金服⾦金融云PAAS docker 实践 蚂蚁⾦金服基础技术部系统组-知胜(吴峥涛)
- 3.3 为什么选择docker?
- 4.⼤大型⺴⽹网站所⾯面对的问题
- 5.⼤大型⺴⽹网站所⾯面对的问题 负载均衡 缓存 SOA服务化 ⽔水平扩展 多机房多 数据分库分表 …….. 服务发现 数据⼀一致性 ⾼高性能通讯组件 可靠消息中⼼心 异地灾备
- 6.蚂蚁中间件地图 请参考蚂蚁⾦金融云⺴⽹网站 6
- 7.7 有效应对⽇日益增⻓长的业务压⼒力 2014年 2013年 2012年 2010年 交易额 (仅淘宝) 2011年 571.12亿 350亿 191亿 54亿 3.67亿 19.5亿 1.88亿 1.058亿 交易笔 数 付款峰值 笔数 3360万 38521/秒 1280万 2万/ 分钟 15320/秒 6.3万/ 分钟 20.5万/分钟 3833/秒
- 8.以PAAS⽅方式打包输出中间件 ● 与阿⾥里云整合 ● 帮助⽤用户去IOE ● 降低⽤用户研发/运维成本 ● 帮助⾦金融⽤用户解决技术问题,让⽤用户专注于业务逻辑 上帝的归上帝,凯撒的归凯撒
- 9.9 蚂蚁⾦金融云架构 ⺴⽹网商银⾏行 SAAS 神秘应⽤用 不可说 ……… ⾦金融云PaaS平台 ⾦金融级云管理 平台 应⽤用容器和 框架 实时监控分析 平台 分布式数据 和事务 可靠通讯平 台 服务治理 平台 分布式 调度中⼼心 ⼤大数据 平台 服务注册中 ⼼心 IAAS ⽆无线PaaS平 台 分布式 参数管理 算法平台 ⾦金融安全 平台 搜索平台
- 10.碰到的问题 ● SOA服务化架构导致的模块数量快速增⻓长与资源粒度的⽭矛盾 ● ⾃自动部署/扩容/缩容对资源交付速度的要求 ● 租户间安全隔离的需求 ● ⾃自定义组⺴⽹网需求 ● 兼容多种IAAS
- 11.11 ⺴⽹网商银⾏行 SAAS 神秘应⽤用 不可说 ……… ⾦金融云PaaS平台 ⾦金融级云管理 平台 应⽤用容器和 框架 实时监控分析 平台 分布式数据 和事务 可靠通讯平 台 服务治理 平台 分布式 调度中⼼心 ⼤大数据 平台 服务注册中 ⼼心 ⾦金融安全 平台 ⽆无线PaaS平 台 分布式 参数管理 算法平台 搜索平台 CAAS 物理机集群 阿⾥里云经典⺴⽹网 络IAAS 阿⾥里云VPC IAAS 其他IAAS
- 12.12 CAAS职责 ● 以微容器(docker)为载体,为⽤用户按需提供计算/存储/⺴⽹网络资源 ● 提⾼高交付速度与资源利⽤用率,降低资源粒度 ● 对PAAS屏蔽IAAS,兼容多种IAAS实现 ● 集群和应⽤用的标准化/⾃自动化/产品化
- 13.13 AntCAAS 架构
- 14.14 架构特点 ● 多个pool解决安全性 ● node可以是物理机或者虚拟机 ● zk⽤用以监控node和container(可以多个pool共享⼀一套zk,也可以⽤用etcd) ● scheduler 调度器,负载container的创建调度 ● manager,对master提供管控的http rest接⼝口 ● registry-proxy 保证⺴⽹网络联通性以及cache镜像数据,加速镜像下载 ● 在node内起cadvisor监控container
- 15.15 架构特点
- 16.16 主要⼯工作
- 17.17 ⺴⽹网络扩展 ● 在docker默认的bridge/host/none/container4种⺴⽹网络模式的技术上,模拟 docker1.8的插件模型,扩展出vlan/vxlan两种drvier,正在实现vpc driver vlan driver⽤用于在物理机集群上,需要在交换机上为container分配⼀一个独 ⽴立的vlan⺴⽹网段; vxlan driver⽤用于解决经典⺴⽹网络ECS集群的overlay⺴⽹网络问题,是⼀一个轻量级 的私有⺴⽹网络解决⽅方案;
- 18.18 vlan driver ● 运维先创建⼀一个vlan cli --pool=pool2 network create myvlan -d vlan -l 10.209.164.0/22 -l Gateway=10.209.164.1 ● 动态创建⼀一个container cli --pool=pool2 container create --publich-service=.myvlan -l ip=10.209.164.8
- 19.19 vlan ⺴⽹网络模型 下⼀一步优化 1 mac nat 2 arp proxy
- 20.20 vlan driver 进⼀一步优化 ● 新问题 交换机能纪录的mac地址和路由表项有限 container的arp请求消耗了⼤大量交换机的cpu 基于ovs进⼀一步优化
- 21.21 经典⺴⽹网络ecs的⺴⽹网络问题 经典⺴⽹网络的ECS是⼀一个⼤大⼆二层的虚拟⺴⽹网络,结构与vlan⺴⽹网络基本⼀一致,⽤用户不能⾃自⼰己 指定ip,没有dns服务,通过安全组进⾏行⺴⽹网络隔离。 如果在经典⺴⽹网络的vm上起container,则不能为之分配内⺴⽹网/公⺴⽹网ip。 docker默认的bridge/host/none/container四种模式都⽆无法满⾜足蚂蚁关键中间件配置 中⼼心的需求。
- 22.22 vxlan driver解决的问题 ● 跨node的container⾃自定义ip直连, ● ⺴⽹网络隔离 ● container能够访问公⺴⽹网/node ⺴⽹网络 ● 负载均衡 ● 内部dns服务
- 23.23 vxlan driver example ● cli --pool=pool2 network create myvxlan -d vxlan -l Subnet=192.168.0.0/19 -l Gateway=192.168.31.254 ● cli --pool=pool2 dns create dns1 -x myvxlan ● cli --pool=pool2 container create --publich-service=.myvxlan -l Ip=192.168.31.3 -l Hostname=core-1 ● cli --pool=pool2 lb add_container 580cfe378bb --type=slb -l slb.config=/etc/acs/slb.config -l slb.lb=150240ff0a2-cn-hangzhou-dga0 -l container=24573203f308
- 24.24 基于ovs解决跨node的container互通
- 25.25 统⼀一镜像中⼼心 ● 全局⼀一份镜像中⼼心 镜像数据保存在oss上 registry ⽆无状态,可以⽔水平扩展 registry前加⼀一个tenginx做缓存 ● 在异地机房/pool部署registry-proxy 减少跨机房流量 加快镜像下载速度 对镜像进⾏行预热
- 26.26 统⼀一镜像中⼼心架构 进⼀一步优化: 1. 升级到docker registry v2 2. 以镜像为粒度管理缓存
- 27.27 集群复制与快速搭建 ● 在⽣生产实践中,经常需要快速搭建⼀一些复杂的集群,这些集群内部⾓角⾊色 众多,相互调⽤用关系复杂,对外依赖复杂 ● 不同环境下集群拓扑总有细微变化 registry + = cluster tempate clust topology + env list
- 28.28 镜像制作 ● build once , run anywhere 镜像需要和环境⽆无关,和环境相关的参数需要在启动时作为参赛传⼊入 ● 启动容器时候尽量不使⽤用mount
- 29.29 cluster template ● cluster template是集群静态关系的描述,静态关系之与环境⽆无关,例 如⾓角⾊色间依赖关系
- 30.30
- 31.31 环境属性 ● 外部资源 集群运⾏行所依赖的外部资源 - depends.yaml ● 集群内部资源 为了搭建这个集群需要新建的rds/ocs/oss/slb - resources.yaml ● 应⽤用特定配置
- 32.32 根据集群拓扑创建集群 ● 解析集群拓扑 ● 创建rds/slb/oss/ocs等资源 ● 根据集群拓扑为每个应⽤用创建container ● 后续会兼容docker-compose
- 33.33 已有应⽤用迁移的策略
- 34.34 理 想 模 式 落地的变通
- 35.35 ⽼老应⽤用迁移的痛 ● 谁来写Dockerfile并制作应⽤用镜像 蚂蚁线上已经有上千应⽤用,⼏几千开发⼈人员,很难⼀一下推动他们都学习 docker,切换到新的研发模式下; 如果需要开发⼈人员写dockerfile,会影响推⼲⼴广效率; ● 蚂蚁原有的运维/监控/SCM/财务等系统都是以vm为纬度的,基于 docker的运维发布系统与原有系统对接⽐比较⿇麻烦 以往运维都是先申请⼀一批机器,测试⺴⽹网络正常后备⽤用,上线前再决定跑 什么应⽤用; 发布应⽤用不重启vm,所以也不希望重启container; ● 怎么尽量保证开发测试环境与⽣生产环境⼀一致
- 36.36 应对策略 ● 开发辅助⼯工具帮助研发同学编译应⽤用/⾃自动⽣生成dockerfile/制作镜像并 搭建测试环境 ● 把CAAS当作轻量级的IAAS,让运维把container当作轻量级vm⽤用,便于 和已有系统对接 ● 使⽤用通⽤用的sofa4/sofa3 container,可以不需要制作应⽤用镜像
- 37.37 应对策略 ● 在基础镜像中集成sshd,运⾏行运维ssh到container中 ● 使⽤用supervisor启动应⽤用和相关监控/运维agent ● 提供webconsole允许开发⼈人员登录container查看⽇日志/进⾏行⼀一定权限的 操作 ● 使⽤用 data container 避免本地 mount
- 38.