你是否厭倦了監控 AWS 實例的負載和流量?為什麼不通過部署 Terraform 自動擴展組來自動化一切呢?自動擴展允許一些伺服器在低負載時休眠,並在高負載時添加更多伺服器,為公司節省電費。
在本教程中,您將學習如何構建和運行 Terraform 配置以構建自動擴展組並使用 Terraform 部署它們。
繼續閱讀,實現實例的零停機!
先決條件
本帖將是一個逐步教程。如果您想跟著進行,請確保您已經準備好以下內容:
- 一個 Amazon Web Service (AWS) 賬戶。
- A code editor – Even though you can use any text editor to work with Terraform configuration files, consider using Visual Studio (VS) Code as it understands the HCL Terraform language well.
- Terraform – 本教程使用在 Ubuntu 20.04 LTS 上運行的 Terraform v1.1.5,但任何帶有 Terraform 的操作系統都應該可以工作。
構建 AWS 自動擴展組的 Terraform 配置
在运行Terraform命令以构建和部署基础设施之前,您必须创建Terraform配置文件。您将构建一个Terraform配置,以在您的AWS账户中创建一个AWS自动扩展组。
1. 使用您喜欢的SSH客户端登录到您的机器。
2. 接下来,创建一个名为~/terraform-autoscaling-demo的文件夹,然后将工作目录更改为该文件夹(使用cd
命令)。该文件夹将包含本教程中要处理的所有配置文件。
3. 打开您喜欢的代码编辑器,复制/粘贴以下配置,并将文件保存为main.tf,保存到~/terraform-autoscaling-demo目录中。这个main.tf文件是自动扩展组的Terraform配置。
下面的代码创建一个自动扩展启动配置(web_config
),并配置一个自动扩展组(autoscalegroup
)。自动扩展组还带有其组件(aws_autoscaling_schedule
和aws_autoscaling_policy
)。
4. 在 ~/terraform-autoscaling-demo 建立另一個名為 provider.tf 的檔案,並填入以下內容。 provider.tf 檔案定義了像 AWS、Oracle、Azure 等提供者。 此配置文件可讓您將 Terraform 連接到正確的雲服務。
5. 最後,執行下面的 tree
命令,以驗證您的項目文件夾中是否存在所有所需的檔案(~/terraform-autoscaling-demo
)。

使用 Terraform 配置創建 AWS Autoscaling 群組
現在您已正確設置 Terraform 配置文件和變數檔案,是時候啟動 Terraform 並創建 AWS Autoscaling 群組了。
要配置 AWS Autoscaling 群組,與所有其他 Terraform 配置一樣,Terraform 使用三個命令來進行序列操作(terraform init
、terraform plan
和 terraform apply
)。
1. 在 ~/terraform-autoscaling-demo 目錄中執行 terraform init
命令。該命令會初始化所需的插件和提供者,以便與資源一起使用。
如果一切順利,您將在輸出中看到 Terraform 已成功初始化的訊息,如下所示。

2. 接下來,執行 terraform plan
命令,以確保您的配置文件語法正確,並提供將在基礎設施中配置的資源的藍圖。
如果成功,您應該會看到顯示計畫的訊息,如下所示。

3. 最後,執行 terraform apply
命令,以移除訓練輪並調用 Terraform 來創建 AWS 自動縮放群組。
該命令告訴 Terraform 讀取當前目錄中的每個配置 (*.tf),以編譯發送到 AWS 的狀態。然後,Terraform 構建 AWS 自動縮放群組和其他組件。
使用 AWS 自動縮放不會產生額外費用。您僅支付運行應用程序所需的 AWS 資源。

在 AWS 云中驗證 AWS 自動縮放群組
到目前為止,您應該已使用 Terraform 創建了 AWS 自動縮放群組和相關組件。但是,您如何知道它們存在於您的 AWS 云中呢?通過在 AWS 管理控制台中手動檢查來驗證自動縮放群組。
1. 打開您喜歡的網絡瀏覽器,並登錄到 AWS 管理控制台。
2. 在控制台主页上,点击搜索框,搜索并点击“EC2”以访问EC2仪表板。
在EC2仪表板中点击AWS自动伸缩组菜单项以管理您的自动伸缩组。
在EC2仪表板上,使用以下自动缩放配置启动AWS EC2实例的期望数量。

3. 最后,在EC2仪表板中点击AWS自动伸缩启动配置。您将看到您的自动伸缩启动配置(web_config)如下所示。

通过负载测试对EC2实例进行自动伸缩
现在您已经验证了自动伸缩组/策略和相关组件的设置是否正确,是时候测试自动伸缩功能是否正常工作了。如何?通过在最近使用自动伸缩组启动的实例上增加负载。
1. 使用SSH客户端打开使用自动伸缩组启动的AWS EC2实例。
2. 接下来,打开终端,并运行以下命令安装
负载压力工具(stress-ng
)。这个压力工具允许您定义和生成Ubuntu机器上的压力。
您也可以找到其他负载压力工具在市场上。

3. 运行下面的stress-ng
命令在实例上生成负载压力。
以下命令包含以下標誌:
--cpu
– 表示將生成負載的核心數。
-v
– 啟用詳細模式。
--timeout
– 指定生成負載的時間。

4. 現在立即運行以下命令:top
,以顯示 Linux 進程。
如下所示,在生成負載後 CPU 震盪。

5. 轉到 AWS 云監視服務。您會注意到當 CPU 超過 (10%) 時,會生成一個警報。警報通知自動縮放組將實例數從一個增加到兩個,如自動縮放組中指定的那樣。

6. 最後,轉到您在 EC2 儀表板中的 實例,以驗證 AWS EC2 實例。
您會看到已啟動一個更多的實例,這證實了成功設置 AWS 自動縮放組和組件。

您還可以在 AWS 自動縮放組活動中驗證自動縮放活動,如下所示。

結論
通過本教程,您已經學會了如何使用 Terraform 部署 AWS 自動縮放組及其組件。使用 AWS 自動縮放組構建自動縮放應用程序,可以在需要時進行擴展,並且是一個快速的任務。
現在,有了這些新知識,可以放手實施與其他AWS服務的自動縮放,而不必擔心伺服器的負載!
Source:
https://adamtheautomator.com/terraform-autoscaling-group/