0Pricing
DevOps Bootcamp · 课时

负载均衡器后的滚动部署

以串行方式实现零停机发布

负载均衡器后的滚动部署 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 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: lb1

max_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 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「负载均衡器后的滚动部署」这节课中我会学到什么?

以串行方式实现零停机发布 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「负载均衡器后的滚动部署」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 设计项目:Role 与 Inventory
  2. 配置、加固并引导主机
  3. 负载均衡器后的滚动部署
  4. 冒烟测试、回滚与通知
← 返回 DevOps Bootcamp