通过 AWS PrivateLink 向 ClickPipes 暴露私有 RDS 的配置
此方法使用 AWS Endpoint Service,主要适用于跨区域访问。如果您需要同一区域访问,
则建议改为创建 VPC 资源。
创建 Private Link
-
找到您的 VPC 并创建 NLB
- 进入目标 VPC,并创建一个 Network Load Balancer (NLB) 。请注意,NLB 应为内部 (私有) 类型,而不是面向互联网 (公有) 类型。
-
配置目标组
- 目标组应指向 RDS 实例的端点 IP 和端口 (PostgreSQL 通常为 5432,MySQL 通常为 3306) 。
如果您希望自动使用新的 RDS 端点 IP 更新目标组,可以使用 AWS Lambda 函数或其他自动化工具。
可用于此目的的 Terraform 模块之一是这个。
- 重要:在 DB Cluster/Aurora 场景中,请确保使用的 RDS 实例端点只能是写入端点,而不是通用端点。
- 请确保使用 TCP 协议,以避免由 NLB 终止 TLS。
-
设置监听端口
- 负载均衡器的监听端口必须与目标组使用的端口一致 (PostgreSQL 通常为 5432,MySQL 通常为 3306) 。
-
创建 VPC Endpoint Service
- 在 VPC 中,创建一个指向 NLB 的端点服务。
- 启用对来自特定账户的连接请求的接受。
-
授权 ClickPipes 使用 Endpoint Service
- 向 ClickPipes 账户授予请求此端点服务的权限。
- 添加以下主体 ID 以配置允许的主体:
- 添加以下主体 ID 以配置允许的主体:
- 向 ClickPipes 账户授予请求此端点服务的权限。
-
在 NLB 上禁用 “Enforce Security Group Inbound Rules on Private Link Traffic” (如果 NLB 关联了安全组 (Security Group) )
- 进入 NLB 的设置页面;如果 NLB 关联了安全组 (Security Group) ,请禁用 “Enforce Security Group Inbound Rules on Private Link Traffic” 设置。
- 如果使用 Terraform,请将 NLB 的
enforce_security_group_inbound_rules_on_private_link_traffic属性设置为off - 此设置是必需的,否则将无法允许来自 ClickPipes VPC 到 NLB 的流量。
-
可选:如果您的数据库区域与 ClickPipes 区域不同,请启用跨区域支持
- 在 VPC 控制台的
Endpoint Services下,选择您的端点服务。 - 点击
Actions按钮,然后选择Modify supported Regions。 - 添加您希望允许访问该端点服务的区域。ClickPipes 区域列表请参见此处。
- 在 VPC 控制台的
-
MySQL 推荐设置
- 如果您使用的是 MySQL,建议在源数据库中将
skip_name_resolve=1设置为参数。 由于 NLB 会反复执行健康检查,MySQL 可能会阻止来自 NLB 的主机。设置此参数可以完全 避免 DNS 主机名查找,因此不会阻止 NLB 主机。如果使用 RDS,则需要重启 实例。
- 如果您使用的是 MySQL,建议在源数据库中将
发起连接
Ready 后,您就可以按照下一节创建 ClickPipe。