DCOS 介绍
Table of Contents
Created by gh-md-toc
DC/OS 介绍
一、什么是 DCOS
DC/OS (Data Center Operating System) 是以 Apache Mesos 为分布式系统内核的分布式数据中心操作系统
DC/OS 可以使企业像使用一台主机一样使用分布式数据中心的多个集群资源,进行弹性地扩容与缩容
DC/OS 实现资源自动化管理、进程调度、方便内部进程通讯、简化分布式服务的安装和管理
DC/OS 提供网页界面和 CLI ,方便对集群和其中的服务进行远程地管理和监控
二、DCOS 之容貌
一图以蔽之,我们可以看到它风骚一面。
三、DCOS 之架构
看人先看脸,这里先奉上一图。
DC/OS 近似模拟 OS 的架构,也分为用户空间和内核空间
内核空间包括 Mesos Masters 和 Mesos Agents ( Mesos container 和 Docker )
用户空间包括 System Components 和 Services
System Components ,主要有如下几个部分
Admin Router Service
Cluster ID Service
Cosmos Service
Diagnostices Service
Erlang Port Mapper (EPMD) Service (also called minuteman)
Exhibitor Service
Gen-resolvconf Service
History Service
Logrotate Service
Marathon Service
Mesos-DNS Service
Signal Service
Distributed DNS Proxy
etc
Services,主要用如下两个部分
通常是所说的 Frameworks (Scheduler & Executor)
用户级的应用程序,如 nginx webserver.
四、DCOS 之功能
先奉上一图。
DCOS 以开源技术 Mesos,Docker,Marathon 为引擎,在其上开发了 DCOS 控制台、监控管理模块、弹性扩缩容调度模块、统一日志模块、资源配置模块、鉴权模块、持续集成平台等。
DCOS 控制台
包含 DCOS Dashboard、主机性能展示、容器性能展示、应用性能展示、集成指标展示、事件指标展示等
监控管理模块
包含监控数据采集、日志管理、告警管理和事件管理四个功能模块
分别进行监控数据采集,实现对监控告警策略,日志告警策略的配置,对告警联系人和告警方式的配置,同时生成和维护告警事件
弹性扩缩容调度模块
主要由容量数据分析与弹性伸缩策略管理两个组件组成,通过弹性伸缩策略的配置,基于系统容量数据的分析,生成动态扩缩容的指令
基于应用实例线程数、CPU 使用率、内存使用率、应用响应时间等容量数据,通过灵活的调度算法实现应用系统服务实例的动态弹性扩缩容
统一日志模块
采用 Elasticsearch、Logstash、Kibana 等组件构建,实现对容器日志的统一存储及检索。
资源配置模块
包含服务目录模块、规则管理模块及动态 CMDB 信息采集更新三个功能模块,及时发现 DCOS 的资源、服务的变更,动态实现配置中心数据实时更新,为 DCOS 调度提供数据支持。
鉴权模块
包含用户管理、用户组管理、权限策略管理和统一认证接口四个功能模块
持续集成
包含镜像构建、集成测试、流程管理和上线管理四个功能模块,实现可持续的,自动化的上线发布管理(待建设)。
五、DC/OS 之高可用性
DC/OS 的 HA 通过采用以下几点方案来保障:
主从( Leader/Follower )架构
Mesos ( 3 ~ 5 masters )
Marathon ( at least 2 for HA )
ZooKeeper
错误域( Fault domain )隔离
物理域( Physical domain )
- 主机( machine )、机架( rack )、数据中心( datacenter )、区域( region )、可用区( availlability zone )etc
网络域( Network domain )
- shared network switch etc
服务分离
- 服务与服务之间的去耦合
消除单点故障
- 采用多台主机
快速失败检测
ZooKeeper 可以用于网络分区或者主机失败的服务检测
Marathon 可以利用 Services expose 的健康检测点
Fast failover
HA load balancer ,比如: marathon-lb,Minuteman (内网 4 层负载均衡)
采用 12-facter app 的约束进行构建 App
遵从 REST 的最佳实践进行构建 Services
六、DC/OS 安全
先奉上一图。
General security concepts
设置正确的文件访问权限
root 与 普通帐户管理
用 iptables or other firewalls 保护网络安全
日常更新 Linux 内核
system libraries
utilities
core services (systemd)
OpenSSH
etc
Security Zones
Admin zone
通过 HTTP/HTTPS and SSH 连接访问
通过 routing 提供反向代理访问其他节点
通过设置白名单允许部分 IP 访问 admin zone
Private zone
它是一个非路由网络,只允许 admin zone 和 public zone 的 边缘路由器访问该区域
部署的 services 也跑在其中
Public zone
公共访问的应用会跑在这个区域
这个区域的节点都有 public/private IP 且在 iptables 中提供特定访问端口
Admin Router
它控制 admin zone 的访问
代理进入 DC/OS 集群的 HTTP requests
拒绝非授权的 HTTP endpoints
七、DC/OS 服务发现
先奉上一图。
DC/OS 采用如下两层服务发现实现:
VIP
DC/OS 将通信从单个 VIP 映射到多个 IP 和端口
可以将多个 VIPs 分配给 App
可以通过 DC/OS Marathon UI 将 VIP 分配给 App
Mesos-DNS
允许集群中的 applications and services 通过 DNS 找到彼此
它通过查询(默认每 30 s )master 来获取并更新所有 services 的 running tasks status
可以负载均衡 DNS 请求
访问外网,需要外部 DNS server 支持
Service Naming
A Records (address records)
提供 agent IP 或 container IP
<task>.<service>.mesos
<task>.<service>.slave.mesos
SRV Records (service records)
_mytask._protocol.myservice.mesos
Other Records
leading master
all service schedulers
DC/OS master
DC/OS agent