专栏首页机器学习与系统Borg:Google集群管理大杀器

Borg:Google集群管理大杀器

论文研读系列是阅读、总结计算机领域优秀论文的系列文章。由于论文的学术性较高,无法面面俱到,只会就关键思想进行概括介绍。

简介

Google的Borg集群系统需要管理数十万个jobs,要能够提高资源使用率、隔离性,通过调度策略降低关联故障发生率,通过声明式job描述语言简化复杂性。

Borg提供三个主要优势:

1.隐藏资源管理与故障处理的细节,用户可以集中在应用开发上2.高可用、高稳定3.O(10000)机器规模内高效任务调度

相关术语

1.job and task,一个job包含多个task,每个task包含多个进程

2.nameing and monitoring,通过borg name service提供服务发现。每个task都要提供健康检查HTTP接口,用于查询task的健康信息和各种指标数据3.cluster and cells,cell表示一组机器,cell中的机器构成一个集群,cell是一个逻辑区分概念

整体架构

Borg系统主要由以下构成:

1.一系列机器2.本地中心化控制器Borgmaster3.每台机器上运行的客户端Borglet

Borgmaster

Borgmaster包含两个组件:master进程和scheduler。master用于处理客户端的RPC请求,改变集群中的资源状态或者响应数据只读访问请求。master还负责管理系统中的状态(machines,task,allocs...),和Borglet通信,提供web UI。

在容错上,Borgmaster实际上有5个副本,逻辑上只有一个,通过Paxos协议选举逻辑上的leader。从选举leader到恢复数据大约要10s。master还会把自身某时刻的状态作为checkpoint存储到paxos store中。

scheduling

当提交job时,borgmaster将它记录到paxos store中,并加入到task的pending queue。scheduler会扫描获取任务,然后调度到满足其需求的机器上。扫描过程是相对复杂的,论文中是这样说的:

the scan proceeds from high to low priority, modulated by a round-robin scheme within a priority to ensure fairness across users and avoid head-of-line blocking behind a large job.

自己目前还不是太理解。

调度算法分为两部分:

1.feasibility checking,可行性检查,判断机器是否满足task的要求2.scoring,通过对满足条件1中的机器打分,选择最合适的那个

这样一来,调度器的任务就是一个不断重复下面的流程:

1.从master抓取状态变更2.更新本地状态拷贝3.执行任务调度4.通知master自己的调度情况

整个过程就像有钱人的生活,枯燥又无味...

Borglet

Borgleft是每个机器(master除外)上都要运行的客户端,它负责任务的启动、停止、重启等,还负责管理机器资源、滚动debug日志、上报机器状态到master和监控系统。

Borgmaster会主动从Borglet上polls信息,poll的频率可控制,这样Borgmaster可以控制系统中的通信频率,避免不必要的流程控制机制。

为了性能和扩展性,每个Borgmaster会运行无状态的副本,论文中称为link shard,来处理一些与Borglet的通信。在弹性方面,Borglet总是上报本节点的完整信息,link shard会对上报信息进行对比,只把不同的部分发送给状态机,降低master的更新负载。

当集群中的机器非常多时,Borg会把borglet分割为多个进行,提高吞吐量。

隔离

隔离可以保证安全性,在同一个机器上,通过chroot机制隔离不同的task,提供ssh链接机制用于debug。

现在,Borg的task运行在基于Linux CGroup的资源容器中。

总结

Borg论文出自Google工程师,内容上还是更偏工程化,和伯克利的ray、mesos论文相比,缺少学术性条理性,阅读起来也不是那么顺畅。因此阅读两边后决定只记录部分重要的内容,一些细节没有罗列。

阅读完Borg的论文,再回头看Kubernetes的架构和相关概念,和Borg论文中的思想基本上是一致的。所以对于Kubernetes从业人员来说,这篇论文还是值得阅读的。


本文分享自微信公众号 - 机器学习与系统(aimlsystem),作者:陆道峰

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • docker 容器集群管理 - swarm

    docker service create \ --mount type=volume,src=,dst=/usr/local/nginx/conf \ --n...

    以谁为师
  • Elasticsearch集群管理

    ES通过设置【节点的名字】和【集群的名字】,就能自动的组织相同集群名字的节点加入到集群中,并使很多的技术对用户透明化。 如果用户想要管理查看集群的状态,可以...

    用户1154259
  • kubernetes 集群管理

    https://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/

    以谁为师
  • es集群管理

    爱撒谎的男孩
  • 【容器之集群管理】kubernetes初识

    什么是Kubernetes Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、 扩展机制等功能,利用Kubernetes能方便地管...

    小小科
  • Linux服务器集群管理面板

    AppNode 是一款 Linux 服务器集群管理软件,它基于 Web 页面实现对 Linux 服务器的可视化管理。不但可以帮助不熟悉 Linux 命令的用户无...

    A梦多啦A
  • Docker Swarm——集群管理

    前言 之前在总结docker machine的时候,当时对docker理解还不够深入,甚至还不知道 docker machine 与 docker swarm ...

    魏守峰
  • k8s之集群管理

    经过前面k8s系列的文章,这一系列已经基本完成,现在就用几篇文章说一下日常的集群维护。

    Liusy
  • Redis-22Redis-集群管理

    redis-trib.rb是redis官方提供的集群管理工具,由ruby开发实现。通过该工具可以实现集群的创建、增加节点、删除节点、分片迁移等等功能。

    小小工匠
  • Docker Swarm 集群管理

    Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准...

    用户8647142
  • Ansible管理Windows集群

    最近公司新项目需要安装400+windows server 2012系统的工作站,想着怎么能像linux下运用ansible批量管理,linux就很简单了有ss...

    院长技术
  • 049.Kubernetes集群管理-集群监控Metrics

    Kubernetes的早期版本依靠Heapster来实现完整的性能数据采集和监控功能,Kubernetes从1.8版本开始,性能数据开始以Metrics API...

    木二
  • 04_hadoop集群的集中管理

    当我们的集群数量比较多的时候,那么对集群的管理,就变得异常复杂了。因此我们需要采取对整个集群采取集中管理的方式。

    全栈程序员站长
  • 051.Kubernetes集群管理-日志管理

    在Kubernetes集群环境中,一个完整的应用或服务都会涉及为数众多的组件运行,各组件所在的Node及实例数量都是可变的。日志子系统如果不做集中化管理,则会给...

    木二
  • [喵咪Liunx(5)集群管理利器pssh

    [喵咪Liunx(5)集群管理利器pssh ? 前言 哈喽大家好呀!大家在管理服务器的时候如果只是一两台还好,当你管理三台以上的服务器的时候,你安装任何一个软件...

    喵了个咪233
  • Windows Server 2012 集群打开集群管理器查看角色失败

      最近为一客户部署了一个开发测试环境的Hyper-V集群,由于客户是前几年购买的License,只能用于Windows Server 2012,因此不得已为客...

    SuperDream
  • xwiki管理指南-集群

    要启动事件分发功能,需要在xwiki.properties文件设置observation.remote.enabled属性为true。

    lovelife110
  • KubeSphere管理多tke集群

    KubeSphere是在 Kubernetes 之上构建的开源的企业级容器平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同...

    聂伟星
  • Kubernetes 多集群管理:Kubefed

    Kubefed(Federation v2)即 Kubernetes 联邦,是目前社区正在难产的多集群解决方案,目前的版本是 0.1.0,如果考虑到 Feder...

    CS实验室

扫码关注云+社区

领取腾讯云代金券