无法连接到 AWS Aurora 集群终端节点,但可以访问 Writier 实例

bsa*_*egh 5 mysql amazon-web-services amazon-aurora

我在 AWS 上设置了 MySql Aurora 集群。在过去的几周里,我的所有应用程序都指向一个实例端点,并且它运行良好。然而,昨天,我开始在插入/更新时收到错误,表明该实例处于只读模式并且无法更新。

显然,读取器/写入器端点可以更改,我真正应该做的是指向集群端点,它将适当地路由请求。我尝试直接指向该集群端点,但总是失败。该错误消息相当通用,告诉我检查我的用户名/密码,确保我没有被防火墙阻止,以及所有正常的默认解决方案。

我的集群位于 VPC 中,但分配给该集群的子网是公共的(它们通过 Internet 网关路由)。

就绪/编写器实例具有相同的安全组和 VPC 配置。我可以连接到 Reader 实例(只读),但不能连接到 Writer 实例。

知道我还可以寻找什么吗?大多数论坛说我需要检查我的路由表或安全组,但据我所知,它们都对所有流量开放(我意识到这是一个糟糕的配置,我只是想让它正常工作)。还有什么我应该检查的吗?

谢谢

更新 我可以 Telnet 到 Reader 实例,但不能 Telnet 到 Writer 实例。据我所知,它们位于同一个 VPC 中,并且都使用公共子网。

更新 2 我的 Lambda 函数与我的 RDS 位于同一 VPC 中,可以访问集群端点,所以我猜这只是一个外部问题。我认为可以通过在 VPC 中拥有一个公共子网来解决这个问题,但它似乎不适用于该端点。

big*_*g-K 1

仅仅拥有公共子网是不够的,您需要显式启用数据库实例的公共可访问性。公共可访问性是实例级别的设置,您需要在集群中的所有实例上将其打开。鉴于您的症状,我怀疑您是否在其中一个实例上启用了公共访问,而不是在其他一些实例上启用了公共访问。您可以使用 API 通过 CLI 进行检查describe-db-clusters并过滤或搜索PubliclyAccessible. 这是一个例子:

aws rds describe-db-instances --region us-west-2 --output json --query 'DBInstances[?Engine==`aurora`].{instance:DBInstanceIdentifier, cluster:DBClusterIdentifier, isPublic:PubliclyAccessible }'
[
    {
        "instance": "karthik1",
        "isPublic": true,
        "cluster": "karthik-cluster"
    },
    {
        "instance": "karthik2",
        "isPublic": false,
        "cluster": "karthik-cluster"
    }
]
Run Code Online (Sandbox Code Playgroud)

您可以使用 API 修改实例并启用对其的公共访问modify-db-instance

希望这可以帮助。