添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
失恋的煎鸡蛋  ·  在AWS ...·  6 天前    · 
才高八斗的冰棍  ·  为您的 RDS for ...·  6 天前    · 
老实的烈酒  ·  管理 Amazon RDS for ...·  5 天前    · 
高大的地瓜  ·  DEIF 混合动力电站·  1小时前    · 
正直的小蝌蚪  ·  DNS 与 Pdns OpenWrt ...·  1 周前    · 
没人理的砖头  ·  what is .java.bak ...·  3 月前    · 
RDS 代理故障排除 - Amazon Aurora

RDS 代理故障排除

下面,您可以找到一些常见 RDS 代理问题的故障排除思路,以及有关 RDS Proxy 的 CloudWatch Logs 的信息。

在 RDS Proxy 日志中,每个条目都以关联的代理终端节点的名称作为前缀。此名称可以是您为用户定义的端点指定的名称。或者,对于执行读/写请求的代理的默认端点,它可以是特殊名称 default 。有关代理终端节点的更多信息,请参阅 使用 Amazon RDS Proxy 终端节点

验证代理的连接

您可以使用以下命令验证连接中的所有组件(例如代理、数据库和计算实例)是否均可相互进行通信。

使用 describe-db-proxies 命令检查代理本身。此外,使用 describe-db-proxy-target-groups 命令检查关联的目标组。检查目标的详细信息是否与您打算与代理关联的 Aurora 集群 匹配。使用如下命令。

aws rds describe-db-proxies --db-proxy-name $DB_PROXY_NAME aws rds describe-db-proxy-target-groups --db-proxy-name $DB_PROXY_NAME

要确认代理可以连接到底层数据库,请使用 describe-db-proxy-targets 命令检查目标组中指定的目标。使用如下命令。

aws rds describe-db-proxy-targets --db-proxy-name $DB_PROXY_NAME

describe-db-proxy-targets 命令的输出包括一个 TargetHealth 字段。您可以检查 State 内部的字段 ReasonDescriptionTargetHealth,以检查代理是否可以与底层数据库实例进行通信。

StateAVAILABLE 表示代理可以连接到数据库实例。

StateUNAVAILABLE 表示存在临时或永久的连接问题。在这种情况下,请检查 ReasonDescription 字段。例如,如果 Reason 的值为 PENDING_PROXY_CAPACITY,请在代理完成其扩展操作后,重试连接。如果 Reason 的值为 UNREACHABLECONNECTION_FAILEDAUTH_FAILURE,请使用 Description 字段中的说明来帮助您诊断问题。

在更改为 StateREGISTERING 之前,AVAILABLE 字段的值可能在短时间内为 UNAVAILABLE

如果以下 Netcat 命令 (nc) 成功,您可以从登录的 EC2 实例或其他系统访问代理终端节点。如果您与代理和关联数据库不在同一 VPC 中,则该命令将报告失败。您可能未在同一 VPC 中就可以直接登录到数据库。但是,除非在同一 VPC 中,否则无法登录到代理。

nc -zx MySQL_proxy_endpoint 3306 nc -zx PostgreSQL_proxy_endpoint 5432

您可以使用以下命令来确保 EC2 实例具有所需属性。特别是,EC2 实例的 VPC 必须与代理连接到的 RDS 数据库实例Aurora 集群的 VPC 相同。

aws ec2 describe-instances --instance-ids your_ec2_instance_id
aws secretsmanager list-secrets aws secretsmanager get-secret-value --secret-id your_secret_id

确保 get-secret-value 显示的 SecretString 字段被编码为包含 usernamepassword 字段的 JSON 字符串。以下示例显示了 SecretString 字段的格式。

"ARN": "some_arn", "Name": "some_name", "VersionId": "some_version_id", "SecretString": '{"username":"some_username","password":"some_password"}', "VersionStages": [ "some_stage" ], "CreatedDate": some_timestamp

本节介绍使用 RDS 代理时的一些常见问题和潜在的解决方案。

运行 aws rds describe-db-proxy-targets CLI 命令后,如果 TargetHealth 描述显示 Proxy does not have any registered credentials,请验证以下内容:

ERROR 28000: This RDS proxy has no credentials for the role role_name. Check the credentials for this role and try again.

这个角色没有 Secrets Manager 密钥。

为此角色添加 Secrets Manager 密钥。有关更多信息,请参阅 设置 RDS 代理的 AWS Identity and Access Management(IAM)策略

ERROR 28P01: IAM authentication failed for user user_name. Check the IAM token for this user and try again.

该错误可能是由于以下原因引起的:

ERROR 28P01: The IAM authentication failed for the role role_name. Check the IAM token for this role and try again.

用于 IAM 身份验证的 IAM 令牌存在问题。

生成新的身份验证令牌并在新连接中使用它。