Amazon-Ec2

每當 AWS 中的程式碼庫更改時自動縮放自定義 Debian9 映像的最佳方式

  • January 16, 2018

我在 AWS 中使用自定義 Debian9 映像觸發了一個 Auto Scaling 組(來自啟動配置),我在其中預安裝了 Apache、Memcache、Chrony 等軟體包以及 PHP 程式碼庫和其他必需的軟體包。在我更改 PHP 程式碼庫之前,這一切正常。每天至少一次在伺服器上手動修改 PHP 程式碼庫。

每當基於預定義的指標(如記憶體負載、cpu 等)觸發自動縮放時,我想再啟動一台伺服器。這個新創建的伺服器必須具有那些更新的程式碼庫,以便兩個伺服器同步。

**問題:**當第二台伺服器啟動並執行時,如果不將文件從一台伺服器複製到另一台伺服器,如何實現這一點?

一種方法是使用 rsync 從舊伺服器將文件從 /var/www/* 複製到新創建的伺服器。我相信這不是最好的解決方案。每小時拍攝快照不是一種選擇,因為它會增加運營成本。

每當 php 程式碼庫更改時,更新自定義圖像的最佳方法是什麼?有人可以建議/推薦我最好的方法嗎?我相信在這個社區中,有一些專家在 AWS 中做過類似的事情。

如果您在 repo 中有程式碼,那麼直接從 repo 獲取程式碼是有意義的。與 S3 上的程式碼相比,這種方法具有優勢:您將只提取自創建 AMI 以來的更改,而不是項目的整個目錄。更快更便宜。

將您的 PHP 程式碼放在 Amazon S3 上。停止手動更新 EC2 實例。

當您的 EC2 實例啟動時,讓它從 S3 下載 PHP 程式碼。這樣,所有新啟動的 EC2 實例都將更新程式碼。

當您更新 PHP 程式碼時:

  1. 在 S3 中更新您的 PHP 程式碼,
  2. 啟動一個新的 EC2 實例(它將獲得新程式碼),
  3. 刪除舊的 EC2 實例。

另一種選擇是將 Elastic Beanstalk 用於您的 PHP 應用程序,而不是自己管理 EC2 實例。

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