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。

操作步骤

  1. 利用VPN打通RDS SQL Server所在VPC和云下机器的网络连接通道
    1. 创建VPN网关
    2. 创建SSL服务器
    3. 创建客户端证书
    4. 配置客户端
    5. 测试连接
  2. 在RDS SQL Server上创建Linked Server

利用VPN打通RDS SQL Server所在VPC和云下机器的网络连接通道

  1. 创建VPN网关。
    1. 登录VPC管理控制台
    2. 在左侧导航栏,选择VPN > VPN网关
    3. 在VPN网关页面,单击创建VPN网关
    4. 在购买页面,根据下表配置VPN网关,并完成支付。
      项目 说明
      实例名称 VPN网络的名称。
      说明
      • 2~128个字符长度。
      • 以大小写字母或中文开头。
      • 可包含数字、英文句号(.)、下划线(_)或连字符(-)。
      地域和可用区 选择VPN网关所在的地域。本操作中选择华东1(杭州)
      说明 请确保VPC的地域和VPN网关的地域相同。
      网关类型 VPN网关的类型。默认为普通型
      VPC 选择要连接的VPC。
      指定交换机 选择是否指定VPN网关所属的交换机。
      • :不指定VPN网关所属的交换机,VPN网关创建在VPC内的任意一个交换机下。
      • :指定VPN网关所属的交换机,VPN网关会创建在指定的交换机下。
      带宽规格 选择VPN网关的带宽规格。

      带宽规格是VPN网关所能使用的公网带宽,单位:Mbps。

      IPsec-VPN 选择是否开启IPsec-VPN功能。

      IPsec-VPN功能适用于站点到站点的连接,可以根据您的实际需要选择开启。

      SSL-VPN 选择是否开启SSL-VPN功能。

      本操作选择开启。

      SSL连接数 选择您需要同时连接的客户端最大规格。
      计费周期 选择购买时长。

      您可以选择是否自动续费:

      • 按月购买:自动续费周期为1个月。
      • 按年购买:自动续费周期为1年。
      VPN配置
      说明 正常情况下,创建VPN网关需要1~5分钟。
    创建完成后,VPN网关的状态会变成 正常,表示VPN网关已完成初始化,可以正常使用。 网关状态
  2. 创建SSL服务端。
    1. 登录VPC管理控制台
    2. 在左侧导航栏,选择VPN > SSL服务端
    3. 单击创建SSL服务端。根据下表配置SSL服务端,并单击确定
      项目 说明
      名称 输入SSL服务端的名称。
      说明
      • 2~128个字符长度。
      • 以大小写字母或中文开头。
      • 可包含数字、英文句号(.)、下划线(_)或连字符(-)。
      VPN网关 选择步骤1中创建的VPN。
      本端网段 CIDR地址块的形式输入要连接的网络。单击添加本端网段可以添加多个本端网段,本端网段可以是任何VPC或交换机的网段,也可以是本地网络的网段。
      客户端网段 CIDR地址块的形式输入客户端连接服务端时使用的IP地址。
      高级配置 开启高级配置下方的开关,使用默认高级配置。
      SSL服务端配置
  3. 创建客户端证书。
    1. 登录VPC管理控制台
    2. 在左侧导航栏,选择VPN > SSL客户端
    3. 创建SSL客户端证书对话框,输入客户端证书名称并选择步骤2中创建的SSL服务端,单击确定
      创建SSL客户端证书
    4. SSL客户端页面,找到已创建的客户端证书,单击下载下载生成的客户端证书。
      SSL客户端
  4. 配置客户端。
    1. 下载并安装OpenVPN客户端。
    2. 解压步骤3中下载的证书,并复制到OpenVPN安装目录的config文件夹中。
      解压证书
    3. 单击Connect发起连接。
      发起连接
  5. 测试连接。
    1. 在同个VPC中创建一台ECS实例
    2. 在OpenVPN客户端中通过ping命令测试该ECS实例的连通性。
      说明
      • 请确保该ECS实例的安全组规则允许客户端远程连接,授权对象为SSL服务端配置中指定的客户端网段,并指定要访问本地的数据库服务端口号。更多信息,请参见安全组配置案例
      • 若无法连接,可能是由于本地主机设置了防火墙,需要将防火墙设置为允许远端连接。
      添加安全组规则

在RDS SQL Server上创建Linked Server

  1. 下载并安装SQL Server Management Studio
  2. 通过SQL Server Management Studio(SSMS)执行如下命令。
    DECLARE
      @linked_server_name sysname = N'myTestLinkedServer',
      @data_source sysname = N'10.10.0.10,1433', --style: 10.1.10.1,1433
      @user_name sysname = N'ay15' ,
      @password nvarchar(128) = N'***',
      @source_user_name sysname = N'test',
      @source_password nvarchar(128) = N'***',
      @link_server_options xml
      = N'
            <rds_linked_server>
              <config option="data access">true</config>
              <config option="rpc">true</config>
              <config option="rpc out">true</config>
            </rds_linked_server>
      '
    
    EXEC sp_rds_add_linked_server_for_local
      @linked_server_name,
      @data_source,
      @user_name,
      @password,
      @source_user_name,
      @source_password,
      @link_server_options
    连接客户端

    参数说明

    参数 说明
    @linked_server_name Linked Server的名称。
    @data_source 自建SQL Server数据库的IP和端口号,格式为:<IP>,<端口>
    @user_name 自建SQL Server数据库的用户名。
    @password 自建SQL Server数据库用户名对应的密码。
    @source_user_name 当前RDS SQL Server数据库的用户名。
    @source_password 当前RDS SQL Server数据库用户名对应的密码。
    @link_server_options 连接服务器的其他可选项。
  3. 执行如下命令测试Linked Server:
    select * from [myTestLinkedServer].master.sys.servers
    测试Linked Server