Anzeige
Anzeige

Más contenido relacionado

Anzeige

Más de ChinaNetCloud(20)

Último(20)

Anzeige

Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲

  1. DevOps & Docker 的最佳实践 云络科技/ 王 寒
  2. 自我介绍 • 王寒 • 香港科技大学 • IBM,微软 • 云络科技 (ChinaNetCloud) 架构师
  3. 1 DevOps的现状 内容 3 DevOps的基础 2 DevOps的四个阶段 4 DevOps案例分享 5 Docker的优势与挑战 6 DevOps的愿景 7
  4. DevOps DevOps是一种在促进开发与运维的交 流与合作的条件下,以自动化工具与流 程为基础,更快速,高效和稳定的实现 环境搭建,代码的部署,交付,测试以 及发布的一种文化和趋势。 文化 合作 自动化 高效
  5. DevOps 的四个阶段 传统简单自动化 持续交付与静态Docker 增强与动态Docker 全面持续交付与自动化 DevOps
  6. 第一阶段:传统简单自动化 • 编写脚本 • 简单的自动化工具,如 Ansible
  7. 第二阶段:持续交付与静态Docker • 实现持续交付 (Continuous Integration) • 静态Docker系统,没有调度,扩展等自动化机制,人工决定资源的调配, 系统对于动态负载的弹性较弱
  8. 第三阶段:加强与动态Docker • 不断改进持续交付以及实现自动化测试 • 支持更复杂的应用架构 • 动态Docker集群,自动调度,恢复,服务发现等,利用Swarm, Kubernete等工具
  9. 第四阶段:全面持续交付与自动化 • 全自动化的阶段 • Infrastructure – as – code 整个系统和应用是在Git中的一系列文件,包括 云(基础设施) 服务器 应用 等一切 • 非常理想化也非常困难
  10. DevOps的基础 Full Version Control 版本控制 代码提交,复查,合并等 Environment/System abstraction 抽象环境 满足多环境部署,配置独立且自动化 Full-automated Testing 自动测试 功能和依赖关系的测试自动化 Full Continuous Integration 持续集成 持续性测试任何变更,持续部署各个环境
  11. DevOps 案例分享 — 背景 版本控制 环境抽象化 自动化测试 完全持续交付 GITLAB Docker 自动脚本 Jenkins • 实现 DevOps 第二阶段 • 应用环境在 AWS • 每两周发布新版本,每日推送更新3-4次
  12. DevOps 案例分享 — 环境与架构 • AWS 中国 • 开发语言 (Java / Nodejs) • Docker (CoreOS) • Redis (Elastic Cache) • MySQL (RDS) • Postgres (RDS) • MongoDB cluster (EC2) ELK (EC2) • Hadoop (EC2, self host) Solr (EC2) • ELB, S3, SQS, SNS
  13. DevOps 案例分享 — 环境与架构 Docker 1 Docker 2 . . . Docker 9 Internal ELB Docker 1 Docker 2 . . . Docker 9 Docker 1 Docker 2 . . . Docker 9 …... Port: 50002 Port: 50001 Port: 50011Port: 500n1 VM (n) VM2 VM1 API GATEWAY (Docker 9) Public ELB Port: 4080 Port: 50000, 50010 … 5000n0 Port: 50010 Node.js (Stateless) Port: 443 Redis Session Control VM IP Docker IP Mapping
  14. DevOps 案例分享 — 环境与架构 Commit Build Package Docker Image Docker Registry (Testing) Test Testing Deploy Testing Dcoker Registry (UAT + Prod) Deploy Prod Deploy UAT Staging UAT Test Prod Local AWS
  15. DevOps 案例分享 — Docker 打包 Commit Package Docker Image Docker Registry Build Testing Push Pull Run • 代码提交打包 • 创建Docker Image • 注册Docker Registry • 多环境部署就绪
  16. DevOps 案例分享 — Docker 部署 • Docker可以帮助实现环境抽象化,有如下两种方式: • 起 Docker container时定义-e environment, 自动匹配相对应的环境配置, 弊端 是每次环境配置变更,都要重新制作Docker image并且重新部署所有环境 • 另外一种方法是用Docker和CoreOS (etcd)相配合,将环境变量和image分离,由 etcd服务来发现和管理配置,每个image中包含不同环境的代码和配置,实现 数据和配置的解耦
  17. DevOps 案例分享 — Jenkins & Docker
  18. DevOps 案例分享 — Jenkins • 利用Jenkins • 变更持续更新 • 多环境测试
  19. Docker 的优势 • 高性能,运行时性能可以提升 • 工具,有系统的工具去动态管理环境,发现服务,存储等 • 灵活,将应用和系统“容器化”,更加便捷部署应用 • 敏捷,可以快速复原和更新变更 • 轻量,在一个服务器上可以部署很多容器 • 便宜,来源,免费,低成本 • 生态系统,越来越受欢迎
  20. Docker 的挑战 监控 日志 排障 安全 网路
  21. Docker 的挑战 — 监控 • 基本监控:Docker 是否正常运行 • 三种监控技术:Cgroup 文件,Docker API 和 Docker 命令行 • 硬盘空间的检测需自定义 • 如何监控 Container 里的服务 1. Agent 在 Container 内 2. Agent 在 Container 外 Zabbix Low level Discovery
  22. Docker 的挑战 — 日志 应用 日志 ELK 工作 专用 容器 GELF
  23. Docker 的挑战 — 故障排查 Bash Shell Container 修改难度大 无法SSH到Container
  24. Docker 的挑战 — 安全 • Docker 安全补丁复杂 • Container 与 虚拟机的隔离 • Docker 的安全标准与规范 Docker 的挑战 — 网络 • 多种模式 • 动态系统 • 集群工具 1. Links — 端口 2. Selinux — 增强安全
  25. DevOps 的愿景 自动伸缩 动态 Docker Green/Blue 滚动 • 通过CloudWatch设定监控阈值 • 与AWS Auto -Scaling相结合 AWS Launch Configuration • 集群化 • 自动调度,恢复,服务发现 • Swarm, Fleet, Kubernete, Meso等等 • 严格执行蓝/绿测试规则 • 通过AWS CLI/API将一台服务 器从ELB中取出 • 放入新的ELB下部署且测试 • 再将此服务器放入生产ELB 下,另一台取出,滚动部署
  26. 总结 • DevOps 是一种文化,趋势 • 我们建议实现第二阶段的DevOps • Docker 是实现DevOps的重要技术,要做应对挑战的准备 • Dev 做巧,Ops 做好

Hinweis der Redaktion

  1. Kubernete 集群管理,可视化工具
Anzeige