增强型 VPC 路由在 Amazon Redshift 中是如何工作的?

上次更新时间:2020 年 9 月 30 日

我尝试在 Amazon Redshift 中启用增强型 VPC 路由。增强型 VPC 路由是如何工作的,使用时需要注意什么重要事项?

简短描述

在 Amazon Redshift 中,由 COPYUNLOAD 和 Amazon Redshift Spectrum 创建的网络流量流过网络接口。此网络接口是 Amazon Redshift 集群的内部网络接口,位于 Amazon Virtual Private Cloud (Amazon VPC) 之外。默认情况下,网络流量随后通过公共互联网路由到达目的地。

不过,如果启用了 Amazon Redshift 增强型 VPC 路由,Amazon Redshift 会改为通过 VPC 路由网络流量。Amazon Redshift 增强型 VPC 路由使用可用的路由选项,以此为网络流量排定最具体的路由优先级。VPC 终端节点优先作为第一路由优先级。如果 VPC 终端节点不可用,Amazon Redshift 会通过互联网网关、NAT 实例NAT 网关来路由网络流量。

要确定是否应启用 Amazon Redshift 增强型 VPC 路由,请考虑以下使用案例:

  • 用于 COPYUNLOAD 的 Amazon S3 流量通过 VPC 网关终端节点而不是公共互联网。
  • SSH 流量(通过 SSH 提取运行 COPY 命令产生)来自 VPC 中的远程主机或本地服务器。
  • 用于 Redshift Spectrum 的 AWS Glue、Amazon Athena 或 Apache Hive 元数据存储流量通过 VPC 接口终端节点。
  • 针对位于对等 VPC 中的私有 Amazon Relational Database Service (Amazon RDS) 实例的联合查询

要确定 Amazon Redshift 增强型 VPC 路由是否支持您的集群需求,请注意以下事项:

  • 允许您控制网络流量。
  • 增强安全性,因为它为网络流量使用私有 IP 地址。
  • 影响 Amazon Redshift 访问其他资源的方式。因此,当您配置安全组、网络访问控制列表(网络 ACL)或路由表时,增强型 VPC 路由有时会产生额外的开销。
    注意:如果配置不当,增强型 VPC 路由可能会导致 COPYUNLOAD 或 Redshift Spectrum 作业失败,
  • 无法提高集群性能。

解决方法

Amazon Redshift 对路由方法的优先级划分

重要提示:启用增强型 VPC 路由后,它不会自动让流量通过 VPC。必须在子网的路由表中创建并指定 VPC 终端节点。

如果存在多条网络路径,Amazon Redshift 会通过最具体的可用路径来路由流量。

示例 1:Amazon Simple Storage Service (Amazon S3) 网关终端节点

在以下示例中,Amazon Redshift 通过 Amazon S3 网关终端节点 ("vpce-xxxxx") 路由网络流量:

Destination  |  Target
-------------------------
10.0.0.0/16  |  local
0.0.0.0/0    |  igw-xxxxx
pl-6fa54006  |  vpce-xxxxx 

注意:VPC 中的每个子网都必须与路由表相关联。

示例 2:互联网、NAT 网关或 NAT 实例

在以下子网路由表示例中,Amazon S3 流量通过互联网网关 ("igw-xxxxx") 路由:

Destination  |  Target
-------------------------
10.0.0.0/16  |  local
0.0.0.0/0    |  igw-xxxxx

示例 3:没有到达目的地的可用路由

如果没有可用的路由方法,且路由表无法到达 S3,则 COPY 和 UNLOAD 的网络流量会超时,如下所示:

Destination   |  Target
------------------------------
10.0.0.0/16   |  local

多次重试后,无法到达 S3 的路由方法会导致以下错误消息:

"ERROR:  S3CurlException: Connection timed out after 50001 milliseconds, CurlError 28, multiCurlError 0, CanRetry 1, UserError 0"

检查是否启用了增强型 VPC 路由

您可以使用以下方法之一检查 Amazon Redshift 中是否启用了 VPC 路由:

  • Amazon Redshift 控制台:您可以使用 Amazon Redshift 控制台检查是否启用了增强型 VPC 路由。有关更多信息,请参阅启用增强型 VPC 路由中的创建具有增强型 VPC 路由的集群部分。
  • AWS 命令行界面 (AWS CLI):使用 describe-clustersgrep 命令验证增强型 VPC 路由是否设置为 "true"。
  • VPC 流日志:您可以使用流日志来捕获有关在 VPC 中传入和传出网络接口的 IP 流量信息。

在以下示例中,使用了 AWS CLI 命令语法来验证增强型 VPC 路由设置:

$ aws redshift describe-clusters --cluster-id <cluster-id> | grep EnhancedVpcRouting 

|| EnhancedVpcRouting | True

在以下 VPC 流日志示例中,显示了私有 Amazon Redshift IP 地址和 S3 存储桶之间的 COPY 网络流量:

Account_ID    ENI    Source_IP    Destination_IP    Source_Port    Destination_Port    Protocol   Packets    Bytes    Start_Time    End_Time
…….
2 540754XXXXXX eni-01783841dad81XXXX 52.216.29.118 172.31.13.236 443 37516 6 279740 390798072 1589668161 1589668221 ACCEPT OK
2 540754XXXXXX eni-01783841dad81XXXX 172.31.13.236 52.216.29.118 37516 443 6 9206 368276 1589668161 1589668221 ACCEPT OK
…….

其他注意事项

  • 如果您使用的是 Amazon S3 VPC 终端节点,则 S3 存储桶应与 Amazon Redshift 集群位于同一区域
  • 您的 VPC 必须启用 DNS 支持。如果使用的是自定义 DNS,请确保您的 Amazon S3 和 AWS Glue 服务终端节点可以解析。
  • 请务必配置您的 AWS Glue 接口终端节点,以便流量通过 VPC 从 Redshift Spectrum 私密流向 AWS Glue。否则,需要 NAT 网关或互联网网关。

有关使用增强型 VPC 路由的要求和限制的更多信息,请参阅启用增强型 VPC 路由。</p


这篇文章对您有帮助吗?


您是否需要账单或技术支持?