讲师中心 微信公众号
AI工具推荐 视频效率加速

Ansible 实现滚动更新(Rolling Updates)与部署策略

千伟吖_7955

千伟吖_7955

发布时间:2026-08-07 09:27:24

|

1015人浏览过

|

来源于php中文网

原创

Ansible滚动更新的核心是通过serial参数控制批次大小,结合负载均衡实现零停机更新,并利用roles、tags、block/rescue等机制保障可维护性与失败处理能力。

ansible 实现滚动更新(rolling updates)与部署策略

Ansible 实现滚动更新的核心,是控制更新节奏、保障服务连续性,而不是一次性全量变更。它不依赖外部调度器,而是通过内置机制在 playbook 层面精确调度主机批次和执行顺序。

用 serial 控制批次大小

这是最直接有效的滚动更新控制方式。通过 serial 参数,你可以指定每次只对多少台主机执行整个 playbook 流程——不是单个任务,而是从 gathering facts 到所有 tasks 再到 handlers 的完整轮次。

  • 设为数字(如 serial: 2):每次处理 2 台,成功后再处理下一批
  • 设为百分比(如 serial: "25%"):按目标主机总数动态计算批次,适合主机数量波动的环境
  • 若某一批中任意主机失败,Ansible 默认中止整个 playbook,避免部分更新导致状态不一致

配合负载均衡实现零停机

滚动更新真正发挥价值,需要与负载均衡器协同。典型流程是“摘流—更新—验证—加流”,Ansible 可驱动全过程:

  • 先调用 HAProxy、Nginx 或云厂商 LB 模块(如 haproxy 或 aws_elb),将当前批次主机从后端池移除
  • 再执行应用部署、配置更新、服务重启等操作
  • 接着用 wait_for 或自定义健康检查任务确认新服务已就绪
  • 最后将该主机重新加入负载均衡池,流量逐步恢复

结合角色与标签提升可维护性

大型系统常需分层更新(如先升 MON,再升 OSD,最后升 MGR)。这时不应靠多个独立 playbook 管理,而应统一在一个 rolling_update.yml 中,用 tags 和 roles 隔离逻辑:

  • 每个组件(mon、osd、mgr)封装为独立 role,包含自己的变量、任务和校验逻辑
  • 主 playbook 中按顺序 include role,并为每段加上明确 tag,例如 --tags=mons
  • 配合 serial 使用,确保同类节点按批滚动,跨类型节点按序推进

失败处理与可观测性设计

滚动更新不是“跑完就结束”,而是要能快速定位、隔离、回退:

  • 在关键任务后添加 assert 或 shell 命令验证(如 curl -f http://localhost/health)
  • 利用 ignore_errors: true + failed_when 精确控制哪些失败可跳过、哪些必须中断
  • 通过 block + rescue 定义异常路径,比如自动触发备份还原或配置回滚
  • 用 notify 触发 handler 发送 Slack/邮件通知,附带当前批次、耗时、失败主机列表

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

相关专题

更多
PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

486

2025.12.13

Figma AI自动化智能数据填充与交互生成实战
Figma AI自动化智能数据填充与交互生成实战

告别机械重复,详细演示如何用 AI 填充业务真实数据,并自动为页面添加交互连线,将静态设计稿快速转变为动态原型。

325

2026.05.13

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

60

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

40

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

40

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

20

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

40

2026.10.22

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

20

2026.10.22

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

20

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn