使用场景
RDS SQL Server 2012和2016双机高可用版开放了Linked Server功能,不仅可以在RDS之间建立Linked Server,在网络连通的前提下,也支持和云下自建SQL Server建立Linked Server。
本文将介绍如何利用VPN在RDS SQL Server上建立Linked Server连接到云下自建SQL Server。
注意:和云下自建数据库链接的前提是网络连通,若有问题请咨询相关团队协助解决。
前提条件
要求RDS SQL Server为以下版本:
- 2012 标准双机高可用版。
- 2016 标准双机高可用版。
- 2012 企业双机高可用版。
- 2016 企业双机高可用版。
RDS SQL Server实例状态为运行中。
在部署VPN网关前,需要做好网络规划:
本地移动设备和云上VPC内需要访问的私网IP地址段不能相同,否则无法通信。
客户端必须能访问Internet。
操作步骤
利用VPN打通RDS SQL Server所在VPC和云下机器的网络连接通道
创建VPN网关
登录VPC管理控制台。
在左侧导航栏,单击VPN > VPN网关。
在VPN网关页面,单击创建VPN网关。
在购买页面,配置VPN网关,完成支付。本操作中VPN网关的配置如下:
配置项说明地域
- 选择VPN网关的地域。本操作中选择华东1(杭州)。
- 确保VPC的地域和VPN网关的地域相同。专有网络 选择要连接的VPC。带宽规格选择一个带宽规格。带宽规格是VPN网关所具备的公网带宽。IPsec-VPN选择是否开启IPsec-VPN功能,IPsec-VPN功能适用于站点到站点的连接,可以根据您的实际需要选择开启。SSL-VPN选择是否开启SSL-VPN功能。本操作选择开启。SSL并发连接数选择您需要同时连接的客户端最大规格。
- 返回VPN网关页面,单击华东1地域,查看创建的VPN网关。
说明:VPN网关的创建一般需要1-5分钟。
刚创建好的VPN网关的状态是准备中,约两分钟左右会变成正常状态。正常状态就表明VPN网关完成了初始化,可以正常使用了。
创建SSL服务端
在专有网络的左侧导航栏,单击VPN > SSL服务端。
单击创建SSL服务端。本操作中SSL服务端的配置如下:
配置项说明名称输入SSL服务端的名称。VPN网关选择上面创建的VPN网关。本端网段以CIDR地址块的形式输入要连接的网络。单击添加本端网段添加多个本端网段,本端网段可以是任何VPC或交换机的网段,也可以是本地网络的网段。客户端网段以CIDR地址块的形式输入客户端连接服务端时使用的IP地址。高级配置使用默认高级配置。
创建客户端证书
在专有网络的左侧导航栏,单击VPN > SSL客户端。
单击创建SSL客户端证书。
在创建客户端证书对话框,输入客户端证书名称并选择对应的SSL服务端,单击确定。
在SSL客户端页面,找到已创建的客户端证书,单击下载下载生成的客户端证书。
客户端配置
下载并安装OpenVPN客户端。
将创建客户端证书中下载的证书解压后复制到OpenVPN安装目录中的
config
文件夹中。
- 单击Connect发起连接。
连接测试
在客户端ping已连接的VPC内的一台ECS实例,测试连通性。
说明:确保测试的ECS实例的安全组规则允许客户端远程连接,授权对象为SSL服务端配置中指定的客户端网段。详情请参考安全组配置案例。
注意:若连接不通,可能是设置了本地机器防火墙,需要将防火墙设置为允许远端连接。
在RDS SQL Server上创建Linked Server
- 在RDS SQL Server上创建Linked Server:
USE master
GO
DECLARE
@linked_server_name sysname = N'myTestLinkedServer',
@data_source sysname = N'30.40.13.6,1433',
@user_name sysname = N'TestDbo' ,
@password nvarchar(128) = N'TestDbo@123'
;
EXEC [dbo].[sp_rds_add_linked_server_ha]
@linked_server_name,
@data_source,
@user_name,
@password
;
GO
参数说明:
@linked_server_name:Linked Server的名称。
@data_source:用户线下SQL Server的IP和端口号,格式为:
IP,Port
。@user_name:用户线下SQL Server的登录用户名。
@password:用户线下SQL Server登录名对应的密码。
执行以下命令测试Linked Server:
SELECT * FROM [myTestLinkedServer].[ReportServer$MS3001].[sys].[tables]