发布于 2015-12-05 11:10:57 | 511 次阅读 | 评论: 1 | 来源: 网络整理
恢复slave节点是Mesos的一个功能:
Mesos被控端有两种情况需要重启:升级或者崩溃。此功能在0.14.0 版本后启用。
slave节点恢复工作的前提是:有充足的slave节点监测点信息,包括本地磁盘中运行中的任务和执行器的位置(比如:任务信息,执行器信息,状态变更)。 当slave节点 和应用框架 开启运行锚点监控时,随后的slave进程重启机制 就可以恢复 监测点信息,重新连接 执行器。
注意:当slave节点所运行的slave进程被重启的时候,所有的执行器和任务都将被终止。
> NOTE: 若要开启应用框架恢复功能,必须获取精确的监测信息。 > 另外,可选择不试用监测的情形:当磁盘io读写性能要求较高,不希望监测进程带来额外磁盘读写负载时可选择不用锚点监测。
> NOTE: 从Mesos 0.22.0开始,slave节点 运行锚点监测将自动在所有slave节点开启。
此功能有四个参数可供slave节点设置。
checkpoint
: 设置是否把锚点监测 slave节点和应用框架的信息写入磁盘。 [默认: true].
strict
: 设置是否执行严格恢复模式 [默认:true].
recover
: 设置是否恢复状态并重新连接原先的执行器。 [默认重连:reconnect].
> NOTE: 若无任何监测点信息存在,则无法执行恢复,slave节点在master节点上将被注册为新的slave节点。
recovery_timeout
: 设置恢复slave节点时的超时总时间 [默认15分钟: 15 mins].
--checkpoint
启用时才有效。> NOTE: 若所有应用框架都没启用锚点监测, > 当slave节点死亡后,应用框架的执行器和任务都将无法恢复。
重启的slave节点将需要在限定时间内(目前设定为 75秒)重新到master节点那里注册,若超过此限定时间,master节点将关闭slave节点,slave节点里活动的执行器和任务也将被关闭。
所以,强烈建议配置一个slave节点自动重启的工具/机制。(比如使用monit)。
slave节点的完整选项可./mesos-slave.sh --help
查看
若开启应用框架锚点监测,FrameworkInfo
在更新的时候,将包含checkpoint
字段。 应用若要开启运行监测,需要在向master节点注册之前,设置FrameworkInfo.checkpoint=True
。
> NOTE: 启用锚点监测的应用框架将只会选用启用锚点监测的slave节点。所以,在设置checkpoint=True
之前,要确保集群中存在启用了锚点监测的slave节点。
> 若不存在这种slave节点,应用框架将申请不到任何资源,当然也更无法运行任何任务或者执行器了。
当使用 systemd
加载 mesos-slave
时,若只使用了posix
隔离机制,将导致 应用的任务 无法恢复。
由于systemd进程的默认终止进程模式KillMode 是采用 cgroup
以组定策略的,因此当slave节点停止运行的时候,所有子进程也将被停止。
解决办法:需要指定 KillMode
为process
以进程定策略,这样执行器就可以在slave节点死亡状态时不被殃及,从而可以在之后重连。
下面是具体的systemd
设置方法:
[Service]
ExecStart=/usr/bin/mesos-slave
KillMode=process
> NOTE: 由于知道这个问题,docker容器技术里,使用了一个非Posix机制来隔离。
若想让一个运行中的Mesos集群升级到0.14.0,以获得 slave恢复的功能,可参考 升级说明.