Amazon-Ec2
Amazon EC2 Elastic Load Balancing - 零停機伺服器重啟策略
我在 Amazon EC2 Elastic Load Balancing 後面有 5 個 Web 伺服器 (Apache/mod_perl),當我將程式碼部署到 Web 伺服器時,我正在這樣做..
- 對於每台機器,關閉 Apache
- 更新程式碼
- 從伺服器開始並繼續到下一個伺服器
我認為當我的伺服器關閉時,ELB 不會將請求分發到我的伺服器,但是請求仍然在服務呢?
我認為更好的方法是
- 停止接受來自 ELB 的新請求
- 有時睡眠,僅當所有請求都得到響應時才關閉 Web 伺服器
- 更新程式碼
- 再次啟動伺服器
但是如何從我的本地伺服器執行(1)和(2)?我需要使用 AWS API 嗎?或其他簡單的方法來做到這一點?
謝謝。
我將 apache/mod_perl 作為負載平衡的 EC2 實例執行,並按照您所說的定期進行程式碼升級。我的流程是:
- 輪換一兩個實例
- 關閉該實例上的 apache
- 升級實例
- 返迴旋轉,並刪除其他
AWS 文件介紹瞭如何使用 API 或控制台從輪換中添加和刪除實例,您可以選擇。您會注意到,通過我的方法,網路伺服器可以優雅地退出輪換,因此我不必擔心特定使用者請求是否會被終止。正如@cyberx86 提到的,您可以
apachectl -k graceful
在處理每個請求後使用該命令關閉您的 apache 伺服器。