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
-
http://m.baidu.com/from=1012704z/bd_page_type=1/ssid=0/uid=0/pu=usm@3,sz@320_1001,ta@iphone_2_5.0_3_537/t=iphone/l=3/tc?w=0_10_dcos&ref=www_iphone&lid=8840602564975827858&fm=alop&m=8&srd=1&nt=wnor&title=DCOS%E4%BB%8B%E7%BB%8D-qianggezhishen%E7%9A%84%E4%B8%93%E6%A0%8F-%E5%8D%9A%E5%AE%A2%E9%A2%91%E9%81%93-CSDN...&dict=20&w_qd=&eqid=7ab021317dca9c0010000002587eee95&ntc=1&bdenc=1&nsrc=IlPT2AEptyoA_yixCFOxXnANedT62v3IGtiTKS2TLDmhmU4thPXrZQRAYyHbKXiKJoCb9mK0dM-MbDOu0FBvjQV1mKdptG5a8H8b&tcid=iy2iedwx&ptcid=iy2idz51