当前位置: 首页 > article >正文

ansible-forks/serial/滚动部署机制

一. 简述: 

    在使用ansible实现代码发布过程中, 比如涉及到平滑,滚动,并发,错误终止等功能。ansible对相关功能是天然支持的。

二. 主机并发数(forks):

    forks用来设置同一时刻与目的主机连接数,也可以理解为主机并行数,默认值比较保守为5。在生产中,多数情况下我们会更改这个参数。如果控制节点(ansible主机)的CPU和网络性能够用,设置几十上百个也是可以的。在ansible.cfg设置forks的全局默认值:

[defaults]
forks  = 15

命令行设置forks的数量,即在执行playbook时,通过「--forks」或「-f」指定:

ansible-playbook test.yaml --fork 10

三. play并发数(serial):

      serial用于控制一个play内的主机并行数,这个并行数不能超过forks,超过后则serial不会生效。 

     定义方法如下:

---
- hosts: all
  become: yes
  serial: 3

也可以指定为百分比,它将应用于播放中的主机总数,以确定每次执行的主机数:

- hosts: all
  serial: “30%”

如果主机的数量不等于处理次数,则最后一次将包含余数。

从Ansible 2.2开始,批量大小可以指定为列表,如下所示:

- hosts: all
  serial:
    - 1
    - 5
    - 10

  如上: 第一个批处理将包含一个主机,下一个将包含5个主机,并且(如果还有任何主机),每个后续批处理将包含10个主机,直到使用所有可用主机。

也可以按照批次的百分比:

- hosts: all
  serial:
    - “10%”
    - “20%”
    - “100%”

同时也支持百分比和数字混合设置:

  serial:
    - 1
    - 5
    - “20%”

每次处理数量最小为1。

 serial作用范围是一个play,受限于forks,但比forks控制的更加细(子集?)。假如我们的forks设置为100,但是想让某个play里的所有任务并行数为50的执行,此时我们应该想到serial这个配置方法。


四.  异常/失败终止(max_fail_percentage):

   默认情况下,只要批处理中的主机尚未发生故障,Ansible将继续执行操作。播放的批量大小由串行参数决定。如果未设置serial,则批量大小是hosts字段中指定的所有主机。在某些情况下,例如使用上述滚动更新,可能希望在达到某个故障阈值时中止播放。为此,您可以在播放中设置最大失败百分比,如下所示:

---
- hosts: all
  become: yes
  max_fail_percentage: 30  #同批次中大于30%故障,终止部署
  serial: "30%"

另外,还有一个参数,任何错误时,立刻终止:

---
- hosts: all
  any_errors_fatal:True

五. API扩展:

      如果使用API时,可以通过VariableManager动态设置forks和serials, 如:

variable_manager = VariableManager(loader=loader, inventory=inventory)
variable_manager.extra_vars = dict({'serials':"50%"})

 ----------------------------------------------------------------------------------------------

深耕运维行业多年,擅长linux、容器云原生、运维自动化等方面。
承接各类运维环境部署、方案设计/实施、服务代运维工作,欢迎沟通交流 !


http://www.kler.cn/a/471383.html

相关文章:

  • poi-tl+kkviewfile实现生成pdf业务报告
  • 新年感悟:2025年1月7日高铁随想
  • 三维卷积( 3D CNN)
  • 最好用的图文识别OCR -- PaddleOCR(2) 提高推理效率(PPOCR模型转ONNX模型进行推理)
  • 实习总结(项目篇)
  • Linux中rsync命令使用
  • Docker镜像下载链接-娱乐办公
  • Postman接口测试05|实战项目笔记
  • 《Bootstrap CSS编码规范》
  • 通过 route 或 ip route 管理Linux主机路由
  • Wasm是什么
  • 微信小程序之历史上的今天
  • 如何监控批量写入的性能瓶颈?
  • 快速上手:采用Let‘sEncrypt免费SSL证书配置网站Https (示例环境:Centos7.9+Nginx+Let‘sEncrypt)
  • 屏幕显示技术再突破!海信RGB- Mini LED,让色彩“活”起来
  • 【计算机操作系统:三、操作系统的用户接口】
  • nginx-灰度发布策略(基于cookie)
  • 02.02、返回倒数第 k 个节点
  • (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验七----城市三维建模与分析(超超超详细!!!)
  • Docker镜像下载链接-开发工具集
  • 交换机划分Vlan配置
  • Objective-C语言的数据结构
  • 添加系统级res资源包
  • Apache Paimon-实时数据湖
  • pyhton 掩码 筛选显示
  • Python中的时间管理模块:whenever