Hashicopy之nomad应用编排方案04(伸缩及更新一个Job)

举报
kaliarch 发表于 2022/06/11 12:32:36 2022/06/11
【摘要】 一 前言作业的定义不是一成不变的,它意味着随着时间的推移而更新。您可以更新作业以更改docker容器、更新应用程序版本或更改任务组的计数以随负载扩展。 二 伸缩Job现在,编辑example.nomad文件以更新计数并将其设置为3。这一行在143行周围的缓存部分中。- count = 1+ count = 3修改作业规范后,使用nomad job plan命令调用调度程序的一个演练,看看如...

一 前言

作业的定义不是一成不变的,它意味着随着时间的推移而更新。您可以更新作业以更改docker容器、更新应用程序版本或更改任务组的计数以随负载扩展。

二 伸缩Job

现在,编辑example.nomad文件以更新计数并将其设置为3。这一行在143行周围的缓存部分中。

- count = 1
+ count = 3

修改作业规范后,使用nomad job plan命令调用调度程序的一个演练,看看如果运行更新后的作业会发生什么:

nomad job plan example.nomad	

计划程序检测到计数的变化,并输出计划创建两个新分配,并对现有分配进行就地更新,以更新作业规范。就地更新不会导致任何服务中断。然后可以使用计划输出中提供的nomad job run命令运行带有版本验证的作业。
通过使用-check-index标志运行,Nomad检查作业在运行计划后是否未被修改。如果多人同时与作业交互,这将非常有用,以确保在应用修改之前作业没有更改。

nomad job run -check-index 10 example.nomad

由于您将任务组的计数设置为三,Nomad创建了两个额外的分配以达到所需的状态。再次运行相同的作业规范是幂等的,并且不会创建新的分配。
您可以获取示例作业状态,以验证Nomad是否启动了其他实例。运行nomad作业状态示例并检查输出的分配部分。请注意,现在有三个实例。

还要注意为分配创建的时间,最开始的容器时间没有变,意味着没有更新,后面新增的两个容器为并发创建的。
分配的创建时间是计划程序应用计划并且分配准备好由运行分配的Nomad客户机接收的时刻。创建的时间是一个固定的时间点。修改的时间反映最后一次更新分配记录的时间。
随着分配的启动以及在其生命周期中可能发生的任何事件(主要是由模板更新、工作负载失败或基于健康检查的重新启动引起的重新启动),分配将被更新以反映其当前状态。

三 更新Job

现在修改example.nomad文件,修改 redis:3.2toredis:4.0,执行

nomad job plan example.nomad	

使用-check-index

nomad job run -check-index 44 example.nomad

运行之后,滚动更新可以在底部运行nomad job status示例和观察分配部分。成功的部署将显示version的更新版本号、run的期望值和运行状态。

这里的输出表明Nomad分三个阶段处理更新,在每个阶段更新一个分配,并等待它在min_healthy_time 10秒内保持健康,然后继续下一个阶段。因为容器是缓存的,Redis启动很快,所以第二个和第三个实例在这个节点上彼此靠近启动;但是,您可以看到每次创建之间至少有预期的10秒时间。
您可以自己配置更新策略,但是默认的滚动更新行为使得大规模更新应用程序并防止应用程序中断变得不那么复杂。

四 其他

使用Nomad来进行job的横行扩展和伸缩在容器情况下,都可快速编排实现。

参考链接

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。