第1页
Docker应⽤用:超⼤大规模容 器调度系统的设计与实现
The Power of Native
Allen Sun 「DaoCloud」
www.daocloud.io
第2页
个⼈人介绍
• DaoCloud技术合伙⼈人,⾼高级⼯工程师 • 热爱golang&docker • 《Docker源码分析》作者 • docker、swarm等项⺫⽬目committer
第3页
Agenda
什么是容器编排 容器编排与应⽤用系统 容器编排与调度能⼒力 DCE架构分析
第4页
什么是容器编排
⾯面向容器化应⽤用系统
CNCF 微服务架构应⽤用
容器调度能⼒力
资源分配与调度 容器动态迁移
容器集群能⼒力
容器通信能⼒力 集群扩展能⼒力
第5页
容器编排的评估指标
性能: • 扩展速度 • 响应时间
灵活性: • 与现有⼯工作流的集成程度 • 开发、测试、⽣生产环境的平滑迁移
简易程度: • 学习曲线 • 编排系统复杂度
第6页
容器编排与容器化应⽤用系统
• Cloud Native Application • 微服务架构 • 应⽤用通信能⼒力
第7页
Voting APP Voting APP Voting APP
Redis
worker worker worker
Result APP Result APP Result APP
front-tier
DB
front-tier
db-data
https://github.com/docker/example-voting-app
第8页
version: "2" services:
voting-app: image: voting-app ports: - "80" networks: - front-tier - back-tier
result-app: image: result-app ports: - "80" networks: - front-tier - back-tier
worker: image: app-worker networks: - back-tier
接右边
接左边
redis: image: redis ports: - "6379" networks: - back-tier container_name: redis
db: image: postgres:9.4 volumes: - "db-data:/data" networks: - back-tier container_name: db
volumes: db-data:
networks: front-tier: back-tier:
第9页
Compose UP !
第11页
容器调度能⼒力
资源分配与调度 资源利⽤用率 ⽤用户需求限制 快速决策能⼒力 多种公平原则
容器动态迁移 伸缩迁移 故障迁移
第12页
Node 1000 Container 100000
Latency <150ms
第14页
容器调度能⼒力
强⼤大扩展能⼒力背后 架构的精细 系统复杂度低 ⼯工作流组件数量精简
容器状态的缓存 容器状态由Swarm Manager缓存 减少数据的存储 提⾼高扩展速度 最终⼀一致性
第15页
DaoCloud Enterprise
⼀一套容器集群解决⽅方案 管理你的计算资源,包括物理机和公有云环境 部署并管理所有的 Docker 应⽤用
• 标准化 • 企业级 • 开放性
第16页
DaoCloud Enterprise 架构图
dce_agent 运⾏行⽤用户所有的容器和应⽤用
调⽤用 dce_swarm_manager 服 dce_controll 务,向⽤用户提供 WEB 控制台
er UI,集群管理 API 和 CLI 运维 套件服务
dce_swarm_ 安装有 Swarm 服务的容器, manager 负责容器节点的管理和⾃自发现
dce_etcd
key-value 键值库,负责存储集 群中的多种信息
第17页
系统⾼高可⽤用(HA)
启动多控制节点,主备⽅方式实现HA 分布式锁实现主节点选举 副节点实现请求转发 ⽀支持etcd、zookeeper等
主控节点
副控节点
副控节点
第18页
应⽤用⾼高可⽤用(HA)
Docker Engine的状态设置 正常状态 下线状态 维护状态
应⽤用容器⾼高可⽤用 应⽤用多实例 ⾃自动负载均衡 节点故障迁移
第19页
Thank You!