如何使用最佳實務和強化技術保護 Amazon ECS 容器執行個體?

3 分的閱讀內容
0

我的 Amazon Elastic Container Service (Amazon ECS) 執行個體或基礎 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體遇到意外終止、重新啟動、擴充問題或資料遺失等問題。我想要保護 Amazon ECS 容器執行個體。

簡短說明

如果您在 Amazon ECS 中使用 Amazon EC2 啟動類型,則 EC2 執行個體問題 (例如終止、重新啟動或效能瓶頸) 會影響容器。若要解決這些問題,請實作最佳實務來保護您的 Amazon ECS 容器執行個體,並處理 Amazon EC2 維護、擴充和疑難排解。

解決方法

注意: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,則請參閱對 AWS CLI 進行錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

保護您的 Amazon ECS 容器執行個體

限制 AWS 帳戶根使用者存取

除非有必要,否則不要使用根帳戶,例如變更帳戶設定或修改根使用者密碼。而是使用 AWS Identity and Access Management (IAM) 角色和政策來設定符合最小權限原則的存取權。另外,請為根帳戶設定多重要素驗證 (MFA)

實作安全強化

使用安全群組來限制輸入和輸出流量,只允許必要的 IP 位址和連接埠。定期修補和更新您的 Amazon ECS 容器執行個體。您也可以使用 Amazon Inspector 來識別漏洞。

對傳輸中的敏感資料 (例如 HTTPS) 和靜止資料 (例如 Amazon Elastic Block Storage (Amazon EBS) 磁碟區) 使用加密。如需詳細資訊,請參閱基礎架構保護

使用 AWS Systems Manager 簡化 Amazon ECS 容器執行個體的修補和維護。使用 Amazon ECS 最佳化的 Amazon Machine Image (AMI) 上預先安裝的 AWS Systems Manager Agent (SSM Agent) 來實作自動修補程式管理工作流程。這包括排程的維護時段和執行個體替換策略。如需詳細資訊,請參閱透過取代 Amazon ECS 容器執行個體來自動化修補

開啟日誌記錄和監控

設定 AWS CloudTrail 以記錄 API 活動。最佳做法是設定 Amazon CloudWatch 警示,以便在 CpuUtilizationDiskReadOpsDiskWriteOpsNetworkInNetworkOut 值過高時提醒您。

若要監控容器執行個體效能和資源使用情況,請啟動 Container Insights

設定備份和還原策略

使用 Amazon EBS 快照或建立 AMI 作為災難復原計畫的一部分。如需詳細資訊,請參閱使用 AWS Backup 備份和還原 Amazon EC2

重要: 如果您刪除 EBS 磁碟區,則只有在建立 Amazon EBS 快照或 AMI 備份後才能還原該磁碟區。

若要收集和匯出中繼資料、執行個體日誌和應用程式資料,請使用 SSH 連線到您的執行個體。然後,執行以下 describe-instances AWS CLI 命令,來匯出執行個體中繼資料:

aws ec2 describe-instances \
--instance-ids i-abcdxyz\
-- query "Reservations[].Instances[]" \
-- output text > file.txt

若要匯出執行個體日誌,請執行以下 get-console-output 命令:

aws ec2 get-console-output --instance-id i-abcdxyz --output text

注意: 在上述命令中,將 i-abcdxyz 替換為您的執行個體 ID。

對 EC2 執行個體問題進行疑難排解

對意外終止和重啟問題進行疑難排解

使用 Amazon ECS 受管執行個體排空,確保您的工作負載在 Spot 中斷或類似事件發生時,您的工作負載能夠正常停止並轉換到穩定的執行個體。

為了確保安全性和效能,Amazon EC2 會定期為您的執行個體安排例行維護事件,例如重新啟動、停止和啟動以及淘汰。您可以使用 AWS Health 儀表板來追蹤這些可能需要幾分鐘才能完成的事件。有關在例行維護事件後可以採取哪些動作的資訊,請參閱針對受排程事件影響的 Amazon EC2 執行個體的建議動作

如果您遇到 Spot 執行個體終止,請參閱 Amazon EC2 為何中斷我的 Spot 執行個體?

Amazon EC2 可能會在排程維護期間終止您的執行個體。要管理此類執行個體終止,最佳做法是使用 Amazon EC2 Auto Scaling lifecycle hook

對資源使用率過高問題進行疑難排解

若要檢查 CPU 或記憶體使用率是否過高,請查看應用程式日誌,以及執行個體的 CpuUtilizationNetworkInNetworkOutDiskReadOpsDiskWriteOps CloudWatch 指標。另外,也可查看 MemoryUtilized Container Insights 指標

如果您的設定無法滿足執行個體的資源需求,請向上擴展您的執行個體

或者,使用 Amazon ECS 容量供應商來動態擴展和最佳化叢集的運算資源。若要建立容量供應商,請使用 Amazon ECS 主控台。或者,執行與下列範例類似的 create-capacity-provider 命令:

aws ecs create-capacity-provider --name "example-capacity=provider" --auto-scaling-group-provider "autoScalingGroupArn=arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111:autoScalingGroupName/MyAutoScalingGroup,managedScaling={status=ENABLED,targetCapacity=100,minimumScalingStepSize=1,maximumScalingStepSize=100},managedTerminationProtection=ENABLED"

解決磁碟空間不足的問題

執行 Amazon ECS 任務的 EC2 執行個體的主要儲存空間可能會因下列原因而變滿:

  • 應用程式日誌
  • 容器鏡像儲存過多
  • 執行容器執行個體時所建立的暫存檔

請注意,每個檔案或目錄無論其大小如何,都會使用一個 inode。因此,如果您有多個小檔案,則可能會超出您的 inode 配額。如果超出了 inode 配額,那麼即使有可用磁碟空間,也無法建立新檔案。

使用 Amazon ECS 設定來自動化任務和映像清理,並移除已停止的任務和未使用的 Docker 映像檔。另外,使用 ECS_RESERVED_MEMORY 變數可確保任務不會消耗所有可用記憶體。

若要自動清理儲存庫中的舊映像或未使用的映像,請使用 Amazon Elastic Container Registry (Amazon ECR) 生命週期政策。若要清理未使用的物件 (例如映像、容器執行個體、磁碟區和網路),請使用 Docker prune 命令。如需詳細資訊,請參閱 Docker Docs 網站上的刪除未使用的 Docker 物件

若要查看所有已掛載檔案系統所使用的磁碟空間,請執行下列命令:

df -h

若要查看特定檔案系統所使用的磁碟空間,請執行下列命令:

df -h /

注意: 上述命令僅顯示根檔案系統的資料。

由於可用的 inode 很少,可能會出現資源問題。若要檢查 inode 使用情況,請執行下列命令:

df -i

若要查看特定目錄所使用的總磁碟空間,請執行下列命令:

du -sh /path/to/directory

注意:directory (目錄) 替換為您的目錄名稱。

若要列出應用程式中最大的目錄或檔案,請執行以下命令:

du -ah /path/to/directory | sort -rh | head -n 10

注意: 上述命令會列出最大的 10 個檔案或目錄。將 10 替換為您要查看的大檔案和目錄的數量,並將 directory (目錄) 替換為您的目錄名稱。

若要檢查目錄中每個子目錄的大小,請執行下列命令:

du -h --max-depth=1

若要最佳化可用容量,請為您的 EC2 執行個體使用 Spot 機群容量供應商。如需詳細資訊,請參閱使用 Spot 機群為 Amazon ECS 叢集提供支援

相關資訊

容錯和故障隔離

如何對使用 SSH 連線至 Amazon EC2 Linux 執行個體的問題進行疑難排解?

Amazon EBS 加密

Amazon EC2 的最佳實務

Amazon ECS 最佳實務

AWS 官方
AWS 官方已更新 1 個月前