其他分享
首页 > 其他分享> > 分布式技术原理笔记(二)分布式资源管理与负载调度

分布式技术原理笔记(二)分布式资源管理与负载调度

作者:互联网

第一章 集中式体系结构

集中式结构就是,由一台或多台服务器组成中央服务器,系统内的所有数据都存储在中央服务器中,系统内所有的业务也均先由中央服务器处理。多个节点服务器与中央服务器连接,并将自己的信息汇报给中央服务器,由中央服务器统一进行资源和任务调度:中央服务器根据这些信息,将任务下达给节点服务器;节点服务器执行任务,并将结果反馈给中央服务器。

集中式结构最大的特点,就是部署结构简单。这是因为,集中式系统的中央服务器往往是多个具有较强计算能力和存储能力的计算机,为此中央服务器进行统一管理和调度任务时,无需考虑对任务的多节点部署,而节点服务器之间无需通信和协作,只要与中央服务器通信协作即可,具体示意图如下所示:

 

以 Google Borg、Kubernetes 和 Apache Mesos 三个经典的集群管理系统为例,深入学习集中式结构的原理。

1.1 Google Borg

Borg 是 Google 内部使用的集群管理系统,采用了典型的集中式结构,负责提交、调度、开始、重启和管理 Google 运行在其上的所有应用。在 Borg 中,一个集群称为一个 Cell,每个 Cell 里面有一个 Leader,称为 BorgMaster,即为中央服务器;其他服务器为节点服务器从服务器,被称为 Borglet

BorgMaster由两个进程组成,一个是 Borgmaster 主进程,一个是独立的 scheduler 进程

Borglet是运行在每个节点机器的一个 agent,负责任务的拉起、停止、重启等,并管理和收集本服务器资源,将任务的状态、服务器状态等信息上报给 BorgMaster。

而 BorgMaster 会周期性地轮询每个 Borglet,以获取节点服务器的状态和资源信息等。

Borg 的整体架构示意图如下所示:

 

Borg论文: https://storage.googleapis.com/pub-tools-public-publication-data/pdf/43438.pdf

Borg 的主要用户是 Google 的开发者以及运行 Google 应用和服务的系统管理员(网站可靠性工程师,简称 SRE)。用户以 Job 的形式向 Borg 提交工作,每个 Job 由运行一个或多个运行相同程序的 Task 组成。每个 Job 运行在一个 Borg Cell 中,并将一组机器当作一个单元进行管理。

Borg 可以运行各种各样的任务,这些任务主要分为两类:

这些负载通常在 Cell 之间混合分布,每个 Cell 随着主要租户以及时间的不同会运行各种不同的应用:批处理类型的 Job 来了又走,而许多面向终端用户的 Job 又期望一个能长时间使用的模式。

对于这些不同的服务,要求 Borg 能很好地处理所有的情况。

Borg 主要有三大优点:

Borg 并不是第一个解决这些问题的系统,但却是少数能在这么大规模处理这些问题的同时,还能实现这样的弹性和完整性的系统之一。

1.2 Kubernetes

Kubernetes 是 Google 开源的容器集群管理系统,是 Borg 的一个开源版本。Kubernetes 是用于自动部署、扩展和管理容器化应用程序的开源系统。其核心是,在集群的节点上运行容器化应用,可以进行自动化容器操作,包括部署、调度和在节点间弹性伸缩等。

Kubernetes 也是典型的集中式结构,一个 Kubernetes 集群,主要由 Master 节点和 Worker 节点组成,以及客户端命令行工具 kubectl 和其他附加项。

Master 节点运行在中心服务器上,Master 节点由 API Server、Scheduler、Cluster State Store 和 Control Manger Server 组成,负责对集群进行调度管理。

REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

Etcd 是一个分布式的,依赖key-value存储的,最重要的分布式数据存储系统。

Worker 节点作为真正的工作节点,运行在从节点服务器,包括 kubelet 和 kube-proxy 核心组件,负责运行业务应用的容器。

Kubernetes 架构示意图如下所示:

 

Kube DNS 负责为整个集群提供 DNS 服务;CNI 是 Container Network Interface 的一个标准的通用接口,用于连接容器管理系统和网络插件。与 Borg 不同的是,Kubernetes 主要是一个容器编排引擎,不仅支持 Docker,还支持 Rocket(另一种容器技术)。

在容器管理方面,Kubernetes 有很多优势。

1.3 Mesos

Apache 旗下的开源分布式资源管理框架 Mesos 被称为是分布式系统的内核,最初由加州大学伯克利分校的 AMPLab 开发,后在 Twitter 得到广泛使用。

Mesos 的开发受到了 Borg 系统的启发,也是采用的典型的集中式架构。Mesos 与 Borg 不同之处在于,Borg 的 Master 直接对接用户应用,也就是说用户可以向 Borg 的 Master 直接请求任务。但 Mesos 不可以,Mesos 只负责底层资源的管理和分配,并不涉及存储、 任务调度等功能,因此 Mesos Master 对接的是 Spark、Hadoop、Marathon 等框架,用户的任务需要提交到这些框架上。也正因为此,Mesos 的任务调度框架是双层结构

在 Mesos 中,一个集群包括 Mesos Master 和多个 Mesos Agent。其中,Mesos Master 运行在中央服务器,Mesos Agent 运行在节点服务器上。

Mesos Master 通常采用一主两备的方式,以方便故障处理和恢复。而 Mesos Master 的选主策略,采用的是 ZAB 算法

Mesos 架构示意图如下所示:

 

 如上所述,Mesos 对接的是框架,并且可以同时对接多个框架。

Mesos具有如下优势:

随着分布式应用程序和微服务的流行,越来越多的用户正在寻找一种技术,来帮助他们管理这些复杂的应用程序。而 Mesos 为数据中心带来的这些好处,就使得越来越多的人关注 Mesos 及其相关项目。

Mesos 是如何支持容器部署的?

目前,容器技术十分热门,解决了服务打包发布、资源隔离的问题。我们知道,Kubernetes 的设计主要针对的就是容器,那么 Mesos 又是如何支持容器部署呢?Mesos 本身只负责资源管理,不负责任务调度。但 Mesos 可以对接不同的框架,Mesos+Marathon 可以支持容器调度和部署。Marathon 支持容器的调度,将容器部署请求发给 Mesos Master,Mesos Master 再将请求转发给 Mesos Agent,Mesos Agent 的执行器会将容器拉起。目前,Mesos+Marathon 支持的容器,主要包括 Docker 和 cgroups。

1.4 总结

3 种集群管理系统的对比

 

标签:容器,负载,Mesos,节点,Master,Borg,服务器,资源管理,分布式
来源: https://www.cnblogs.com/wkfvawl/p/15675613.html