使用 puppet、ansible 或 fabric 滚动更新

Kar*_*ell 6 ssh puppet fabric ansible

我之前有一些带有负载均衡器的码头服务器。现在我想在不停机的情况下更新我的应用程序。当一个码头停机并且不再可达时,负载均衡器会自动将其从列表中删除,所以这不是问题。

主要问题是避免停机时间:因此,我必须确保一次只有一个码头重新启动 - 或者确保至少有 N 个码头在线!

目前我正在使用一个简单的 bash 脚本,我需要手动等待一个码头重新上线,然后再重新启动下一个码头等等。

现在 bash 对于这类东西并不是很理想,我希望有更适合使整个任务自动化的工具。例如http://jetty-number-n.com/ping,如果第 n 个码头在线,我可以使用一个简单的 ping URL响应 OK (200)。

我如何解决这个任务以及使用哪种工具?

感谢@ceejayoz,我找到了 ansible 的滚动更新。但它仍然不是最理想的,因为我需要设置一个固定的超时时间。

cee*_*yoz 9

这对于 Ansible 来说相当容易。粗略的伪 ansible 剧本:

---
  - hosts: your_server_group
    sudo: yes
    serial: 1
    tasks:
      - shell: reboot now
      - wait_for: port=22
Run Code Online (Sandbox Code Playgroud)

  • 请记住,`wait_for` 的默认超时时间是 300 秒,因此您可能需要将其设置。 (2认同)