负载均衡器后的滚动部署
以串行方式实现零停机发布
负载均衡器后的滚动部署 是 CoddyKit 上的免费 Ansible Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ansible Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ansible Academy 课程共包含 4 节课。
零停机是我们的承诺
更新所有 Web 节点,同时不丢失任何请求。诀窍是滚动部署:每次只更改少量主机。🔄
serial 控制批次
将 serial 添加到 play 中,让 Ansible 分小批次处理主机,而不是一次处理所有主机。
- hosts: web
serial: 1
tasks:
- import_role:
name: webapp百分比同样适用
serial 接受百分比或大小列表,因此您可以逐步扩大范围:先进行金丝雀发布,再处理更大的批次。
serial:
- 1
- 25%
- 50%操作前先排空
更新节点之前,先将它从轮转中移除。使用 delegate_to 告诉负载均衡器停止向它发送流量。
- name: Drain node
community.general.haproxy:
state: disabled
host: "{{ inventory_hostname }}"
delegate_to: lb1为什么要将 delegate_to 指向 LB
Web 主机无法在负载均衡器中禁用自己,必须由负载均衡器完成。delegate_to 会针对每台 Web 主机,在 lb1 上运行该任务。
部署新版本
节点排空后,部署代码、生成配置,并让处理程序只为该主机重新加载应用服务。
- name: Pull release
ansible.builtin.git:
repo: "{{ app_repo }}"
version: "{{ app_version }}"
dest: /srv/app
notify: Reload app重新启用前进行健康检查
使用 uri 确认节点处于健康状态后,再将用户流量发送回去。切勿将损坏的主机重新加入主机池。
- name: Wait for health
ansible.builtin.uri:
url: http://localhost:8080/health
status_code: 200
retries: 5
delay: 3在负载均衡器中重新启用
确认健康后,再次通过 delegate_to 将节点放回负载均衡器的轮转中。流量会转向新版本。
- name: Enable node
community.general.haproxy:
state: enabled
host: "{{ inventory_hostname }}"
delegate_to: lb1max_fail_percentage 为您提供保护
设置 max_fail_percentage,这样当失败主机过多时,发布会停止,避免错误版本继续扩散。
- hosts: web
serial: 1
max_fail_percentage: 20使用 run_once 执行共享步骤
某些步骤(例如一次性的数据库迁移)应该只运行一次。使用 run_once,确保只有一台主机执行它们。
- name: Migrate db
ansible.builtin.command: /srv/app/migrate
run_once: true完整循环
对于每台主机:排空、部署、执行健康检查、重新启用。serial 会以安全的批次重复这个循环,直到整个主机群组完成更新。✅
快速检查
一个关键字就能让 LB 步骤正常运行。
回顾
您已经构建了滚动部署:通过 serial 分批,通过 delegate_to 排空并重新启用,执行健康检查,并设置失败保护。实现零停机。🟢
常见问题解答
「负载均衡器后的滚动部署」课时是免费的吗?
是的 — 「负载均衡器后的滚动部署」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ansible Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ansible Academy 课程共包含 4 节课。
「负载均衡器后的滚动部署」这节课中我会学到什么?
以串行方式实现零停机发布 你通过在浏览器中直接运行的动手代码来练习 Ansible Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ansible Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ansible Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「负载均衡器后的滚动部署」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ansible Academy 课中编写并运行代码吗?
能。每节 Ansible Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 设计项目:Role 与 Inventory
- 配置、加固并引导主机
- 负载均衡器后的滚动部署
- 冒烟测试、回滚与通知