使用 VPC 可达性分析器排查与 Amazon RDS Custom 数据库的网络连接问题 数据库博

通过 VPC Reachability Analyzer 解决 Amazon RDS Custom 数据库的网络连接问题

重点要点

使用 Amazon RDS Custom 数据库时,确保 VPC 和子网配置正确。通过 Reachability Analyzer 可以快速排查网络连接问题。了解必需的 VPC 端点,以便数据库实例正常工作。通过实例间的通信分析,确保多可用区 (MultiAZ) 部署的有效性。

在本文中,我们将探讨如何通过 Amazon VPC 的 Reachability Analyzer 工具,排查网络连接至 Amazon RDS Custom 数据库的问题。确保 VPC 和子网设置的兼容性对于数据库实例的成功创建至关重要。

解决方案概述

Reachability Analyzer 是 Amazon VPC 的一项功能,能够帮助您检查 AWS 中源和目的地资源之间的网络可达性。当目的地可达时,Reachability Analyzer 会生成源与目的地之间的虚拟网络路径的逐跳详情;而当目的地不可达时,工具则能识别阻塞或缺失的配置。

以下是排查 RDS Custom DB 实例连接问题的一般步骤:

确定与 RDS Custom 数据库端点关联的子网和 VPC 安全组。为步骤 1 中的子网组中的所有子网创建 EC2 实例。检查目标 AWS 服务的 IP 地址。使用 Reachability Analyzer 创建源资源例如,创建的 EC2 实例与目的地资源例如,端点服务的 IP 地址之间的网络路径。运行网络路径分析,并检查结果以理解或排查网络可达性。

您需要确保以下 VPC 端点使您的 DB 实例能与依赖的 AWS 服务通信:

端点名称comamazonawsregionec2messagescomamazonawsregioneventscomamazonawsregionlogscomamazonawsregionmonitoringcomamazonawsregions3comamazonawsregionsecretsmanagercomamazonawsregionssmcomamazonawsregionssmmessages

对于 SQL Server 的 RDS Custom 实例,还需与以下两个 AWS 服务通信:

端点名称comamazonawsregionsqscomamazonawsregionec2

在本文中,我们演示了手动检查其中一个端点的连接性,但您也可以对其他端点重复此步骤。文末提供的脚本可以自动为其余端点执行这一操作。

云梯vp官方入口

前提条件

在本次操作中,我们将使用子网组来识别与您的 RDS Custom 数据库相关的子网,通过网络接口测试从子网到 VPC 端点的网络路径。请确保您拥有所需的 AWS Identity and Access Management (IAM) 权限,以使用 Reachability Analyzer。

找到与 RDS Custom 数据库关联的子网组

要找到您的子网组,请完成以下步骤:

登陆 Amazon RDS 控制台,导航到您的数据库。

在 Connectivity amp Security 选项卡中,找到子网组。

进入子网组详情页面,记下与子网组关联的子网 ID。

为与子网组相关的子网创建 EC2 实例

如果您已经具有一个现有的 EC2 实例及其子网和 VPC 安全组,用于您的 RDS Custom 数据库,可以跳过此步骤。要创建新的 EC2 实例,请遵循 启动文档。

在配置 AWS EC2 实例时,请确保使用所有与 RDS Custom 子网组关联的子网 ID 和您打算用于 RDS Custom 实例的 VPC 安全组。

检查目标 AWS 服务的 IP 地址

在 EC2 服务器中,使用以下命令查找 IP 地址:

bashnslookup ltserviceendpointgt

以下截图显示了我们的示例输出。

在 Reachability Analyzer 中指定源和目的地

Reachability Analyzer 允许您指定不同的 源和目的地资源,以便分析网络的可达性。要指定源和目的地,请完整以下步骤:

在 Amazon VPC 控制台中,选择导航窗格中的 Network Manager。在导航窗格中,选择 Reachability Analyzer。选择 Create and analyze path。在 Source type 中,选择 Instances,并输入您之前创建的实例 ID。

在 Destination type 中,选择 IP Address,并输入从上述步骤获取的 IP 地址。

提供其余详细信息后,选择 Create and analyze path。

多可用区主机通信分析仅 SQL Server

如果您在创建带有 MultiAZ 部署的 RDS Custom SQL Server DB 实例,需要参与复制的 DB 实例主机需要在端口 (1120) 上进行通信。可以使用 Reachability Analyzer 验证 MultiAZ 复制的可达性。为此,指定步骤 2 中创建的一个 “EC2 实例” 作为源,并指定另一个步骤 2 中创建的 “EC2 实例” 作为目标。协议应设置为 TCP,目的端口应设置为 1120。在 SubnetGroup 中创建的每个 ENI 之间重复此过程。

审查分析任务的结果

要在 Amazon VPC 控制台查看成功的网络连接,导航到 Reachability Analyzer,选择路径 ID 和正确的分析 ID。

以下截图显示了分析浏览器页面。

如果出现失败,Reachability Analyzer 会识别阻塞组件。您将详细可见连接失败的原因,从而快速排查和解决问题。以下截图显示了流量中的连接失败情况。

您还可以使用下面的脚本以自动化的方式运行此分析,该脚本支持 RDS Custom for Oracle 和 RDS Custom for SQL Server。您需要在为此脚本配置的 EC2 主机上安装并配置 AWS Command Line Interface (AWS CLI) v2。

使用 Bash 脚本部署解决方案

将以下脚本复制到新文本文件中。修改权限使用 chmod。按示例执行脚本。

bash/ltDIRECTORYLOCATIONOFFILEgt/ltFILENAMEgtsh ltENGINENAMEgt

示例:/home/ec2user/VPCAnalyzersh Oracle 选项:Oracle 或 SQLServer

代码

bash

!/bin/bash

showusage() {echo echo Script Usage 0 ENGINENAMEecho echo ENGINENAME Provide engine name either Oracle or SQLServerecho echo script execution failed argument(S) missingecho exit 1}

Send Mail

// 待续

以下图像展示了成功输出的示例:

以下图像展示了失败输出的示例:

使用 VPC 可达性分析器排查与 Amazon RDS Custom 数据库的网络连接问题 数据库博

使用 AWS CloudFormation 部署解决方案

您还可以通过完成以下步骤,使用 AWS CloudFormation 在您的账户中部署此解决方案。

下载 CloudFormation 模板,并使用 AWS 控制台 或 AWS CLI 部署资源。CFN 模板 的部署可能需要最多 15 分钟时间。验证堆栈部署的完成情况。

部署完成后,您应该会看到在 AWS 控制台中创建的 EC2 实例资源。

在 AWS EC2 实例配置过程中,脚本将在 EC2 用户数据中运行,您可以在 ‘HOME /logs’ 目录中查看执行日志。

bash示例:/home/ec2user/logs/VPCAnalysisforRDSCustom3194213log

清理资源

如果您不再需要此设置并希望避免未来费用,您可以删除创建的资源即 EC2 实例和网络分析。要删除 AWS CLI 脚本作为一部分启动的所有其他资源,请使用控制台或 AWS CLI 删除这些资源。如果您已部署堆栈,则可以使用 AWS CloudFormation 控制台 或 AWS CLI 删除您之前创建的 CloudFormation 堆栈,并移除此 RDS Custom 实例的保护覆盖。

结论

RDS Custom DB 实例的连接性依赖于多个网络资源,如 VPC 安全组、路由表和网关。在连接问题发生时,手动检查所有这些资源可能既困难又耗时。Reachability Analyzer 能帮助您:

理解 VPC 中源和目的地资源之间的网络可达性和网络路径排查因资源间网络配置错误导致的网络可达性问题,如 RDS Custom 数据库与 VPC 端点之间的配置错误

如果您对本文有任何问题或建议,请留下评论。

关于作者

Sharath Chandra Kampili 是 Amazon Web Services 的数据库专业解决方案架构师,专注于商业数据库引擎如 Oracle。他与 AWS 客户直接合作,提供数据库项目的指导和技术支持,帮助他们提升在 AWS 上使用解决方案的价值。

Ashutosh Bhardwaj 是 AWS 的 RDS DBS 管理商业引擎的数据库工程师,主要与 Amazon RDS Oracle 和 RDS Custom for Oracle 工作,致力于设计和开发新功能以解决客户问题。

给我们留言