Amazon-Ec2

Amazon EC2 Elastic Load Balancing - 零停機伺服器重啟策略

  • March 31, 2015

我在 Amazon EC2 Elastic Load Balancing 後面有 5 個 Web 伺服器 (Apache/mod_perl),當我將程式碼部署到 Web 伺服器時,我正在這樣做..

  1. 對於每台機器,關閉 Apache
  2. 更新程式碼
  3. 從伺服器開始並繼續到下一個伺服器

我認為當我的伺服器關閉時,ELB 不會將請求分發到我的伺服器,但是請求仍然在服務呢?

我認為更好的方法是

  1. 停止接受來自 ELB 的新請求
  2. 有時睡眠,僅當所有請求都得到響應時才關閉 Web 伺服器
  3. 更新程式碼
  4. 再次啟動伺服器

但是如何從我的本地伺服器執行(1)和(2)?我需要使用 AWS API 嗎?或其他簡單的方法來做到這一點?

謝謝。

我將 apache/mod_perl 作為負載平衡的 EC2 實例執行,並按照您所說的定期進行程式碼升級。我的流程是:

  1. 輪換一兩個實例
  2. 關閉該實例上的 apache
  3. 升級實例
  4. 返迴旋轉,並刪除其他

AWS 文件介紹瞭如何使用 API 或控制台從輪換中添加和刪除實例,您可以選擇。您會注意到,通過我的方法,網路伺服器可以優雅地退出輪換,因此我不必擔心特定使用者請求是否會被終止。正如@cyberx86 提到的,您可以apachectl -k graceful在處理每個請求後使用該命令關閉您的 apache 伺服器。

引用自:https://serverfault.com/questions/389301