Ssh
使用 puppet、ansible 或 fabric 滾動更新
我有一些碼頭伺服器,它們前面有一個負載平衡器。現在我想在不停機的情況下更新我的應用程序。當一個碼頭髮生故障並且不再可達時,負載均衡器會自動將其從列表中刪除,因此這不是問題。
主要問題是避免停機:所以,我必須確保一次只有一個碼頭重新啟動 - 或者確保至少有 N 個碼頭線上!
目前我正在使用一個簡單的 bash 腳本,我需要手動等待一個碼頭重新上線,然後再重新啟動下一個碼頭,依此類推。
現在 bash 對於這類東西並不是很理想,我希望有更適合使整個任務自動化的工具。
http://jetty-number-n.com/ping
例如,如果第 n 個碼頭線上,我可以使用一個簡單的 ping URL響應 OK (200)。我該如何解決這個任務以及使用哪個工具?
感謝@ceejayoz,我找到了 ansible的滾動更新。但這仍然不是最理想的,因為我需要設置一個固定的超時時間。
這對於 Ansible 來說相當容易。粗略的偽ansible劇本:
--- - hosts: your_server_group sudo: yes serial: 1 tasks: - shell: reboot now - wait_for: port=22
Salt 有一個方便的批處理選項。
salt -G 'os:RedHat' --batch-size 25% service.restart jetty
一次在 25% 的 RedHat 伺服器上重新啟動 jetty 服務。
salt -N group1 -b 2 system.restart
重新啟動預定義的“group1”中的伺服器,一次 2 個。