0. 容器的落地
从“容器运行”到“生产使用”
容器的数量级也会出现爆发性增长,容器多起来之后会产生很多问题。
1.容器编排(orchestration)
这里的编排泛指广义的编排,用于管理容器下面的主机,管理容器以及日期之间的逻辑关系,即为我们所知的应用架构。
- 集群管理:配置管理、资源视图、节点增删、高可用
- 容器调度:容器部署(平均地部署到每个主机上去,并在某个主机资源紧张的时候把容器迁移到其他主机)、调度策略(将几个通信紧密的容器总在同一个主机上运行)、互斥(资源消耗大的容器总是运行在不同的主机上)
- 故障恢复:主机检查(主机崩溃,让容器在其它主机上运行)、容器检查(容器故障,重启或重新部署,保证应用的健康运行)
- 应用编排:应用是一个个细微的容器来组成,每一个容器之间具有一定的逻辑关系,我们需要使用简单明了的编排语句将这些容器关联起来,比如容器之间的端口访问,容器的启动顺序等,从而实现整个应用的逻辑架构。
2.编排主流的3大工具
Swarm: Docker推出 2014年发布 内置于Docker,和compose一起使用
Mesos: Apache推出 2007年发布 一般会结合marathon、Aookeeper一起使用
Kubernets: Google推出 2014年发布 结合Etcd一起使用
3.负载均衡和服务发现
- 负载均衡:请求到达负载均衡器之后,负载均衡器将请求平均的分配到后面的容器上。
- 常用的负载均衡的技术:haproxy,LVS,F5,Nginx
- 服务发现:(如何知道新增加的负载?)服务发现会自动将容器的配置信息上传至配置中心(config center),包含了容器的IP,端口、对外的域名等。负载均衡会周期性地从配置中心定期获取配置信息,将容器加入负载均衡器的访问架构中。
- 常用的服务发现的技术:Etcd,Zookeeper,Consul
4.日志管理
- 日志:包含主机、编排工具、日志、容器、容器中的应用等等相关的日志
- 对日志处理平台的要求:集中化、海量存储、灵活过滤、快速查询、伸缩性架构、高可用、强大的UI
- 日志管理软件:ELK ,包含了3个组件:
- Logstash,用于收集各种各样的日志
- ElasticSearch:主要用于存储和搜索日志
- Kbana:用于界面展示的管理工具
5. Docker监控
6. Docker平台架构
- 底层(平台层):对计算、网络、存储等等资源进行管理,结合容器引擎和容器编排的工具实现对容器化应用的落地。
- 能力层:实现容器的弹性架构和负载均衡,严格的权限体系
- 提供Web UI和功能齐全的API服务。