我有一个 Amazon Redshift 集群,但无法连接到它。我想知道如何解决这个问题。
简短描述
连接超时错误通常会导致 Amazon Redshift 集群出现问题。您会收到一条类似于以下内容的错误消息:
“无法连接到服务器: 连接超时
服务器是否在主机“example.123456789.us-east-1.redshift.amazonaws.com”(255.255.255.255)上运行并接受
端口 5439 上的 TCP/IP 连接?”
若要解决此问题,请为公有或私有子网中的集群完成以下故障排除步骤。
解决方法
我的集群位于公有子网中,但无法通过互联网访问
当满足以下条件时,可以通过互联网访问 Redshift 集群:
- 您已开启可公开访问集群设置。
- 您在公有子网中配置了集群。
- 集群的安全组包含一条入站规则,该规则允许源 IP 地址或 CIDR 阻止与集群端口号的连接。
**注意:**在完成以下步骤之前,请确保您的 Amazon Virtual Private Cloud(VPC)已连接互联网网关。
在集群中打开可公开访问设置:
- 打开 Amazon Redshift 控制台。
- 选择集群。
- 选择要连接到的集群。
- 选择操作。
- 选择修改可公开访问的设置。
- 选中打开可公开访问复选框。
- (可选)选择您的弹性 IP 地址。
- 选择保存更改。
我的集群位于私有子网中,我无法从本地计算机连接到我的集群
您可以通过两种方式将集群连接到本地计算机:
- 将集群的子网设为公有子网。
- 使用 Amazon Redshift 查询编辑器 v2。
将集群的子网设为公有子网
完成以下步骤:
- 打开 Amazon Redshift 控制台。
- 选择集群。
- 选择要连接到的集群。
- 选择配置选项卡以打开集群属性页面。
- 选择查看 VPC 以打开 Amazon VPC 控制台。
- 在导航窗格中,选择路由表。
- 选择与集群所在子网关联的路由表。
- 选择编辑。
- 选择添加路由。
对于 IPv4 流量:在目的地字段中,输入您要提供访问权限的 CIDR 范围。在目标字段中,选择互联网网关 ID。
对于 IPv6 流量:在目的地字段中,输入 ::/0。在目标字段中,选择互联网网关 ID。
- 选择保存。
使用 Amazon Redshift 查询编辑器 v2
若要在不更改网络设置的情况下连接到 Redshift 集群,请使用查询编辑器 v2。按照连接 Amazon Redshift 数据库中的说明进行操作。
我无法从其他 VPC 中的 Amazon EC2 实例访问我的集群
在 VPC 之间创建 VPC 对等连接。这使两个 VPC 可以通过私有 IP 地址相互通信。
-
按照创建和接受 VPC 对等连接中的步骤操作。
**注意:**如果 VPC 位于同一 AWS 账户中,请确保 IPv4 CIDR 块不重叠。
-
更新两个路由表。
-
更新您的安全组以参考对等 VPC 组。
-
在 Amazon Elastic Compute Cloud(Amazon EC2)实例上,使用联网实用程序测试 VPC 对等连接。以下示例在 SourceForge 网站上使用 netcat:
nc -zv HOSTNAME PORT
如果 VPC 对等连接成功,则您会收到类似于以下示例的输出:
$ nc -zv example.123456789.us-east-1.redshift.amazonaws.com 5439
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif en0
src xx.xxx.xxx.xx port 53396
dst xx.xxx.xxx.xxx port 5439
rank info not available
TCP aux info available
Connection to example.123456789.us-east-1.redshift.amazonaws.com port 5439 [tcp/*] succeeded!
相关信息
授予对集群的访问权限
管理 VPC 中的集群
使用 VPC 对等连接
使用路由表