More Related Content Similar to Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲 (20) More from ChinaNetCloud (20) Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲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中包含不同环境的代码和配置,实现
数据和配置的解耦
19. Docker 的优势
• 高性能,运行时性能可以提升
• 工具,有系统的工具去动态管理环境,发现服务,存储等
• 灵活,将应用和系统“容器化”,更加便捷部署应用
• 敏捷,可以快速复原和更新变更
• 轻量,在一个服务器上可以部署很多容器
• 便宜,来源,免费,低成本
• 生态系统,越来越受欢迎
21. Docker 的挑战 — 监控
• 基本监控:Docker 是否正常运行
• 三种监控技术:Cgroup 文件,Docker API 和 Docker 命令行
• 硬盘空间的检测需自定义
• 如何监控 Container 里的服务
1. Agent 在 Container 内
2. Agent 在 Container 外
Zabbix Low level Discovery
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
下,另一台取出,滚动部署
Editor's Notes Kubernete 集群管理,可视化工具