使用场景

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并发连接数选择您需要同时连接的客户端最大规格。

SSL

  • 返回VPN网关页面,单击华东1地域,查看创建的VPN网关。

说明:VPN网关的创建一般需要1-5分钟。

刚创建好的VPN网关的状态是准备中,约两分钟左右会变成正常状态。正常状态就表明VPN网关完成了初始化,可以正常使用了。

gateway

创建SSL服务端

  • 在专有网络的左侧导航栏,单击VPN > SSL服务端

  • 单击创建SSL服务端。本操作中SSL服务端的配置如下:

配置项说明名称输入SSL服务端的名称。VPN网关选择上面创建的VPN网关。本端网段以CIDR地址块的形式输入要连接的网络。单击添加本端网段添加多个本端网段,本端网段可以是任何VPC或交换机的网段,也可以是本地网络的网段。客户端网段以CIDR地址块的形式输入客户端连接服务端时使用的IP地址。高级配置使用默认高级配置。

server

创建客户端证书

  • 在专有网络的左侧导航栏,单击VPN > SSL客户端

  • 单击创建SSL客户端证书

  • 创建客户端证书对话框,输入客户端证书名称并选择对应的SSL服务端,单击确定

  • SSL客户端页面,找到已创建的客户端证书,单击下载下载生成的客户端证书。

client

客户端配置

  • 下载并安装OpenVPN客户端。

  • 创建客户端证书中下载的证书解压后复制到OpenVPN安装目录中的config文件夹中。

config

  • 单击Connect发起连接。

connecting

连接测试

在客户端ping已连接的VPC内的一台ECS实例,测试连通性。

说明:确保测试的ECS实例的安全组规则允许客户端远程连接,授权对象为SSL服务端配置中指定的客户端网段。详情请参考安全组配置案例

sr

注意:若连接不通,可能是设置了本地机器防火墙,需要将防火墙设置为允许远端连接。

在RDS SQL Server上创建Linked Server

  • 在RDS SQL Server上创建Linked Server:
    1. USE master
    2. GO
    3. DECLARE
    4. @linked_server_name sysname = N'myTestLinkedServer',
    5. @data_source sysname = N'30.40.13.6,1433',
    6. @user_name sysname = N'TestDbo' ,
    7. @password nvarchar(128) = N'TestDbo@123'
    8. ;
    9. EXEC [dbo].[sp_rds_add_linked_server_ha]
    10. @linked_server_name,
    11. @data_source,
    12. @user_name,
    13. @password
    14. ;
    15. 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]

测试结果图