View a markdown version of this page

多區域:隔離 - AWS 彈性中樞

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

多區域:隔離

多區域:隔離測試會封鎖兩個區域之間的連線,包括網路流量、跨區域資料複寫和選取的相依性。它可協助您在無法存取另一個區域中的資源時,驗證您的服務是否獨立運作,並顯示可能影響可用性的跨區域相依性。

此測試有何獨特之處
  • 專注於區域隔離 (失去跨區域連線),而不是復原至另一個區域。

  • 封鎖網路流量、暫停跨區域複寫 (Amazon S3、DynamoDB、MemoryDB),以及選擇性地封鎖兩個區域之間的相依性。

  • 驗證區域是否可以自行運作。

如何通過此測試
  • 這是持續的測試。如果測試動作結束之前,所有成功警示都保持 OK 狀態,則測試會通過。

要考慮的事項
  • 選擇衡量隔離區域運作狀態的成功警示 – 驗證它是否繼續獨立服務流量。

  • 此測試同時適用於主動/主動和主動/被動架構。

  • 金鑰使用案例:驗證您的復原區域可以獨立運作。例如,如果您的主要 是 us-east-1,次要 是 us-west-2,請使用此 來驗證在與 隔離時獨立us-west-2運作us-east-1。

  • 此測試也是多區域的最佳前綴:復原 – 在測試完全容錯移轉之前驗證獨立性。測試可協助探索重要的跨區域相依性。

  • 確保您的相依性在測試期間被主動使用 (流量流向它們) – 這會驗證區塊是否有效。請考慮新增追蹤相依性用量的警示或指標 (例如,請求計數或連線錯誤),以確認在測試期間正在執行相依性。

  • 相依性必須是可解析的 DNS 端點。

  • 封鎖觸發運作狀態檢查失敗的相依性可能會導致運算 (例如,Amazon ECS 任務) 遭到取代。封包遺失動作不會重新套用至取代任務,且可能回報為失敗。

金鑰測試參數
  • 隔離區域 – 您要測試獨立操作的區域。

  • 目的地區域 – 正在封鎖的區域 (連線中斷至此區域)。

  • 持續時間 – 測試動作執行的時間長度。之後需要幾分鐘的時間,才能在測試結束前收集最終結果。第一次建立測試時,預設為 3 小時。

  • 要封鎖的相依性 (選用) – 如果啟用相依性探索,清單會顯示從隔離區域到目的地區域的相依性。您可以從此清單中選取 ,或依 DNS 網域名稱手動新增 。預設不會選取相依性。無論如何,此測試中的其他動作 (網路連線、複寫暫停) 都會執行。此處新增的其他相依性僅用於此測試,不會儲存至服務的相依性探索。這些預設值適用於 主控台;使用 API 時,您可以明確提供相依性。

動作

此測試會執行下列 AWS FIS 動作,將流量捨棄至您選取的相依性。動作會在 Amazon EC2 執行個體、Amazon ECS 任務 (Amazon EC2 和 Fargate) 和 Amazon EKS Pod (Amazon EC2) 上注入 100% 封包遺失。如果您的服務沒有資源符合動作的目標類型,則會略過該動作。

注意

用於封鎖相依性的動作需要額外設定:安裝在 Amazon EC2 執行個體上的 SSM 代理程式、Amazon ECS 任務定義中的 SSM 代理程式容器,或 Amazon EKS Pod 的 Kubernetes 服務帳戶。

Action 說明
aws:network:transit-gateway-disrupt-cross-region-connectivity 透過傳輸閘道對等至目的地區域來封鎖跨區域流量。
aws:network:route-table-disrupt-cross-region-connectivity 封鎖從子網路到目的地區域的跨區域流量。
aws:network:disrupt-vpc-endpoint 封鎖跨區域 VPC 端點到目的地區域的流量。
aws:s3:bucket-pause-replication 暫停 Amazon S3 跨區域複寫至目的地區域。
aws:dynamodb:global-table-pause-replication 暫停 DynamoDB 全域資料表複寫。
aws:memorydb:multi-region-cluster-pause-replication 暫停 MemoryDB 多區域叢集複寫。
aws:ssm:send-command 將流量從 Amazon EC2 執行個體捨棄至選取的相依性。
aws:ecs:task-network-packet-loss 將流量從 Amazon ECS 任務捨棄至選取的相依性。
aws:eks:pod-network-packet-loss 將流量從 Amazon EKS Pod 捨棄至選取的相依性。

若要查看此測試的參數及其預設值,請使用 get-test-template。