Maintenance Primitives

Operator经常需要在包含Mesos集群的机器上执行维护任务。 大多数Mesos升级可以在不影响运行的任务的情况下完成,但是有些情况下维护可能会影响正在运行的任务。例如:

l  硬件维修

l  内核升级

l  Agent更新(比如调整agent的attributes或resources)

框架要知道任何干扰群集运行的操作,以满足服务级别协议或确保为其最终用户提供不间断的服务。 因此,为了协调框架和operator的要求,框架必须意识到计划的维护事件,operator必须意识到框架适应维护的能力。 Maintenance Primitives添加了一个层,以便于框架和operator之间的通信。

Terminology(术语)

为了本文档的目的,”operator”是管理Mesos集群的人员,工具或脚本。

维护原语为Mesos添加了几个新概念。 这些概念是:

Maintenance: 暂时或永久地使机器上的资源不可用的操作。

Maintenance window: 一组机器和相关的时间间隔,在这些时间间隔内在这些机器上计划进行一些维护。

Maintenance schedule: 维护窗口列表。 一台机器只能在一个列表中出现一次。

Unavailability: 由操作员指定的间隔,由开始时间和持续时间定义,在此期间相关联的机器可能变得不可用。 一般来说,在不可用之后,不应该假设机器(或资源)的可用性。

Drain(排水): 维护调度与机器不能使用的时间间隔。 从排水机器发送的资源的offer将包含不可用信息。 在排水机上运行的框架将收到inverse offers(见下文)。 在受影响的机器上利用资源的框架预计将采取抢先步骤来准备不可用性; 或传达框架无法遵守维护计划。

Inverse offer: 一个沟通机制,让master从框架中回收资源。 这通知框架关于任何不可用性,并给框架一个机制来响应他们遵守的能力。 Inverse offer与offer类似,可以接受,拒绝,重新提供和撤销。

注意:  Unavailability和Inverse offer不是维护特有的。 相同的概念可用于非维护目标,例如重新分配资源或资源抢占。

How does it work?

在Mesos 0.25.0中引入了维护原语。 还介绍了几种机器维护模式。 这些模式如下所示。

所有模式转换必须由operator启动。不管维护计划中提供的估计值如何,Mesos将不会更改任何机器的模式。

Scheduling maintenance

一旦计划进行维护,机器将从Up模式转换到Draining模式。 要将机器转换为Draining模式,操作员将维护计划构建为JSON文档,并将其发布到Mesos主站上的/ maintenance / schedule HTTP端点。 每个Mesos集群都有一个维护计划; 发布新的计划将替换以前的计划(如果有的话)。

在生产环境中,应制定时间表,以确保足够的agent在任何时间点运行,以确保框架不间断的服务。

例如,在三台机器的集群中,操作员可以安排两台机器进行一个小时的维护,最后一台机器再运行一小时。 不可用的时间戳以Unix时期的纳秒为单位表示(请注意,使用维护原语可靠地要求群集中所有机器的系统时钟大致同步)。

时间表可能如下所示:

operator可以将计划发布到master的 /maintenance/schedule端点:

维护计划中的机器在设置计划时不需要向Mesos master注册。 在机器上启动agent之前,操作员可以将维护计划添加到维护计划中。 例如,这可能有助于防止故障机器在启动时启动代理。

注意:维护计划中的每台机器应尽有可能完整的信息。 为了使Mesos识别agent来自特定的机器,hostname和ip字段都必须匹配。 任何省略的数据默认为空字符串“”。 如果机器有多个主机名或IP,则机器的字段需要匹配agent向master发出的通知。 如果机器的配置有歧义,operator应该在启动代理时使用--hostname和--ip选项。

master检查维护计划具有以下属性:

计划中的每个维护窗口必须至少有一台机器和指定的不可用性间隔。

每台机器只能在计划中出现一次。

每个机器必须至少包含一个主机名或IP。 主机名不区分大小写。

处于Down模式的所有计算机都必须存在于计划中。 这是必需的,因为该端点不处理从Down模式向Up模式的转换。

如果不符合任何这些属性,则维护计划将被拒绝并显示相应的错误消息,并且主机的状态不会更改。

要更新维护计划,operator应首先阅读当前计划,进行任何必要的更改,然后发布修改的计划。 可以通过向master的/maintenance/schedule端点发送GET请求来获得当前的维护计划。

要取消维护计划,operator应该发布一个空的schedule。

Draining mode

一旦schedule发布到Mesos master,就会发生以下情况:

schedule存储在复制日志中。 这意味着在master故障切换的情况下,计划会持续存在。

计划中的所有计算机都将立即转换到Draining模式。 每个机器的模式也保留在复制日志中。

立即通知在受影响的agent上使用资源的所有框架。 来自受影响的代理的现有offer将被取消,并重新发送附加的不可用数据。 使用受影响agent程序的资源的所有框架都将提供inverse offers。

来自受影响的agent的新的offer还将包括额外的不可用性数据。

框架应该使用这些附加信息来以维护意识的方式安排任务。 如何做到这一点取决于每个调度程序的设计要求,但通常应以最大化利用率的方式安排任务,但是在该机器发布的不可用期之前也尝试将机器撤出。 调度程序可能选择将长时间运行的任务放在不可用的机器上,或者在不可用性最远的机器上将其运行失败。

框架如何响应inverse offers表明其符合维护计划的能力。 考虑到框架资源的当前状态,接受inverse offers通知框架与当前维护计划一致。 master和operator应该将接受解释为框架的尽力而为的承诺,以在可用性间隔开始之前释放inverse offers中包含的所有资源。 拒绝inverse offers是对运营商的建议通知,框架不能或不太可能符合维护计划。

例如:

数据存储可以选择启动一个新的副本,如果一个agent程序被安排进行维护。 数据存储应该接受inverse offer,如果在inverse offer中描述的不可用性间隔开始之前,可以将机器上的数据合理地复制到新主机。 否则,数据存储应该拒绝offer。

具有即将发生的不可用性的agent的有状态任务可能会迁移到另一个可用的agent。 如果框架有足够的资源来做到这一点,它将接受任何inverse offer。 否则会拒绝它们。

框架可以使用过滤器来控制什么时候想要再次与inverse offer联系。 这是有用的,因为未来的情况可能会改变维护计划的可行性。 inverse offer的过滤器与现有的重新发送offer给框架的机制相同。

注意:接受或拒绝inverse offer不会导致维护计划的即时更改或Mesos行为的方式。 inverse offer仅代表框架可能会发现有用的额外信息。 以同样的方式,拒绝或接受inverse offer是对operator的暗示。 operator可能会选择也可能不会考虑这一点。

Starting maintenance

operator通过将机器列表发布到/machine /down HTTP端点来启动维护。 机器列表以JSON格式指定; 列表的每个元素都是一个MachineID。

例如,要在两台机器上启动维护:

master检查机器列表具有以下属性:

l  机器列表不能为空。

l  每台机器只能出现一次。

l  每个机器必须至少包含一个主机名或IP。 主机名不区分大小写。

l  如果包含机器的IP,则必须是正确的格式。

l  所有列出的机器必须在schedule中。

如果不符合任何这些属性,则操作将被拒绝并显示相应的错误消息,并且主机的状态不会更改。

operator可以在计划进行维护的任何机器上开始维护。 没有计划进行维护的机器无法从Up模式直接转换到Down模式。 但是,operator可以使用等于当前时间或过去的时间戳来安排机器进行维护,然后立即开始对该机器进行维护。

此端点可用于在当前未注册Mesos master的机器上启动维护。 如果机器出现故障并且operator打算将其从集群中删除,这将非常有用; 在机器上启动维护可防止机器意外重新引导并重新连接Mesos集群。

operator必须明确地将机器从Draining转移到Deactived模式。 也就是说,即使不可用窗口到达或通过,Mesos也会将机器保持在排水模式。 这意味着机器的操作不会以任何方式中断,并且为本机提供(不可用信息)。

当operator触发维护时,机器上的所有agent都被告知关闭。 这些agent将从master中删除,这意味着将为每个agent程序上运行的每个任务发送TASK_LOST状态更新。 调度程序驱动程序的slaveLost也将为每个被删除的agent回掉。 维护中的机器上的任何agent也将被阻止在将来重新注册master(直到维护完成并且机器被重新启动)。

Completing maintenance

维护完成或需要取消维护时,operator可以停止维护。 该过程与启动维护非常相似(与上一节相同的验证标准)。operator将机器列表发送到master的/machine/up端点:

注意:由维护计划中的“不可用性”字段指示的维护窗口的持续时间是operator做出的尽力而为的猜测。 允许在可用性间隔结束之前停止维护,以及在可用性间隔结束后停止维护。 机器永远不会自动过渡到维护之外。

当该机器的offer开始发送时,框架被告知有关维护的完成或取消。 维护完成后,没有明确的机制通知框架。 维护完成后,新的offer不再标记为不可用,而不再发送 inverse offer。 此外,在机器上运行的agent程序将被允许向Mesos master注册。

Viewing maintenance status

通过访问master的/maintenance/status HTTP端点可以查看集群中每台机器的当前维护状态(Up, Draining, or Down)。 对于Draining的每个机器,此端点还包括框架对该机器上的资源的inverse offer的响应。 有关详细信息,请参阅ClusterStatus消息的格式。

注意:此端点返回的数据的格式可能会在以后的Mesos版本中更改。

maintenance的更多相关文章

  1. 第24/24周 数据库维护(Database Maintenance)

    哇哦,光阴似箭!欢迎回到性能调优培训的最后一期.今天我会详细讲下SQL Server里的数据库维护,尤其是索引维护操作,还有如何进行数据库维护. 索引维护 作为一个DBA,数据库维护是你工作中非常重要 ...

  2. 玩转PowerShell第三节——【SCOM Maintenance Mode】-技术&分享

    概述 Microsoft System Center Operations Manager 2007 sp1(SCOM)是微软推出的专业系统监控软件,可以监控部署在网络中的服务器.应用系统和客户端,提 ...

  3. cloud maintenance of OpenNebula

    OpenNebula 4.4.1 maintenance release,官方建议当前的生产环境使用3.x or 4.x的其它版本; php调用curl工具伪造ip Upgrading from Op ...

  4. gdb在运行maintenance info program-spaces命令时coredump

    coredump时的信息: (gdb) maintenance info program-spaces *** Error in `gdb': free(): invalid pointer: 0x0 ...

  5. Setup SQL Server 2008 Maintenance Plan Email Notifications

    一条龙作完,如何设置EXCHANGE的操作员邮件通知.. ~~~~ http://808techblog.com/2009/07/setup-sql-server-2008-maintena.html ...

  6. The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

    The server is temporarily unable to service your request due to maintenance downtime or capacity pro ...

  7. 产品 线上 保持 和 支持 服务 (Support and maintenance solutions)

    Maintenance and support are the key factors for the smooth functioning of ERP solutions. ERP mainten ...

  8. 一个"Median Maintenance"问题

    题目要求: Download the text file here. The goal of this problem is to implement the "Median Mainten ...

  9. Maste Note for OCR / Vote disk Maintenance Operations (ADD/REMOVE/REPLACE/MOVE)

    Doc ID 428681.1 Applies to: Oracle Database - Enterprise Edition - Version 10.2.0.1 to 11.2.0.1.0 [R ...

  10. Oracle E-Business Suite Maintenance Guide Release 12.2(Patching Procedures)

    更多内容参考: http://docs.oracle.com/cd/E51111_01/current/acrobat/122ebsmt.zip Preparing for Patching For ...

随机推荐

  1. idea error:Command line is too long

    今天在正在本地运行的项目中写了一个无关项目的测试类,执行main函数时报错如下: 解决方案: 找到项目根目录下的.idea/workspace.xml,添加内容: <component name ...

  2. Linux下卸载安装jdk

    1.检查一下系统中的jdk版本 [root@localhost software]# java -version 显示: openjdk version "1.8.0_102" O ...

  3. ORACLE 监听配置

    安装后最开始如下 # listener.ora Network Configuration File: D:\oracle\app\Administrator\product\11.2.0\dbhom ...

  4. 关于dumper和mysqldump的

    最近在做版本更新 使用dumper在连接阿里云的RDS的时候 老是提示 需要超级管理员权限 无能只能使用系统自带的mysqldump了  语句简单方便 而且导出的表 没有加载库信息 mysqldump ...

  5. python __class__属性

    >>> class a(object): pass >>> o=a() >>> dir(o) ['__class__', '__delattr__ ...

  6. js中json字符串与对象的转换及是否为空

    1.json对象(数组)转字符串 var b=[ { "CategoryName" : "Beverages", "ProductName" ...

  7. eclipse gradle插件 org.gradle.tooling.GradleConnectionException: Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradle-3.4-bin.zip'.

    eclipse安装gradle后出现如下异常: org.gradle.tooling.GradleConnectionException: Could not install Gradle distr ...

  8. chrome也可以整张网页截图,保存完整网页为图片

    转自:http://www.webkaka.com/blog/archives/chrome-save-a-webpage.html 关于浏览器截图,一直以为Chrome无能为力,最近发现,原来Chr ...

  9. Image Base64 Datasnap Image delphi与c#互相兼容识别

    delphi用,不能与java.c#互相识别. procedure TServerMethods.UpdateDoc(ItemID : integer; doc : TStream); delphi用 ...

  10. jquery 属性-记住

    $("").attr(); $("").removeAttr(); $("").prop(); $("").remove ...