我正在尋找一些好的模式和反模式來部署鏡像環境(為簡單起見,我們假設 EC2 執行個體、RDS 和 S3 儲存桶,這是一種非常常見的設定)。假設我們必須這樣做數百甚至數千次。我已經考慮過一些想法,例如
多個帳戶 - 單一用途 - 使用所有區域
- 我們為每個區域部署一個 VPC 實例,並在該區域部署我們的一組服務。
- 好,保證隔離,沒有
noisy neighbors
,TF模組或CloudFormation模板不會很複雜 - 糟糕,真是一場糟糕的管理噩夢
單一帳戶 - 多重用途
- 我們將 VPC 分割為多個子網,並以子網路分組部署資源
- 好,更容易管理,事半功倍
- 不好,每個區域被軟限制為 20 個子網路(16 個區域 * 20),可能會出現吵鬧的鄰居,網路最終可能會變得混亂
我正在尋找更多的方法來做到這一點,以及為什麼它們會不好(技術債務,無法維護)或好(易於重用等)
太感謝了
答案1
因此,關於這個相當複雜的主題,有幾點要說的話——這在很大程度上取決於您真正想要實現的目標。
您有三個選擇:
單一 VPC - 單組大型子網路 - 在您的範例中,這將是 4 - 2 個「公共」子網路和 2 個「私有」子網路。然後使用安全群組來隔離「部署」——我認為使用子網路進行分離沒有任何好處,除了必須管理 IP 位址空間和大量子網路之外。最終,子網路之間的唯一區別通常是:AZ/路由表/nacl/dhcp-options - 僅當其中一項發生變更時才使用新子網路。子網路本身不會為您帶來任何「吵鬧的鄰居」問題。它不是經典“vlan”意義上的第 2 層域,並且上游互聯網網關可以無限制地水平擴展,如下所示:亞馬遜 VPC 常見問題解答
多個 VPC - 如果您有帳戶 - 您可以在一個區域擁有多個 VPC,軟限制為 5 個 VPC,但硬上限為:
該地域內的VPC數量乘以每個VPC的安全組數量不能超過10000。
這相當高,在您的範例中,您可以說可能有 4 個安全群組(ELB、EC2 ASG、RDS、管理員存取權),因此理論上這意味著 2,500 個 VPC?我沒聽說有人有這樣的能力,但這可能是個選擇。
然而,根據您的平台的自動擴展程度,需要考慮的另一件事是,某些限制是帳戶範圍內的,如果您在一個部署中達到這些限制,那麼它可能會影響另一個部署- 例如,只是特定類型的實例計數- 或Lambda 並發執行限制。所以這導致了第三個選項...
多個帳戶 - 現在,借助 AWS Organizations API,您可以透過 API 建立新帳戶,但不幸的是,「限制」頁面對於帳戶數量的限制並不明確。儘管我聽說過較大的企業擁有數千個帳戶。看:AWS 組織的限制和如何使用 AWS Organizations 自動建立端對端帳戶
總體而言,對於您的用例,您需要擁有一個乾淨的 CloudFormation 堆疊,該堆疊可以完全重複使用且變化最小 - 只是為了部署、操作和支援的一致性。對我來說,這指的是 VPC 作為部署單元或帳戶作為部署單元。您需要小心注意這兩種情況的限制。在 VPC 內執行此操作,無論是具有大型子網還是按子網分割,最終都會變得維護起來很混亂 - 我的主觀觀點。