在 VPC 中运行堆栈 - AWS OpsWorks

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 VPC 中运行堆栈

您可以通过在虚拟私有云 (VPC) 中创建堆栈的实例来控制用户对这些实例的访问。例如,您可能不希望用户直接访问您堆栈的应用程序服务器或数据库,而要求所有公有流量通过弹性负载均衡器传送。

在 VPC 中运行堆栈的基本步骤如下:

  1. 利用 Amazon VPC 控制台、API 或 AWS CloudFormation 模板创建一个正确配置的 VPC。

  2. 在创建堆栈时指定 VPC ID。

  3. 在适当的子网中启动堆栈的实例。

下面简要介绍了 VPC 在 AWS OpsWorks Stacks 中的工作原理.

重要

如果使用 VPC 终端节点功能,则请注意堆栈中的每个实例必须能够从 Amazon Simple Storage Service (Amazon S3) 中完成以下操作:

  • 安装实例代理。

  • 安装资产,例如 Ruby。

  • 上传 Chef 运行日志。

  • 检索堆栈命令。

要启用这些操作,您必须确保堆栈的实例有权访问与堆栈区域匹配的以下存储桶。否则,上述操作将失败。

对于 Chef 12 Linux 和 Chef 12.2 Windows,存储桶如下所示。

代理存储桶 资产存储桶 日志存储桶 DNA 存储桶
  • opsworks-instance-agent-sa-east-1

  • opsworks-instance-agent-ap-south-1

  • opsworks-instance-agent-ap-northeast-1

  • opsworks-instance-agent-ap-northeast-2

  • opsworks-instance-agent-ap-southeast-1

  • opsworks-instance-agent-ap-southeast-2

  • opsworks-instance-agent-ca-central-1

  • opsworks-instance-agent-eu-central-1

  • opsworks-instance-agent-eu-west-1

  • opsworks-instance-agent-eu-west-2

  • opsworks-instance-agent-eu-west-3

  • opsworks-instance-agent-us-east-1

  • opsworks-instance-agent-us-east-2

  • opsworks-instance-agent-us-west-1

  • opsworks-instance-agent-us-west-2

  • opsworks-instance-assets-us-east-2

  • opsworks-instance-assets-us-east-1

  • opsworks-instance-assets-ap-south-1

  • opsworks-instance-assets-ap-northeast-1

  • opsworks-instance-assets-ap-northeast-2

  • opsworks-instance-assets-ap-southeast-1

  • opsworks-instance-assets-ap-southeast-2

  • opsworks-instance-assets-ca-central-1

  • opsworks-instance-assets-eu-central-1

  • opsworks-instance-assets-eu-west-1

  • opsworks-instance-assets-eu-west-2

  • opsworks-instance-assets-eu-west-3

  • opsworks-instance-assets-sa-east-1

  • opsworks-instance-assets-us-west-1

  • opsworks-instance-assets-us-west-2

  • opsworks-us-east-2-log

  • opsworks-us-east-1-log

  • opsworks-ap-south-1-log

  • opsworks-ap-northeast-1-log

  • opsworks-ap-northeast-2-log

  • opsworks-ap-southeast-1-log

  • opsworks-ap-southeast-2-log

  • opsworks-ca-central-1-log

  • opsworks-eu-central-1-log

  • opsworks-eu-west-1-log

  • opsworks-eu-west-2-log

  • opsworks-eu-west-3-log

  • opsworks-sa-east-1-log

  • opsworks-us-west-1-log

  • opsworks-us-west-2-log

  • opsworks-us-east-2-dna

  • opsworks-us-east-1-dna

  • opsworks-ap-south-1-dna

  • opsworks-ap-northeast-1-dna

  • opsworks-ap-northeast-2-dna

  • opsworks-ap-southeast-1-dna

  • opsworks-ap-southeast-2-dna

  • opsworks-ca-central-1-dna

  • opsworks-eu-central-1-dna

  • opsworks-eu-west-1-dna

  • opsworks-eu-west-2-dna

  • opsworks-eu-west-3-dna

  • opsworks-sa-east-1-dna

  • opsworks-us-west-1-dna

  • opsworks-us-west-2-dna

对于 Chef 11.10 和 Linux 的早期版本,存储桶如下所示。美国东部(弗吉尼亚北部)地区 外的区域终端节点不支持 Chef 11.4 堆栈。

代理存储桶 资产存储桶 日志存储桶 DNA 存储桶
  • opsworks-instance-agent-us-east-2

  • opsworks-instance-agent-us-east-1

  • opsworks-instance-agent-ap-south-1

  • opsworks-instance-agent-ap-northeast-1

  • opsworks-instance-agent-ap-northeast-2

  • opsworks-instance-agent-ap-southeast-1

  • opsworks-instance-agent-ap-southeast-2

  • opsworks-instance-agent-ca-central-1

  • opsworks-instance-agent-eu-central-1

  • opsworks-instance-agent-eu-west-1

  • opsworks-instance-agent-eu-west-2

  • opsworks-instance-agent-eu-west-3

  • opsworks-instance-agent-us-east-1

  • opsworks-instance-agent-us-west-1

  • opsworks-instance-agent-us-west-2

  • opsworks-instance-assets-us-east-2

  • opsworks-instance-assets-us-east-1

  • opsworks-instance-assets-ap-south-1

  • opsworks-instance-assets-ap-northeast-1

  • opsworks-instance-assets-ap-northeast-2

  • opsworks-instance-assets-ap-southeast-1

  • opsworks-instance-assets-ap-southeast-2

  • opsworks-instance-assets-ca-central-1

  • opsworks-instance-assets-eu-central-1

  • opsworks-instance-assets-eu-west-1

  • opsworks-instance-assets-eu-west-2

  • opsworks-instance-assets-eu-west-3

  • opsworks-instance-assets-sa-east-1

  • opsworks-instance-assets-us-west-1

  • opsworks-instance-assets-us-west-2

  • prod_stage-log

  • prod_stage-dna

有关更多信息,请参阅 VPC 终端节点

注意

为了将 AWS OpsWorks Stacks 连接到您启用的 VPC 终端节点,还必须为您的 NAT 或公有 IP 配置路由,因为 AWS OpsWorks Stacks 代理仍然需要访问公有终端节点。

VPC 基础知识

有关 VPC 的详细讨论,请参阅 Amazon Virtual Private Cloud。简而言之,VPC 包含一个或多个子网,每个子网都包含一个或多个实例。每个子网有一个关联的路由表,可根据其目标 IP 地址定向出站流量。

  • VPC 内部的实例默认情况下可以相互通信,而不考虑其子网。但是,对网络访问控制列表 (ACL)、安全组策略的更改,或使用静态 IP 地址会破坏这种通信。

  • 其实例可以与 Internet 通信的子网称为公有子网

  • 其实例仅可与 VPC 中的其他实例通信而不能直接与 Internet 通信的子网称为私有子网

AWS OpsWorks Stacks 要求对 VPC 进行配置,以便堆栈中的每个实例 (包括私有子网中的实例) 都可以访问以下终端节点:

  • AWS OpsWorks Stacks 入门的“区域支持”部分中列出的其中一个 AWS OpsWorks Stacks 服务终端节点。

  • 以下实例服务终端节点之一,由 AWS OpsWorks Stacks 代理使用。该代理在托管客户实例上运行以便与服务交换数据。

    • opsworks-instance-service.us-east-2.amazonaws.com

    • opsworks-instance-service.us-east-1.amazonaws.com

    • opsworks-instance-service.us-west-1.amazonaws.com

    • opsworks-instance-service.us-west-2.amazonaws.com

    • opsworks-instance-service.ap-south-1.amazonaws.com

    • opsworks-instance-service.ap-northeast-1.amazonaws.com

    • opsworks-instance-service.ap-northeast-2.amazonaws.com

    • opsworks-instance-service.ap-southeast-1.amazonaws.com

    • opsworks-instance-service.ap-southeast-2.amazonaws.com

    • opsworks-instance-service.ca-central-1.amazonaws.com

    • opsworks-instance-service.eu-central-1.amazonaws.com

    • opsworks-instance-service.eu-west-1.amazonaws.com

    • opsworks-instance-service.eu-west-2.amazonaws.com

    • opsworks-instance-service.eu-west-3.amazonaws.com

  • Amazon S3

  • 您的操作系统依靠的任何软件包存储库,例如 Amazon Linux 或 Ubuntu Linux 存储库。

  • 您的应用程序和自定义说明书存储库。

可以使用多种方法来配置 VPC 以提供此连接。以下是为 AWS OpsWorks Stacks 应用程序服务器堆栈配置 VPC 的简单示例。

此 VPC 有几个组件:

子网

VPC 有两个子网:一个公有子网和一个私有子网。

  • 公有子网中包含一个负载均衡器和一个网络地址转换 (NAT) 设备,它可以与外部地址以及私有子网中的实例进行通信。

  • 私有子网包含应用程序服务器,它可与公有子网中的 NAT 和负载均衡器通信,但无法与外部地址直接通信。

Internet 网关

Internet 网关允许具有公有 IP 地址的实例 (例如负载均衡器) 与 VPC 外的地址进行通信。

负载均衡器

Elastic Load Balancing 负载均衡器接收用户的传入流量、将其分配到私有子网中的应用程序服务器,然后向用户返回响应。

NAT

(NAT) 设备为应用程序服务器提供有限的 Internet 访问,通常用于从外部存储库下载软件更新等用途。所有 AWS OpsWorks Stacks 实例必须能够与 AWS OpsWorks Stacks 以及适当的 Linux 存储库进行通信。处理此问题的一种方法是将具有关联的弹性 IP 地址的 NAT 设备放在公有子网中。然后,您就可以通过 NAT 对来自私有子网中实例的出站流量进行路由。

注意

一个 NAT 实例可在您的私有子网的出站流量中创建一个单点故障。您可以配置具有一对 NAT 实例的 VPC 来提高可靠性,这对实例可在其中一个出现故障时由另一个接管。有关更多信息,请参阅 Amazon VPC NAT 实例的高可用性。您也可以使用 NAT 网关。有关更多信息,请参阅Amazon VPC 用户指南中的 NAT

最佳 VPC 配置取决于您的 AWS OpsWorks Stacks 堆栈。以下是一些您可能使用特定 VPC 配置时的示例。有关其他 VPC 场景的示例,请参阅使用 Amazon VPC 的场景

处理公有子网中的一个实例

如果您有一个没有关联私有资源的单一实例堆栈(例如不应可公开访问的 Amazon RDS 实例),您就可以创建具有一个公有子网的 VPC 并将实例放在该子网中。如果您不使用默认 VPC,则必须让实例的层为该实例分配弹性 IP 地址。有关更多信息,请参阅OpsWorks 层 基础知识

处理私有资源

如果您有不应公开访问的资源,则可以创建具有一个公有子网和一个私有子网的 VPC。例如,在负载均衡的自动扩展环境中,您可以将私有子网中的所有 Amazon EC2 实例和负载均衡器放在公有子网中。这样,就不能通过 Internet 直接访问 Amazon EC2 实例了;所有传入流量必须通过负载均衡器来路由。

私有子网将实例与 Amazon EC2 直接用户访问隔离开,但它们仍然必须向 AWS 和适当的 Linux 软件包存储库发送出站请求。若要允许此类请求,您可以使用诸如具有自己的弹性 IP 地址的网络地址转换 (NAT) 设备,然后通过 NAT 对实例的出站流量进行路由。您可以将 NAT 放在与负载均衡器相同的公有子网中,如上述示例所示。

  • 如果您使用的是诸如 Amazon RDS 实例等后端数据库,则可以将这些实例放在私有子网中。对于 Amazon RDS 实例,则必须在不同的可用区内指定至少两个不同子网。

  • 如果需要直接访问私有子网中的实例(例如,要使用 SSH 登录实例),则可以将防御主机放在用于代理 Internet 请求的公有子网中。

将您自己的网络扩展到 AWS

如果您要将自己的网络扩展到云中并直接从您的 VPC 访问 Internet,则可以创建 VPN 网关。有关更多信息,请参阅场景 3:具有公有和私有子网的 VPC 以及硬件 VPN 访问

为 AWS OpsWorks Stacks 堆栈创建 VPC

本部分将介绍如何使用示例 AWS CloudFormation 模板为 AWS OpsWorks Stacks 堆栈创建 VPC。您可以在 OpsWorksVPCtemplates.zip 文件中下载该模板。有关如何手动创建如本主题中所述 VPC 的更多信息,请参阅Scenario 2: VPC with Public and Private Subnets。有关如何配置路由表、安全组等信息,请参阅示例模板。

注意

默认情况下,AWS OpsWorks Stacks 将其 CIDR 范围和可用区连接起来显示子网名称,如 10.0.0.1/24 - us-east-1b。为了使名称更便于阅读,请为每个子网创建一个标签,将 Key (键) 设置为 Name,将 Value (值) 设置为子网名称。AWS OpsWorks Stacks 然后会将子网名称追加到默认名称后。例如,以下示例中的私有子网有一个将 Name (名称) 设置为 Private 的标签,OpsWorks 将其显示为 10.0.0.1/24 us-east - 1b - Private

只需简单几步就可以使用 AWS CloudFormation 控制台来启动 VPC 模板。以下过程使用示例模板在 美国东部(弗吉尼亚北部)地区 中创建 VPC。有关如何使用模板在其他区域创建 VPC 的说明,请参阅过程后面的备注

创建 VPC

  1. 打开 AWS CloudFormation 控制台,选择 US East (N. Virginia) (美国东部 (弗吉尼亚北部)) 区域,然后选择 Create Stack (创建堆栈)

  2. Select Template (选择模板) 页面上,选择 Upload a template (上传模板)。浏览您在 OpsWorksVPCtemplates.zip 文件中下载的 OpsWorksinVPC.template 文件。选择 Continue (继续)

    
                        CloudFormation 中的“Select Template (选择模板)”页面

    您也可以通过以下操作来启动此堆栈:打开 AWS CloudFormation 示例模板、找到 AWS OpsWorks Stacks VPC 模板,然后选择 Launch Stack (启动堆栈)

  3. Specify Parameters (指定参数) 页面上,接受默认值并选择 Continue (继续)

  4. Add Tags (添加标签) 页面上,创建一个标签,将 Key (键) 设置为 Name,并将 Value (值) 设置为 VPC 名称。此标签能够在您创建 AWS OpsWorks Stacks 堆栈时更容易识别您的 VPC。

  5. 选择 Continue (继续),然后选择 Close (关闭) 以启动堆栈。

注意:您可以使用以下任一方法在其他区域中创建 VPC。

  • 转到在不同区域中使用模板,选择适当的区域,找到 AWS OpsWorks Stacks VPC 模板,然后选择 Launch Stack (启动堆栈)

  • 将模板文件复制到您的系统中,在 AWS CloudFormation 控制台中选择适当的区域,并使用 Create Stack (创建堆栈) 向导的 Upload a template to Amazon S3 (将模板上传到 Amazon S3) 选项从您的系统中上传模板。

该示例模板包含的输出中提供了 VPC、子网和负载均衡器 ID,这些都是创建 AWS OpsWorks Stacks 堆栈所需要的。您可以通过选择 AWS CloudFormation 控制台窗口底部的 Outputs (输出) 选项卡来查看它们。