余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

弹性服务平台DC/OS—概览

xiyangw 2023-05-14 11:13 12 浏览 0 评论

DC/OS是什么

DC/OS能用来做什么?一句话,不管你的应用是什么形式的,何种语言开发,是独立的可执行程序,需要部署到容器中的应用,需要依赖缓存、MQ等中间件,需要多实例集群,还是具有更加复杂的物理拓扑,只要是能够部署到服务器集群中,就可以全部可视化的运行在DC/OS中。

弹性服务平台DC/OS—概览

想象这样一种场景,你有成百上千台服务器组成的网络,原本需要规划详细的清单,跟踪在每台服务器上安装的各种应用及其对应的依赖,一旦记录出错,很容易造成各种冲突甚至搞不清楚状况,出现各种各样的问题。作为开发人员,更是搞不清楚自己开发的系统部署成了何种拓扑结构,一旦出现问题,开发与运维在这个世界的各个角落中查找。

而现在,每台服务器除了安装基本操作系统,就只安装了DC/OS,然后所有的应用都通过DC/OS来部署安装,管理和监控,由DC/OS为你的应用提供CPU、内存、磁盘和网络资源并按需调度。作为开发人员,你通过WEB管理界面对所有的应用和中间件一目了然;作为运维人员,你只需要运维监控硬件、网络、操作系统和DC/OS,再也不用担心应用的各种奇葩依赖问题。

DC/OS在分布式的规模主机集群(Cloud或Bare Metal)之上构建了一个分布式操作系统,为上层业务应用按需提供资源。

开始探索DC/OS

下面我们尝试用类似面向数据流的分析方法来研究DC/OS。前文《领域修炼方法-论软件架构设计的思想及其适应性》讲过,面向数据流的分析是一种自外到内,自顶向下,逐层分解数据的输入/输出的结构化分析方法。

这里,我们对DC/OS的分析从外向内拆解。为三层:第一层将DC/OS作为一个整体,看其与外部的交互和职能(关于DC/OS职能的引导性阐述请参考《微服务和传统应用并存之道,极简架构:容器与DC/OS》一文的调度管理小节),第二层分析DC/OS的各个组成部分,看每一部分的职能极其为上层提供的支撑,第三层分析每一个组成部分的内部机制(限于篇幅,本层在后续文章中展开)。

第一层,将DC/OS看做一个整体

如下图所示,DC/OS为图中的中间层,下层为规模主机系统集群环境,上层为业务应用。

DC/OS依存的规模主机系统集群环境可分为三类。1)在本机搭建的Vagrant集群环境,2)基于云端服务实例集群构建的资源环境,3)本地物理主机集群或虚拟主机集群构建的弹性业务环境。

集群节点组成与划分

在一个DC/OS集群中,需要选择1/3/5台(当前,一旦选定安装后,集群master节点数将不能增加,如要变更,只能重建集群。集群节点数不是越多越好,生产环境推荐3/5个)主机安装master节点。

其余主机节点(下称Agent节点)安装DC/OS服务后,除了DC/OS自身占用的资源,其它所有空闲的CPU、内存、磁盘和网络端口等都被master归集在一起形成一个资源池。

为了网络安全,这些Agent节点划分为两类,一类为Public节点,通常会配置公网IP,可通过IP或DNS访问。DC/OS通常会在这些节点上部署Marathon-LB做负载均衡或者部署API网关。另一类为Private节点,DC/OS会将所有内部服务在这些节点上按需调度。

外部交互,CLI & GUI

DC/OS提供了强大的CLI命令行管理工具,可以安装、配置、更新和卸载服务,查看服务状态,跟踪服务日志等。特定服务也可以扩展CLI接口,提供自己特定的命令行管理操作。

Command line utility for the Mesosphere Datacenter OperatingSystem (DC/OS). The Mesosphere DC/OS is a distributed operatingsystem built around Apache Mesos. This utility provides tools for easy management of a DC/OS installation.

Available DC/OS commands:

auth Authenticate to DC/OS cluster

config Manage the DC/OS configuration file

help Display help information about DC/OS

job Deploy and manage jobsin DC/OS

marathon Deploy and manage applications to DC/OS

node Administer and manage DC/OS cluster nodes

package Install and manage DC/OS software packages

service Manage DC/OS services

task Manage DC/OS tasks

Get detailed command description with 'dcos <command> --help'.

DC/OS的GUI管理工具让所有的管理操作以可视化的方式进行。当前DC/OS的GUI管理接口可以浏览和查看Universe仓库并安装卸载应用,监控所有agent节点的状态和资源分配情况,查看、部署和维护管理所有的业务服务,查看服务的运行日志,部署和管理定时任务等。

与上层应用对接

DC/OS通过Mesos可以支持各种调度框架,如Marathon本身,Aurora和Singularity等长期服务调度框架,Hadoop,Spark,Storm,MPI和Exelixi等大数据处理服务框架,Chronos,Jenkins等批处理计划服务框架,Alluxio,Cassandra,ElasticSearch和MrRedis等数据存储服务框架,Linkerd等微服务框架,Vamp等DevOps工具服务。

DC/OS内置了Marathon调度框架,可以用来调度任何AppC容器镜像和Docker容器镜像。DC/OS自1.9版本开始支持Pods。

通过DC/OS,这些业务服务、框架及中间件再也不需要去各个主机系统上规划,配置和安装,直接在DC/OS中就可以完成,并具备负载均衡和弹性伸缩等能力。如果是单实例的服务,其能够在DC/OS中自动迁移的特性,也可以有效避免节点故障导致的服务不可用问题。

交互接口

DC/OS通过各个内部组件提供了丰富的管理端口和GUI管理界面

第二层,构成DC/OS的各个部分

DC/OS的核心组件是Mesos,内置的Marathon和Metronome三大核心组件及一系列外围服务组件,涉及:集群管理,容器运行,网络,存储,日志,监控,安全和部署等。

Mesos

Mesos负责调度底层计算资源。Mesos采用两级调度来控制集群中的资源配给。不同于集中式的存储集群中的资源信息,它通过资源提供(resource offers)的概念,让运行的框架通过Master获取Agent节点所提供的资源,从而保持整个系统架构的简洁和可扩展性。

Marathon

dcos-marathon.service,内置的Marathon负责调度容器应用。

Metronome

dcos-metronome.service,Metronome负责调度Job任务。

Admin Router(Agent)

dcos-adminrouter-agent.service,高性能的WEB服务器和WEB反向代理服务器,用于保存集群中所有Agent节点的列表。

Admin Router(Master)

dcos-adminrouter.service,高性能的WEB服务器和WEB反向代理服务器,用于保存集群中所有Master节点的列表。

Admin Router Reloader Timer

dcos-adminrouter-(agent)-reload.timer,周期性(默认每小时一次)的重启Admin Router Nginx服务,启用新的DNS解析。

Admin Router Service

dcos-adminrouter.service,由Mesosphere创建的一个Nginx配置,用于中心授权,代理集群节点内部服务。Admin Router服务是DC/OS内部核心的负载均衡服务。Admin Router是一个定制的Nginx,它在端口80上代理所有内部的服务。

Diagnostics

dcos-3dt.service,DC/OS systemd组件的诊断工具服务。

DNS Dispatcher

dcos-spartan.service,RFC5625标准DNS转发器。

DNS Dispatcher Watchdog

dcos-spartan-watchdog.service,确保DNS Dispatcher正常运行,如果DNS Dispatcher状态异常,该服务会将其杀掉。

DNS Dispatcher Watchdog Timer

dcos-spartan-watchdog.timer,每5分钟唤醒一次DNS Dispatcher Watchdog,检查DC/OS是否需要重启DNS Dispatcher。

Erlang Port Mapping Daemon

dcos-epmd.service,为Minuteman的4层负载提供服务支撑。

Exhibitor/Zookeeper

dcos-exhibitor.service,由Netflix开发的,可以管理和自动部署Zookeeper的监控管理工具。

Generate resolv.conf

dcos-gen-resolvconf.service,动态提供“/etc/resolv.conf”,使得每一个集群节点都可以使用Mesos-DNS将任务名称解析为对应的IP地址和端口。

History Service

dcos-history.service,该服务让DC/OS UI可以展示集群服务状态统计,并将最新的24小时的数据存储在磁盘上,同时公开一个HTTP API接口让用户查询。

Layer 4 Load Balancer

dcos-minuteman.service,该服务也称为“Minuteman”,是一个4层负载均衡实现,可以用来编排多层微服务架构。

Logrotate Mesos

dcos-logrotate-master(agent).service,自动循环压缩、删除和传送Master节点上的日志,确保不会在磁盘上存储过多日志文件。

Mesos Agent

dcos-mesos-slave.service,运行在Private Agent节点上的mesos-slave进程。

Mesos Agent Public

dcos-mesos-slave-public.service,该服务是运行在Public Agent节点上的mesos-slave服务进程。

Mesos DNS

dcos-mesos-dns.service,该服务负责在集群内部提供服务发现功能,这是DC/OS集群的内部服务,它为集群服务提供了域名“$sevice.mesos”,如一个Master Leader节点,其域名为“leader.mesos”,在集群内部就可以通过“ssh leader.mesos”登录该节点。

Virtual Network Service

dcos-navstar.service,该服务是一个守护进程,用来提供虚拟网络和DNS服务。

OAuth

dcos-oauth.service,该服务负责DC/OS的安全检查。

Package service

dcos-cosmos.service,内部打包API服务。当每次通过CLI执行“dcos package install”时都会调用该服务。该服务将DC/OS服务包从DC/OS Universe部署到你的DC/OS集群。

Signal

dcos-signal.service,该组件为帮助完善DC/OS,会周期性的向Mesosphere发送当前集群的概要信息反馈,并为集群问题提供高级检测。Signal查询Master节点上的诊断服务“/system/health/v1/report”,并将数据发送到SegmentIO,用于跟踪度量和客户支持。

REX-Ray

dcos-rexray.service,REX-Ray存储方案实现,让Marathon能够使用外部存储。

System Package Manager API

dcos-pkgpanda-api.service,创建链接,安装systemd服务单元,为每个主机建立指定角色(Master,Private Agent, Public Agent)。

了解了DC/OS的这些构件组成,下一步就需要厘清每一步操作形成的数据流经过了哪些组件,产生了什么结果输出,对整体系统有什么样的影响。

总结

DC/OS的应用实践到现在,个人感觉,说简单也简单,说复杂也复杂。说其简单,是因为它是一个开箱即用的弹性业务服务平台,能够快速上手;说其复杂,作为一个平台,如果你想真正掌握它,你必须对操作系统,容器,存储,网络,监控,日志,安全和部署等各个领域有基本的概念理论认知,同时能够将这些理论概念映射到构成DC/OS的各个构成组件上。

相关推荐

辞旧迎新,新手使用Containerd时的几点须知

相信大家在2020年岁末都被Kubernetes即将抛弃Docker的消息刷屏了。事实上作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使...

分布式日志系统ELK+skywalking分布式链路完整搭建流程

开头在分布式系统中,日志跟踪是一件很令程序员头疼的问题,在遇到生产问题时,如果是多节点需要打开多节点服务器去跟踪问题,如果下游也是多节点且调用多个服务,那就更麻烦,再者,如果没有分布式链路,在生产日志...

Linux用户和用户组管理

1、用户账户概述-AAA介绍AAA指的是Authentication、Authorization、Accounting,即认证、授权和审计。?认证:验证用户是否可以获得权限,是3A的第一步,即验证身份...

linux查看最后N条日志

其实很简单,只需要用到tail这个命令tail-100catalina.out输入以上命令,就能列出catalina.out的最后100行。...

解决linux系统日志时间错误的问题

今天发现一台虚拟机下的系统日志:/var/log/messages,文件时间戳不对,跟正常时间差了12个小时。按网上说的执行了servicersyslogrestart重启syslog服务,还是不...

全程软件测试(六十二):软件测试工作如何运用Linux—读书笔记

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux...

Linux运维之为Nginx添加错误日志(error_log)配置

Nginx错误日志信息介绍配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(nginx_core_module)的参数,该参数名字为error_log,可以放在不同的虚机主...

Linux使用swatchdog实时监控日志文件的变化

1.前言本教程主要讲解在Linux系统中如何使用swatchdog实时监控日志文件的变化。swatchdog(SimpleWATCHDOG)是一个简单的Perl脚本,用于监视类Unix系统(比如...

syslog服务详解

背景:需求来自于一个客户想将服务器的日志转发到自己的日志服务器上,所以希望我们能提供这个转发的功能,同时还要满足syslog协议。1什么是syslog服务1.1syslog标准协议如下图这里的fa...

linux日志文件的管理、备份及日志服务器的搭建

日志文件存放目录:/var/log[root@xinglog]#cd/var/log[root@xinglog]#lsmessages:系统日志secure:登录日志———————————...

运维之日志管理简介

日志简介在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。日志分类日志分类,对不同的日志进行不同维度的分析。操作系统日志操作系统是基础,应用都是在其之上;操作系统日志的分析,可以反馈出...

Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过

这两天沸沸扬扬的Log4j2漏洞门事件炒得热火朝天:突发!ApacheLog4j2报核弹级漏洞。。赶紧修复!!|Java技术栈|Java|SpringBoot|Spring...

Linux服务器存在大量log日志,如何快速定位错误?

来源:blog.csdn.net/nan1996jiang/articlep/details/109550303针对大量log日志快速定位错误地方tail/head简单命令使用:附加针对大量log日志...

Linux中查看日志文件的正确姿势,求你别tail走天下了!

作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是cat,tail,vi(或...

分享几款常用的付费日志系统,献给迷茫的你!

概述在前一篇文章中,我们分享了几款免费的日志服务器。他们各有各的特点,但是大家有不同的需求,有时免费的服务器不能满足大家的需要,下面推荐几款付费的日志服务器。1.Nagios日志服务器Nagio...

取消回复欢迎 发表评论: