简单一点理解DC/OS是基于Apache Mesos和Marathon开发的定位于数据中心的操作系统。Apache Mesos就是这套操作系统的kernel,Marathon就是整个系统的生命周期维持者或者称为分布式的init,然后chronos执行周期性的任务,称为分布式的cron,Mesosphere
DCOS 可以运行在任意的现代Linux环境,公有或私有云,虚拟机甚至是裸机环境,当前支持的平台有亚马逊AWS,谷歌GCE,微软Azure,Openstack等等。据Mesosphere官网显示,Mesosphere DCOS在其公有仓库上已提供了40多种服务组件,比如Hadoop,Spark,Cassandra, Jenkins, Kafka, MemSQL等等。
所以在学习DC/OS之前我们先来看了解一下Mesos,下图是Mesos两级调度的架构图:
Mesos Master第一级调度是负责收集资源和slave 状态,他并不做实际的运算任务,第二级调度做scheduling和Framework(比如Marathon,Chronos)通信。ZooKeeper做服务发现和HA。
Mesos master协调所有的slave,并确定每个slave节点的可用资源。
Mesos master本身不做资源调度,而是发出资源邀约给注册到Master的对应Framework,这时候二级的任务调度器根据task所需的资源做出判断,是否接收资源。若是接收,返回资源接收,Master下发任务给Framework,Framework执行任务。若是拒绝,Master可用马上分发资源给其它Framework,缓解了Framework的资源饥饿问题。
Mesos master本身不做资源调度,而是发出资源邀约给注册到Master的对应Framework,这时候二级的任务调度器根据task所需的资源做出判断,是否接收资源。若是接收,返回资源接收,Master下发任务给Framework,Framework执行任务。若是拒绝,Master可用马上分发资源给其它Framework,缓解了Framework的资源饥饿问题。
然后DC/OS就是基于这样的资源调度的一个云计算操作系统平台,看一下他的架构:
这里的Kernel Space和User Space指的是针对DC/OS这个操作系统来说的,Kernel Space就是Master Master 和Mesos
Agent组成的,想象一下linux操作系统的Kernel Space主要就是scheduling,resource management,这点跟DC/OS很像,然后User Space就是DC/OS的系统应用和framework,像web UI 是基于Nginx开发的,ZooKeeper,Marathon,Spartk,Hadoop,Mesos-DNS,Kafka,Cassandra.
他目前可以实现一下功能:
- High Resource Utilization
- Mixed Workload Colocation
- Container Orchestration
- Extensible Resource Isolation
- Stateful Storage Support
- Public and Private Package Repositories
- Cloud-Agnostic Installer
- Web and Command Line Interfaces
- Elastic Scalability
- High Availability
- Zero Downtime Upgrades
- Integration-Tested Components
- Service Discovery and Load Balancing
资源高可用、容器编排、弹性扩容,秒级启动成百上千任务,无宕机升级等等。
DC/OS的组件集成了很多开源的优秀软件,主要的组件包含一下几项:
Admin Router Service: dcos-adminrouter.service, 基于Nginx开发的账户验证、服务代理和内部组件和服务的负载均衡器。
Admin Router Reloader: dcos-adminrouter-reloader.service, 用于重启Admin Router Service的Nginx服务。
Admin Router Master: 高性能web 反向代理服务器,用户负载均衡 Master的流量。
Admin Router Agent: 高性能web 反向代理服务器,用户负载均衡 Agent的流量。
DNS Dispatcher: dcos-spartan.service, 域名解析的分流解析器。
Erlang Port Mapping Daemon: dcos-epmd.service, 一个叫Minuteman的DC/OS基于4层的负载均衡器。
Exhibitor: dcos-exhibitor.service, 一个来自Netflix的用户管理和自动化部署ZooKeeper的项目。
History Service: dcos-history.service, DC/OS UI的历史信息。
Layer4 Load Balancer: dcos-minuteman.service, DC/OS基于4层的负载均衡器。
Logrotate Mesos Master: dcos-lograte-master.service, Mesos Master的logrotate服务。
Logrotate Mesos Slave: dcos-lograte-master.service, Mesos Slave的logrotate服务
Marathon: DC/OS的Marathon服务,用于运行和监控长期运行的任务。
Mesos Agent: dcos-mesos-slave.service mesos slave的私有节点进程。
Mesos Agent Public: dcos-mesos-slave-public.service mesos slave的公共节点进程。
Virutal network Service: dcos-navstar.service, 提供虚拟网络和DNS服务。
OAuth: dcos-oauth.service, 提供DC/OS authorization服务。
Package Service: dcos-cosmos.service, 内部的包管理的API服务。
Signal: dcos-signal.service, 用于发送客户的诊断信息到Mesosphere来提高软件的质量。
以上服务均可以在/etc/systemd/system/dcos.target.wants/目录下找到。
未完待续。。。