网易云首席解决方案架构师刘超 - 网易容器云实践与云计算的那些坑

成雯华

2017/11/14 发布于 技术 分类

很多人以为虚拟化了就算是云平台,把应用移到虚拟机和云主机甚至容器上就算完成了上云。所有影响灵活和弹性能力的设计都会阻碍云计算潜力的发挥。本次分享人们理解和使用云计算的误区以及一个云原生应用设计的正确姿势。

文字内容
3. 云计算使用误区及容器云实践 刘超,网易云首席解决方案架构师
4. 云计算使用误区及容器云实践 刘超,网易云首席解决方案架构师
5. 网易云的历程
6. 您享受到了云计算的优势了吗? 可维护性 •  原来该写的脚本少写了么 •  原来该维护的表格少维护了么? 性能 •  当访问量增加的时候,能够快速的扩展么? 运维成本 •  需要的运维人员是少了还是多了,是不是更贵了, 更难招了?
7. 云计算的庞氏骗局? •  稳定,性能好 •  可远程运维 •  仅需Linux系统知 识即可运维 •  隔离性,使用率 •  传统虚拟化软件贵 •  会用虚拟化软件的, 有证的人也贵 •  开源无绑定,兼容性 •  开源不免费, 还要去适配, 定制一过头, 成本更加贵 •  不光会用,还要会开 发,最好是core •  轻量级,易迁移,持 续集成,DevOps •  看起来简单, 没有免费餐, 不是偷了懒, 就是提前赶, 一旦想商用, 全都不能免 •  全栈工程师不好找啊
8. 我是不是用了假的云计算?
9. 误区一:传统单体应用不加修改即进 行虚拟机或者容器部署 •  打包的东西太多 •  应用配置复杂 •  命令行手动配置 •  应用启动速度很慢 •  无法横向扩展
10. 误区二:不想修改应用而期望虚拟化 层的技术改进达到又要马儿好又要马 儿不吃草的结果 类虚拟 化 直通 灵活性? 可迁移性? 核绑定 SR-IOV NUMA 横向扩展能力抵销虚拟化性能损耗
11. 误区三:期望对虚拟机进行细粒度的 调度,感知物理机和机架
12. 误区四:喜欢指定所有的机器的规格, 然后一次性进行包年包月购买 Reserved Instances Instances 资源包 4核8G 1核2G 1核2G 1核2G 1核2G 2核4G 2核4G 4核8G
13. 误区五:全公司共用一个账号 组织 账号 账号 子账号 子账号 子账号
14. 误区六:不规划和使用VPC进行网络 隔离
15. 误区七:所有的机器都带公网IP地址, 并且使用用户名密码登陆
16. 误区八:期望完全由基础设施层解决 应用层的高可用问题 Fault Tolerant •  几乎实时 •  了解CPU, 内存,硬盘 双活 •  十几分钟 •  了解共享存储 High Availability •  秒到分钟级 •  了解共享存储 容灾 •  小时级别 •  了解数据 事务提交 幂等调用 内存数据 事务回滚 消息重发 API熔断 磁盘缓存
17. 误区九:自己搭建数据库,大数据平 台等公共基础设施 对象存储 关系型数据库 MongoDB 容器 云主机 安全 弹性缓存 大数据
18. 如何发挥云计算的优势 工具链 服务编排 持续集成 日志监控 容器服务 镜像构建 容器服务 前端 页面 移动 前端 Web 前端 管理员 前端 业务 系统 商品 订单 用户 客服 中心 中心 中心 中心 财务 中心 运营 供应链 基础 服务 用户 服务 商品 服务 交易 服务 社交 服务 决策体系 供应链 服务 云 原 生 应 用 平台服务 基础服务 缓存服务 负载均衡 对象存储 数据库 安全服务 大数据 云主机 云网络 云硬盘
19. 容器层实践-总体架构
20. 容器层实践-详细架构 Auth Hub LB Manager LB Pod LB Controller SDN Controller OVS Volume Volume Controller Ceph OVS Volume
21. 容器层实践-计算安全 安全隔离:不同租户主机隔离,内核隔离,虚拟网络隔离
22. 容器层实践-启动速度 •  问题 •  容器运行于云主机,容器启动依赖于云主机先启动,而基于硬件虚拟化 技术的云主机启动速度较慢 •  启动速度优化 •  定制系统镜像,裁剪不必要服务启动加载项 •  实现云主机IP静态化,加速网络初始化过程 •  优化OpenStack创建云主机流程
23. 容器层实践-网络存储 高性能:网络和存储无二次虚拟化,保证高吞吐量 物理机 虚拟机 容器 物理机 虚拟机 容器 物理机 虚拟机 容器 物理机 虚拟机 容器 容器网络 虚拟网络 物理网络
24. 容器层实践-统一集群 大规模单容器集群,统一由云平台运维,用户仅仅需要关注应用 租户A应用运维人员负责 租户B应用运维人员负责 虚拟机 虚拟机 虚拟机 虚拟机 虚拟机 虚拟机 虚拟机 虚拟机 容器 容器 容器 容器 容器 容器 容器 容器 容器平台 容器平台 容器平台 OpenStack 物理机 云计算运维人员负责 OpenStack 物理机
25. 容器层实践-编排性能 •  性能问题: •  原生K8S编排的可扩展性有瓶颈,无法支持更大规模节点的编排 •  K8S各组件在高水位下资源占用太大 •  优化手段 •  实现调度器并行调度,提升集群调度能力 •  实现副本控制器多优先级处理,提升容器创建速度 •  精简内部负载均衡转发表 •  优化api-server和kubelet、kube-proxy,减少内存资源占用
26. 应用层实践-总体架构
27. 应用层实践-设计要点一:负载均衡 +API网关 网站用户 *.zc.163.com LBS /service1/**/*.ac0on /api/** API网关 /**/*.ac0on 服务1 服务2 服务3 RDS redis (ncr) RDS redis (ncr) RDS redis (ncr)
28. 应用层实践-设计要点二:服务拆分与 服务发现 服务 DoAcker 服务 DoBcker 服务 DoCcker 服务 DoDcker 服务 DoAcker 服务 DoBcker 服务 DoBcker 服务 DoCcker 服务 DoCcker 服务 DoDcker 开发独立: 代码耦合度比较高,修改代码通常会对多个模块产生影响,操控难度大,风险高 上线独立: 单次上线需求列表多,上线时间长,影响面大 简化扩容: 由于业务多,每一次扩容需要增加的配置比较杂。一些不起眼的小业务虽然不是扩容 的主要目的,也需要慎重考虑 容灾降级:核心业务与非核心业务耦合,在关键时候互相影响
29. 应用层实践-设计要点三:对象存储 +CDN下载
30. 应用层实践-设计要点四:使用PaaS服 务降低设计难度
31. 应用层实践-设计要点五:无状态化服 务改造
32. 应用层实践-设计要点六:容器作为持 续集成持续交付的工具
33. 应用层实践-设计要点七:基于代码仓 库的持续交付流程
34. 应用层实践-设计要点八:集中的配置 管理
35. 应用层实践-设计要点九:基于流和搜 索引擎的日志分析
36. Thank you !