本文介绍如何使用PostgreSQL的fdw插件,使RDS PostgreSQL实例支持访问外部开通公网的数据库。
背景信息
RDS PostgreSQL支持通过fdw功能访问外部其他类型数据库,如MySQL、SQL Server、PostgreSQL及Redis等,由于RDS PostgreSQL基于用户VPC的网络构建,如需访问公网上的数据库服务,还需配置公网NAT网关并绑定弹性公网IP(EIP)。
本文通过配置公网NAT网关并绑定弹性公网IP(EIP)的方式,为RDS PostgreSQL赋予访问公网的能力,同时,确保RDS PostgreSQL实例的网络安全(配置SNAT,RDS PostgreSQL可以访问互联网,但不通过NAT网关对互联网提供服务,外网无法通过NAT网关访问RDS PostgreSQL实例)。
NAT网关、SNAT相关信息,请参见使用公网NAT网关SNAT功能访问互联网。
前提条件
- 已具备开通公网的目标数据库,例如:开通公网IP的MySQL、SQL Server、PostgreSQL或Redis等。
- 已创建RDS PostgreSQL实例,操作步骤,请参见创建RDS PostgreSQL实例。
重要 RDS PostgreSQL访问开通公网的目标数据库需要使用插件如下,请确保创建的RDS PostgreSQL实例支持对应插件。RDS PostgreSQL实例各版本插件支持情况,请参见支持插件列表。
- MySQL:mysql_fdw
- SQL Server:tds_fdw
- PostgreSQL:postgres_fdw
- Redis:redis_fdw
- 开通公网的目标数据库及RDS PostgreSQL实例均已创建账号。
- 开通公网的目标数据库创建账号,请参见各引擎官方文档。
- RDS PostgreSQL创建账号,请参见创建账号。
- 开通公网的目标数据库已创建数据库并存在数据。
操作步骤
公网NAT网关配置
- 创建NAT网关。
- 为公网NAT网关绑定公网IP(EIP)。
- 创建SNAT条目。
开通公网的目标数据库配置
开通公网的目标数据库需要配置白名单,允许公网NAT网关绑定的EIP访问。
- MySQL:请参见Privileges Provided by MySQL
- PostgreSQL:请参见The pg_hba.conf File
- SQL Server:请参见Configure the Windows Firewall to Allow SQL Server Access
- Redis:利用防火墙限制IP访问指定端口,例如CentOS中安装iptables工具,使用如下命令:
iptables -A INPUT -s <公网NAT网关绑定的EIP> -p tcp --dport <Redis端口号> -j ACCEPT