本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 VPC 中執行堆疊
重要
該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post
您可以在 virtual private cloud (VPC) 中建立堆疊的執行個體,以控制使用者對其的存取權。例如,您可能不想讓使用者直接存取您堆疊的應用程式伺服器或資料庫,而要求所有公有流量都經由 Elastic Load Balancer 導引。
在 VPC 中執行堆疊的基本步驟如下:
-
使用 Amazon VPC 主控台或 API 或範本,建立適當設定的 VPC。 AWS CloudFormation
-
在建立堆疊時指定 VPC ID。
-
在適當子網路中,啟動堆疊的執行個體。
下列簡要說明 VPC 在 AWS OpsWorks Stacks 中的運作方式。
重要
如果您使用 VPC 端點功能,請注意,堆疊中的每個執行個體都必須能夠從 Amazon Simple Storage Service (Amazon S3) 完成以下動作:
-
安裝執行個體代理程式。
-
安裝 Ruby 這類資產。
-
上傳 Chef 執行日誌。
-
擷取堆疊命令。
若要啟用這些動作,您必須確保堆疊的執行個體可以存取下列符合堆疊區域的儲存貯體。否則,上述動作將會失敗。
對於廚師 12 Linux 和廚師 12.2 視窗,桶如下。
代理程式儲存貯體 | 資產儲存貯體 | 日誌儲存貯體 | DNA 儲存貯體 |
---|---|---|---|
|
|
|
|
若是 Linux 的 Chef 11.10 和更早版本,儲存貯體如下所示。美國東部 (維吉尼亞北部) 區域以外的區域端點不支援 Chef 11.4 堆疊。
代理程式儲存貯體 | 資產儲存貯體 | 日誌儲存貯體 | DNA 儲存貯體 |
---|---|---|---|
|
|
|
|
如需詳細資訊,請參閱 VPC 端點。
注意
若要讓 AWS OpsWorks 堆疊連線至您啟用的 VPC 端點,您也必須設定 NAT 或公用 IP 的路由,因為 AWS OpsWorks Stacks 代理程式仍需要存取公用端點。
VPC 基本概念
如需 VPC 的詳細討論,請參閱 Amazon Virtual Private Cloud。簡短來說,VPC 包含一或多個「子網路」,而其中每個都包含一或多個執行個體。每個子網路都有一個相關聯的路由表,以根據其目標 IP 地址指示傳出流量。
-
VPC 中的執行個體預設為可互相通訊,而不管它們的子網路為何。不過,變更網路存取控制清單 (ACL)、安全群組政策,或使用靜態 IP 地址的話,可能會切斷此通訊。
-
如果子網路的執行個體可以與網際網路通訊,則這種子網路稱為「公有子網路」。
-
如果子網路的執行個體只能與 VPC 中的其他執行個體通訊,而無法直接與網際網路通訊,則這種子網路稱為「私有子網路」。
AWS OpsWorks 堆疊需要設定 VPC,以便堆疊中的每個執行個體 (包括私有子網路中的執行個體) 都可以存取下列端點:
-
的「區域 Support」一節中列出的其中一個 AWS OpsWorks 堆疊服務端點開始使用 AWS OpsWorks 堆疊。
-
AWS OpsWorks Stacks 代理程式使用的下列其中一個執行個體服務端點。受管的客戶執行個體上執行的代理程式會與服務交換資料。
-
opsworks-instance-service. 美東 2. 亞馬遜
-
opsworks-instance-service.us-east-1.amazonaws.com
-
opsworks-instance-service. 美國西部-1. 亞馬遜
-
opsworks-instance-service.us-west-2.amazonaws.com
-
opsworks-instance-service. 阿勒南 1. 亞馬遜
-
opsworks-instance-service.pt-東北部-1. 亞馬遜
-
opsworks-instance-service.pt-東北部-2. 亞馬遜
-
opsworks-instance-service.pt-東南部-1. 亞馬遜
-
opsworks-instance-service.pt-東南部 2. 亞馬遜
-
opsworks-instance-service.ca-中央-1. 亞馬遜
-
opsworks-instance-service.eu-central-1.amazonaws.com
-
opsworks-instance-service. 歐盟-西部-1. 亞馬遜
-
opsworks-instance-service. 歐洲西部 2. 亞馬遜
-
opsworks-instance-service. 歐盟-西部-3. 亞馬遜
-
-
Amazon S3
-
作業系統仰賴的任何套件儲存庫,例如 Amazon Linux 或 Ubuntu Linux 儲存庫。
-
您的應用程式和自訂技術指南儲存庫。
有多種方法可以將 VPC 設定為提供此連線能力。以下是如何為 AWS OpsWorks Stacks 應用程式伺服器堆疊設定 VPC 的簡單範例。
![VPC diagram showing public and private subnets, NAT, load balancing, and connections to external services.](images/vpc.png)
此 VPC 有多個元件:
- 子網
-
VPC 有兩個子網路:一個公有子網路和一個私有子網路。
-
公有子網路包含一個負載平衡器和網路地址轉譯 (NAT) 裝置,其可與外部地址和私有子網路中的執行個體通訊。
-
私有子網路包含應用程式伺服器,其可與公有子網路中的 NAT 和負載平衡器通訊,但無法直接與外部地址通訊。
-
- 網際網路閘道
-
網際網路閘道允許含公有 IP 地址的執行個體 (例如負載平衡器) 與 VPC 外部地址通訊。
- 負載平衡器
-
Elastic Load Balancing 負載平衡器會接收來自使用者的傳入流量,將它分發至私有子網路中的應用程式伺服器,並將回應傳回給使用者。
- NAT
-
(NAT) 裝置提供的應用程式伺服器只能對網際網路進行有限的存取;通常是用來從外部儲存庫下載軟體更新。所有 AWS OpsWorks 堆疊執行個體都必須能夠與 AWS OpsWorks Stack 以及適當的 Linux 儲存庫進行通訊。其中一種處理此問題的方法是,將含相關聯彈性 IP 地址的 NAT 裝置放在公有子網路中。然後,您就可以將來自私有子網路執行個體的傳出流量透過 NAT 進行路由。
注意
單一 NAT 執行個體會在私有子網路的傳出流量中建立單一故障點。您可以使用一對 NAT 執行個體來設定 VPC,以在其中一個執行個體發生故障時由另一個接替,藉此提升可靠性。如需詳細資訊,請參閱 Amazon VPC NAT 執行個體的高可用性
。您也可以使用 NAT 閘道。如需詳細資訊,請參閱 Amazon VPC 使用者指南中的 NAT。
最佳的 VPC 組態取決於您的堆 AWS OpsWorks 疊堆疊。下列的一些範例說明您可能會使用特定 VPC 組態的時機。如需其他 VPC 案例的範例,請參閱 Amazon VPC 使用情境。
- 使用公有子網路中的一個執行個體
-
如果您的單一執行個體堆疊沒有關聯的私有資源 (例如不可公開存取的 Amazon RDS 執行個體),則可以建立具有一個公有子網路的 VPC,然後將執行個體放在該子網路中。如果您不是使用預設 VPC,則必須讓執行個體 layer 指派彈性 IP 地址給該執行個體。如需詳細資訊,請參閱 OpsWorks 圖層基礎。
- 使用私有資源
-
如果您的資源不應公開存取,您可以建立一個 VPC,其中含有一個公有子網路和一個私有子網路。例如,在負載平衡的自動擴展環境中,您可以將所有 Amazon EC2 執行個體放在私有子網路中,並將負載平衡器放在公有子網路中。如此一來,Amazon EC2 執行個體就無法從網際網路直接存取;所有傳入流量都必須透過負載平衡器路由。
私有子網路會將執行個體與 Amazon EC2 直接使用者存取隔離,但仍必須將輸出請求傳送至 AWS 和適當的 Linux 套件儲存庫。若要允許這類請求,您可以使用自帶彈性 IP 地址的網路地址轉譯 (NAT) 裝置,然後透過 NAT 路由該執行個體的傳出流量。您可以將 NAT 放在負載平衡器的相同公有子網路中,如上述範例所示。
-
如果您使用的是後端資料庫 (例如 Amazon RDS 執行個體),則可以將這些執行個體放在私有子網路中。對於 Amazon RDS 執行個體,您必須在不同的可用區域中指定至少兩個不同的子網路。
-
如果您需要直接存取私有子網路中的執行個體 (例如,您想要使用 SSH 登入執行個體),您可以將防禦主機放在公有子網路中,以代理來自網際網路的要求。
-
- 將自己的網路擴展至 AWS
-
若您想要將自己的網路擴展至雲端,並直接從 VPC 存取網際網路,您可以建立 VPN 閘道。如需詳細資訊,請參閱案例 3:具有公有子網路和私有子網路以及硬體 VPN 存取的 VPC。
為 AWS OpsWorks 堆疊堆疊建立 VPC
本節說明如何使用範例 AWS CloudFormation 範本為 AWS OpsWorks 堆疊建立 VPC。您可以在 OpsWorksVPCtemplates.zip 文件中下載該模板。如需如何手動建立一個本主題所述 VPC 的詳細資訊,請參閱案例 2:具有公有子網路和私有子網路的 VPC。如需如何設定路由表、安全群組等,請參閱範本範例。
注意
根據預設, AWS OpsWorks Stack 會透過串連其 CIDR 範圍和可用區域來顯示子網路名稱,例如. 10.0.0.1/24 - us-east-1b
若要讓名稱更易讀,請為每個子網路建立一個標籤,並將 [索引鍵] 設定為Name
並將 [值] 設定為子網路名稱。 AWS OpsWorks 堆疊接著會將子網路名稱附加至預設名稱。例如,下列範例中的私有子網路具有將 Name 設定為的標籤Private
,其 OpsWorks 顯示為10.0.0.1/24
us-east - 1b - Private
。
只需幾個步驟,即可使用主 AWS CloudFormation 控台啟動 VPC 範本。下列程序使用範例範本在美國東部 (維吉尼亞北部) 區域建立 VPC。如需如何使用範本在其他區域中建立 VPC 的指示說明,請參閱程序之後的備註。
若要建立 VPC
-
開啟 AWS CloudFormation 主控台
,選取 US East (N. Virginia) (美國東部 (維吉尼亞北部)) 區域,然後選擇 Create Stack (建立堆疊)。 -
在 Select Template (選取範本) 頁面上,選取 Upload a template (上傳範本)。瀏覽尋找您在 OpsWorksVPCtemplates.zip
OpsWorksinVPC.template
檔案中下載的檔案。選擇「繼續」。您也可以開啟 AWS 範例範本、尋找堆 AWS OpsWorks 疊 VPC CloudFormation 範本
,然後選擇啟動堆疊來啟動此堆疊。 -
接受 Specify Parameters (指定參數) 頁面中的預設值,然後選擇 Continue (繼續)。
-
在 Add Tags (新增標籤) 頁面中,將 Key (索引鍵) 設定為
Name
,將 Value (值) 設定為 VPC 名稱,以建立標籤。此標籤可讓您在建立 AWS OpsWorks 堆疊時更輕鬆地識別您的 VPC。 -
選擇 Continue (繼續),然後選擇 Close (關閉) 以啟動堆疊。
備註:您可以使用下列任一種方法,在其他區域中建立 VPC。
-
移至 [在不同區域中使用範本
],選擇適當的區域,找到 [ AWS OpsWorks 堆疊 VPC 範本],然後選擇 [啟動堆疊]。 -
將範本檔案複製到您的系統中,並在 AWS CloudFormation 主控台
中選取適當的區域,然後使用 Create Stack (建立堆疊) 精靈的 Upload a template to Amazon S3 (上傳範本到 Amazon S3) 選項,從您的系統上傳範本。
範例範本包括提供建立 AWS OpsWorks Stack 堆疊所需的 VPC、子網路和負載平衡器 ID 的輸出。您可以通過選擇 AWS CloudFormation 控制台窗口底部的「輸出」選項卡來查看它們。
![Stack outputs table showing VPC, subnet, and load balancer IDs for an OpsWorks-in-VPC stack.](images/vpc_cfn_outputs.png)