Qunar 云原生容器化落地实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. Qunar 云原生容器化落地实践 邹晟
2. 讲师简介 请插入 您的照片 邹 晟 Qunar 基础平台 DevOps 技术专家 ee.msup.com.cn Qunar 基础平台技术专家,专注云原生、 混沌工程等领域
3. 背景与收益 目 录 实践路线图 关键实践 总结与规划 ee.msup.com.cn
4. 1 ee.msup.com.cn 背景与收益
5. 背景-痛点 环境不一致、稳定性差 环境交付慢 服务器多运维成本高 降服务器成本 SDK 推动升级难,周期长 ee.msup.com.cn
6. 我们眼中的云原生 What ee.msup.com.cn 云原生是一系列可以为业务赋能的技术架构准则,遵循它可 以使应用具有扩展性、伸缩性、移植性、韧性等特点 Why 基础架构需要演进,它可以让业务更敏捷 How DevOps、微服务、容器化、可观测性、反脆弱性(chaos engineering)、Service Mesh、Serverless
7. Qunar 容器化历程 2014 尝试用 docker 解决环境构建困难的问题 2015 mesos 上跑 es 至下而上 2017 mesos 迁移 k8s 2018 自动化测试容器化试点 2019 测试环境 mysql 容器化 2020 业务应用容器化 至上而下 ee.msup.com.cn 2021 业务应用全面容器化 基础架构支持 service mesh
8. 业务价值 敏捷性 弹性伸缩 环境稳定性 环境一致性 节省人力 ee.msup.com.cn 资源成本 Dev/QA Dev/Ops PO
9. 2 ee.msup.com.cn 实践路线图
10. 容器化落地策略 ee.msup.com.cn
11. 容器化实践路线图 re-host 1 价值 认同 ee.msup.com.cn 2 规范 制定 3 工具 建设 4 迁移 落地 5 验收
12. 3 ee.msup.com.cn 关键实践
13. 实践1 - 价值认同 1. 自证价值- 自己的服务先容器化 ? 容器化的 ROI 是多少 怎么证明? 2. 放大价值- 解决业务线实际问题 3. 技术宣讲-价值宣传,找vip用户 ee.msup.com.cn
14. 实践2 - 规范制定 规范 说明 应用部署节点 1. 应用不需要关心部署在哪个机房,默认都是多机房部署 2. 应用不应该依赖节点和 IP 信息 应用日志 1. 为了配合日志的轮转和收集,文件名不能以日期命名 2. 实时日志1小时轮转一次 3. 业务日志不要打到 catalina.out 中 4. Java 应用统一使用 logback 管理日志 5. 实时日志统一使用 Loki, 离线日志使用 ELK 1. 部署路径、端口号统一 应用部署 2. 应用启动后 hook 脚本不再支持,只支持启动前、和上线前 、下线前 hooks 3. 需要预热操作加载大数据文件的可以以 data_url 的方式配置 4. 禁止 kvm 部署 ee.msup.com.cn
15. 实践3 - 工具建设 以应用为中心 ee.msup.com.cn
16. 实践3 - 工具建设 改造前 ee.msup.com.cn
17. 实践3 - 工具建设 改造后 ee.msup.com.cn
18. 实践3 - 工具建设 - CD 发布系统 ee.msup.com.cn
19. 实践3 - 工具建设 - CD 应用画像 ee.msup.com.cn 身份:AppCode 类型 AppType 归属:Tree path 监护人:Owner/Member 等级:P1~P4 基本属性 • • • • • 环境属性 • • • 硬件要求 软件版本 环境配置 发布参数 • • • 编译参数 打包参数 发布策略 依赖信息 • • • 网络依赖 数据库依赖 服务调用依赖
20. 实践3 - 工具建设 - CD 应用 Pod ee.msup.com.cn 问题点: 发布过程看不到标准 输入输出
21. 实践3 - 工具建设 - CD 应用 Pod ee.msup.com.cn 问题点: 容器异常重启,启动 过程中会接入流量, 导致请求失败
22. 实践3 - 工具建设 - CD 应用 Pod ee.msup.com.cn
23. 实践3 - 工具建设 - CD 授权系统改造前 特点: db 和 安全的 ip 只增不减, 脏数据很多 改造前 ee.msup.com.cn
24. 实践3 - 工具建设 - CD 授权系统改造后 ee.msup.com.cn
25. 实践3 - 工具建设 - CD 发布策略对比 双 deployment 更新 (当前策略) KVM 发布策略 滚动更新 更新方式 原地更新,先减后增 Deployment 默认的 rolling update 策略 双 deployment 分批次更新,先 扩后缩 支持分批 支持 不支持 支持 缺点 实例冗余不足的服务更新过 程中会造成响应时长增加 优点 ee.msup.com.cn 过程可控 1) 更新速率不好控制,太快不稳定, 太 慢体验差 发布过程资源 要有一定的 buffer 2) 不支持分批,整个发布流程不可控 完全自动化 1. 发布过程可控 2. 操作复杂性低 只有创建和删除
26. 实践3 - 工具建设 - CD 双 deployment 发布 ee.msup.com.cn
27. 实践3 - 工具建设 - CD 难点 ee.msup.com.cn 91 % 72 % KVM 发布成功率 容器发布成功率
28. 实践3 - 工具建设 - CD 难点 91 % 72 % KVM 发布成功率 容器发布成功率 15% check_url 失败 14% deployment 更新失败 71% ee.msup.com.cn db 授权失败
29. 实践3 - 工具建设 - CD 难点 问题:单批次发布有个别的 pod 失败,怎么处理? ee.msup.com.cn
30. 实践3 - 工具建设 - CD 难点解决-重试 ee.msup.com.cn
31. 实践3 - 工具建设 - 可观测性 日志 ee.msup.com.cn 事件 指标 Tracing
32. 实践3 - 工具建设 - 可观测性 ee.msup.com.cn
33. 实践3 - 工具建设 - 中间件 差异分析 ee.msup.com.cn 差异点 KVM 容器 资源申请 提前申请 即建即销 元信息 hostname 和 ip 正常情况下保持不变 随时变化 发布流程 先下线再上线 先扩容再缩容 环境标识 类别是 kvm 类别是容器
34. 实践3 - 工具建设 - 中间件 改造点 组件 改造点 qmq 广播场景下加快无效数据的清理 qconfig/qschedule 实例配置改为服务级别 dubbo ee.msup.com.cn 1. 服务上线下线的 zk 节点标志改为临时节点 2. 故障保护机制改造 Mysql/redis SDK 根据标识区分环境和集群 Openrestry 支持Kvm和容器共存
35. 实践3 - 工具建设 - 中间件 自动升级 SDK 效果: 50% 的 java 应用通过 自动升级 SDK 实现自 动接入容器化 ee.msup.com.cn
36. 实践4 - 迁移落地 背景 Java 应用数量 3000+, 如何提高迁移速度? 应用 sdk 升级验证繁琐, 能否自动化? 如何安全可靠的完成线上容器化迁移? ee.msup.com.cn
37. 实践4 - 应用平滑迁移方案设计 01 02 前置校验 测试环境验证 ee.msup.com.cn 03 线上验证 04 混合部署 05 全量部署 06 观察
38. 实践4 - 自动迁移方案 ee.msup.com.cn
39. 实践4 - 自动迁移 - 迁移助手 ee.msup.com.cn
40. 实践5 - 验收 迁移成本 容器化应用数 : 3000+ 容器化自动化应用数 : 1300 (+43%) 运维人力 容器化前每天宿主运维的 PD 数: 0.5 容器化后每天宿主运维的 PD 数 : 0 交付效率 容器化前发布时长(min): 3.8 容器化后的发布时长(min): 2.1 (+44.7%) 资源成本 容器化前单机部署的 kvm 数: 14 容器化后单机部署的 pod 数:20 (+43%) ee.msup.com.cn
41. 4 ee.msup.com.cn 总结与规划
42. 总结:成功要点 • 价值认同 知之不深,则行之不笃; 知之愈明,则行之愈笃 • 产品同理心 用户收益、迁移成本、使用成本 • 工程化方法 自动化前置检查、升级 sdk、测试、迁移 ee.msup.com.cn
43. 未来规划 稳定性治理 资源利用率提升 Service mesh 落地 ee.msup.com.cn
44. 关注msup公众号 获取更多工程效能实践案例

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-25 14:05
浙ICP备14020137号-1 $Map of visitor$