Dataphin公共云多租户数据源上云网络方案

本文涉及的产品
智能数据建设与治理Dataphin,200数据处理单元
简介: 通过Dataphin公共云多租户的方式,可以实现零部署成本、零运维成本构建智能大数据研发与治理平台。Dataphin部署在阿里云上,已有的数据源部署在本地机房,因此数据上云第一步,首先要打通网络。本文将介绍本地IDC机房的数据源网络打通的不同方案。

背景

通过Dataphin公共云多租户的方式,可以实现零部署成本、零运维成本构建智能大数据研发与治理平台。Dataphin部署在阿里云上,已有的数据源部署在本地机房,因此数据上云第一步,首先要打通网络。本文将介绍本地IDC机房的数据源网络打通的不同方案。

方案1 公网直连  + IP白名单 + 数据库加密方案

网络架构

image.png

操作步骤

在Dataphin侧添加需要访问的数据源的白名单

  • 入口:Dataphin->规划->项目管理->(已创建的项目)信息设置
  • 在安全设置 -> 沙箱白名单中添加需要访问的数据库的域名或IP地址

获取Dataphin公共云多租户的公网IP

下面提供多种方式获取Dataphin公共云多租户的公网IP的出网IP:

  1. 方案一:通过帮助文档中获取Datapin多租户的出网IP地址:https://help.aliyun.com/zh/dataphin/user-guide/appendix-dataphin-network-ip-address?spm=a2c4g.11186623.0.i3#title-soy-3el-8b7
  2. 方案二:通过数据源的配置页面获取公网出网IP。请注意,不同的地域的IP地址不同,可在产品页面中查看:
  • 入口:Dataphin->管理中心->数据源管理->新建数据源

在本地服务器上添加Dataphin公网IP的白名单

需要网工配合,在本地服务器上设置允许开放公网访问,将上一步得到的Dataphin公网IP添加至访问白名单。

Dataphin数据源测试连接

  • 入口:Dataphin->管理中心->数据源管理->添加数据源->类型选择 公网数据库
  • 在Dataphin中新建数据源,填写好配置信息后点击测试连接

数据库加密

为了安全考虑,可以开启数据库SSL加密,但是需要注意:一方面需要服务端开启加密需要维护SSL证书,有一定的成本和风险;另一方面数据库连接时连接串后面需要加上相应的加密参数,具体可参考:

https://blog.csdn.net/hrbhanyu/article/details/61196443

https://blog.csdn.net/ilovewqf/article/details/102519919

     注意:目前Dataphin只支持MySQL和达梦数据库的加密传输SSL协议,若数据源为其他数据库类型且有安全性的要求,目前暂不支持加密传输SSL协议链接。

     创建好数据源后可以使用Dataphin数据集成功能测试下大表的同步速度和稳定性,不在这里细述。


方案2  阿里云ECS服务 + 混合云 + 反向代理方案

网络架构

image.png

操作步骤

开通ECS和VPC

      购买开通ECS,选择ecs.c5.xlarge(计算型 4C8G +40GB  高效云盘)的ECS,建议先选择按量付费的模式,确定连通后再转为包年包月。

       VPC创建请参考:https://help.aliyun.com/document_detail/65398.html

建立VPN连接

建立VPC到本地数据中心的连接

使用IPsec-VPN建立VPC到本地数据中心的VPN连接,从而实现本地数据中心与VPC的互通。

image.png 注意使用IPsec-VPN功能建立VPC到本地数据中心的VPN连接,确保满足以下条件:

  • 检查本地数据中心的网关设备。阿里云VPN网关支持标准的IKEv1和IKEv2协议。因此,只要支持这两种协议的设备都可以和云上VPN网关互连,例如华为、华三、山石、深信服、Cisco ASA、Juniper、SonicWall、Nokia、IBM 和 Ixia等。
  • 本地数据中心的网关已经配置了静态公网IP。
  • 本地数据中心的网段和专有网络的网段不能重叠。

创建VPN网关

根据以下步骤完成操作,创建VPN网关,参考文档:

https://help.aliyun.com/zh/vpn/user-guide/create-and-manage-a-vpn-gateway?spm=a2c4g.11186623.0.i2

  1. 登录专有网络管理控制台
  2. 在左侧导航栏,单击VPN > VPN网关
  3. VPN网关页面,单击创建VPN网关
  4. 在购买页面,根据以下信息配置VPN网关,然后单击立即购买完成支付。
  • 实例名称:输入VPN网关的实例名称。
  • 地域:选择VPN网关的地域。

说明:确保VPC的地域和VPN网关的地域相同。

  • VPC: 选择要连接的VPC。
  • 带宽规格:选择一个带宽规格。带宽规格是VPN网关所具备的公网带宽。
  • IPsec-VPN: 选择开启IPsec-VPN功能。
  • SSL-VPN: 选择是否开启SSL-VPN功能。SSL-VPN功能允许您从任何位置的单台计算机连接到专有网络。
  • SSL连接数: 选择您需要同时连接的客户端最大规格。

说明:本选项只有在选择开启了SSL-VPN功能后才可配置。

  • 计费周期:选择购买时长。
  1. 返回VPN网关页面,查看创建的VPN网关。 刚创建好的VPN网关的状态是准备中,约两分钟左右会变成正常状态。正常状态表明VPN网关完成了初始化,可以正常使用了。

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

创建用户网关

根据以下步骤完成操作,创建用户网关。

  1. 在左侧导航栏,单击VPN > 用户网关
  2. 选择用户网关的地域。
  3. 用户网关页面,单击创建用户网关
  4. 创建用户网关页面,根据以下信息配置用户网关,然后单击确定
  • 名称:输入用户网关的名称。
  • IP地址:输入VPC要连接的本地数据中心网关设备的公网IP。
  • 描述:输入用户网关的描述信息。

创建IPsec连接

根据以下步骤完成操作,创建IPsec连接。

  1. 在左侧导航栏,单击VPN > IPsec连接。
  2. 选择创建IPsec连接的地域。
  3. 在IPsec连接页面,单击创建IPsec连接。
  4. 在创建IPsec连接页面,根据以下信息配置IPsec连接,然后单击确定
  • 名称:输入IPsec连接的名称。
  • VPN网关: 选择已创建的VPN网关。
  • 用户网关:选择要连接的用户网关。
  • 本端网段:输入已选VPN网关所属VPC的网段。
  • 对端网段:输入本地数据中心的网段。
  • 是否立即生效:选择是否立即协商。
  • 是:配置完成后立即进行协商。
  • 否:当有流量进入时进行协商。
  • 预共享密钥:输入共享密钥,该值必须与本地网关设备的预共享密钥一致。

其他选项使用默认配置。

在本地网关设备中加载VPN配置

根据以下步骤完成操作,在本地网关设备中加载VPN配置。

  1. 在左侧导航栏,单击VPN > IPsec连接
  2. 选择IPsec连接的地域。
  3. IPsec连接页面,找到目标IPsec连接,然后单击操作列下的下载对端配置
  4. 根据本地网关设备的配置要求,将下载的配置添加到本地网关设备中。详细信息,请参见本地网关配置

注意:下载配置中的RemotSubnet和LocalSubnet与创建IPsec连接时的本端网段和对端网段是相反的。因为从阿里云VPN网关的角度看,对端是用户IDC的网段,本端是VPC网段;而从本地网关设备的角度看,LocalSubnet就是指本地IDC的网段,RemotSubnet则是指阿里云VPC的网段。

配置VPN网关路由

根据以下步骤完成操作,配置VPN网关路由。

  1. 在左侧导航栏,单击VPN > VPN网关
  2. 选择VPN网关的地域。
  3. VPN网关页面,找到目标VPN网关,单击实例ID/名称列下的实例ID。
  4. 目的路由表页签,单击添加路由条目
  5. 添加路由条目页面,根据以下信息配置目的路由,然后单击确定
  • 目标网段:输入本地IDC侧的私网网段。
  • 下一跳:选择IPsec连接实例。
  • 发布到VPC:选择是否将新添加的路由发布到VPC路由表。本例选择是。
  • 权重:选择权重值。本例选择100。

连接测试

      登录到阿里云VPC内一台无公网IP的ECS实例,并通过ping命令ping本地数据中心内一台服务器的私网IP地址,验证通信是否正常。

      连接测试方法:

  1. 使用ping命令测试到本地数据中心服务器的网络质量:(xxx.xxx.xxx.xxx表示后端服务器ip)
[root@iZuf61cvux96rhus9ufhq0Z conf]# ping -c 100 xxx.xxx.xxx.xxx
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=1 ttl=61 time=7.52 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=2 ttl=61 time=7.38 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=3 ttl=61 time=7.10 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=4 ttl=61 time=7.55 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=5 ttl=61 time=7.11 ms
........
--- xxx.xxx.xxx.xxx ping statistics ---
100 packets transmitted, 100 received, 0% packet loss, time 99121ms
rtt min/avg/max/mdev = 6.999/7.454/8.415/0.267 ms

     若统计结果的packet loss为0%,rrt avg在10ms以内,证明网络情况良好。

  1. 使用telnet命令确定后端服务器接口情况:
[root@iZuf61cvux96rhus9ufhq0Z conf]# telnet xxx.xxx.xxx.xxx 1521
Trying xxx.xxx.xxx.xxx...
Connected to xxx.xxx.xxx.xxx.
Escape character is '^]'.

若出现以上接口,表示端口已经处于监听的状态。

反向代理 + keeplive配置

安装nginx作为反向代理

  1. mkdir -p /usr/local/src && cd  /usr/local/src
  2. wget https://nginx.org/download/nginx-1.16.1.tar.gz         //下载nginx最新稳定版
  3. tar zxvf nginx-1.16.1.tar.gz &&  cd /usr/local/src/nginx-1.16.1     //解压安装包
  4. yum install  lrzsz python-devel gcc gcc-c++ pcre  pcre-devel   patch   unzip   zlib  zlib-devel  openssl openssl-devel  git  jemalloc -y         //安装依赖包
  5. ./configure --with-http_ssl_module --with-http_stub_status_module --prefix=/usr/local/nginx  --with-http_v2_module  --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-pcre-jit --with-pcre --with-stream     //编译nginx,注意一定要安装stream用于四层代理
  6. make && make install         //安装nginx
  7. cd  /usr/local/nginx/conf/ && cp nginx.conf nginx.conf.bak         //备份nginx默认配置
  8. vim nginx.conf  替换为以下配置:
user  nobody;
worker_processes  8;
events {
    worker_connections  1024;
}
stream {
    server{
        listen 61521 so_keepalive=on;       ## 配置监听端口和socket连接的keepalive,否则无法支持长连接
        proxy_pass xxx.xxx.xxx.xxx :1521;    ##配置反向代理的数据库ip和端口,ip端口自行替换
        proxy_timeout 72h;           ## 配置代理的超时时间为72小时
    }
}


  1. v i /etc/init.d/nginx             //添加nginx开机自启
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15
# description:  NGINX is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="//usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
   # make required directories
   user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   if [ -z "`grep $user /etc/passwd`" ]; then
       useradd -M -s /bin/nologin $user
   fi
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $options; do
       if [ `echo $opt | grep '.*-temp-path'` ]; then
           value=`echo $opt | cut -d "=" -f 2`
           if [ ! -d "$value" ]; then
               # echo "creating" $value
               mkdir -p $value && chown -R $user $value
           fi
       fi
   done
}
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
restart() {
    configtest || return $?
    stop
    sleep 1
    start
}
reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}
force_reload() {
    restart
}
configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
    status $prog
}
rh_status_q() {
    rh_status >/dev/null 2>&1
}
case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac


  1. chmod a+x /etc/init.d/nginx && chkconfig --add /etc/init.d/nginx      //增加至开机自启
  2. service nginx status && service nginx restart       //启动nginx

测试反向代理是否生效:

使用netstat命令查看端口是否监听:

[root@iZuf61cvux96rhus9ufhq0Z conf]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:61521           0.0.0.0:*               LISTEN      1333/nginx: master
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1346/sshd

     以上61521端口已监听。

  1. 在阿里云ECS安全组内,添加Dataphin的ip段,获取方式:

方案一:通过帮助文档中获取Datapin多租户的出网IP地址:https://help.aliyun.com/zh/dataphin/user-guide/appendix-dataphin-network-ip-address?spm=a2c4g.11186623.0.i3#title-soy-3el-8b7

方案二:通过数据源的配置页面获取公网出网IP。请注意,不同的地域的IP地址不同,可在产品页面中查看:

  • 入口:Dataphin->管理中心->数据源管理->新建数据源

  1. 在任意非nginx代理服务器使用telnet命令至nginx代理服务器,确认接口情况:
lzy@liangzhongyideMacBook-Pro: telnet xxx.xxx.xxx.xxx 61521
Trying xxx.xxx.xxx.xxx...
Connected to xxx.xxx.xxx.xxx.
Escape character is '^]'.

      以上确认61521端口可以连通。

  1. Dataphin上创建数据源 > 类型选择ECS(VPC)自建数据库,配置连接信息并进行连通性测试,如果连通性测试成功则表示能正常连接,反向代理配置成功。
  2. 使用Dataphin同步数据进行实际业务测试。

 

其它说明

  1. 网络连接高质量要求:VPN 连接可能会受到 Internet 抖动、阻塞等公网质量问题而中断。若业务对网络连接质量要求很高时,可以考虑阿里云高速通道接入,但因为采用了专线的方式接入,成本比较高。对于一般的数据中台数据上云VPN方案已够,具体参考:https://help.aliyun.com/document_detail/44852.html
  2. 成本方面:反向代理方案只需ECS和VPN带宽费用,不需要购买公网地址,价格不高,一般企业都可接受。
相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
数据采集 监控 安全
快速部署:基于Kotlin的公司网络流量控制方案
本文介绍了使用Kotlin构建网络流量控制系统的方案,该系统包括数据采集、分析和自动提交到网站的功能。`TrafficMonitor`类负责监控网络流量,收集流量数据并进行分析,然后通过HTTP POST请求将数据安全提交到指定网站,以实现对公司网络流量的有效管理和安全优化。此方案有助于提升网络安全性和性能,支持数字化业务发展。
109 5
|
5月前
|
存储 网络协议 Java
深入理解Linux网络——内核与用户进程协作之同步阻塞方案(BIO)
在上一部分中讲述了网络包是如何从网卡送到协议栈的(详见深入理解Linux网络——内核是如何接收到网络包的),接下来内核还有一项重要的工作,就是在协议栈接收处理完输入包后要通知到用户进程,如何用户进程接收到并处理这些数据。
|
11天前
|
安全 测试技术 网络架构
【专栏】编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。
【4月更文挑战第28天】本文介绍了编写网络设备割接方案的七个步骤,包括明确割接目标、收集信息、制定计划、设计流程、风险评估、准备测试环境和编写文档。通过实际案例分析,展示了如何成功完成割接,确保业务连续性和稳定性。遵循这些步骤,可提高割接成功率,为公司的网络性能和安全提供保障。
|
11天前
|
安全 虚拟化
【专栏】在数字化时代,成功实施网络项目至关重要,如何写一个优质高效的网络项目实施方案?这篇文章值得收藏!
【4月更文挑战第28天】在数字化时代,成功实施网络项目至关重要。本文从前期准备(明确目标、了解背景、组建团队)、方案内容(项目概述、技术方案、实施计划、风险评估、预算、验收标准)和注意事项(简洁明了、数据准确性、灵活性、沟通协调)三个方面解析如何撰写优质高效的网络项目实施方案。通过具体案例展示实施步骤,强调方案应具备的特点和要素,以确保项目顺利进行并达成目标。
|
3月前
|
人工智能 安全 网络安全
方案分享:F5怎么样应对混合云网络安全?
方案分享:F5怎么样应对混合云网络安全?
24 1
|
5月前
|
安全 算法 网络安全
180进10!Dataphin隐私计算再获网络安全大奖
180进10!Dataphin隐私计算再获网络安全大奖
|
5月前
|
存储 网络协议 NoSQL
深入理解Linux网络——内核与用户进程协作之多路复用方案(epoll)
在上一部分的阻塞模式中(详见深入理解Linux内核网络——内核与用户进程协作之同步阻塞方案(BIO)),用户进程为了等待一个socket就得被阻塞掉,如果想要同时为多个用户提供服务要么就得创建对应数量的进程处理,要么就使用非阻塞的方式。进程不说创建,单论上下文切换就需要很大的耗时,而如果非阻塞的模式,就得轮询遍历,会导致CPU空转,并且每次轮询都需要进行一次系统调用,所以Linux提供了多路复用的机制来实现一个进程同时高效地处理多个连接。
|
5月前
|
存储 分布式计算 关系型数据库
Dataphin 提供公共云在线服务和线下独立部署(授权/订阅)两种服务模式。
Dataphin 提供公共云在线服务和线下独立部署(授权/订阅)两种服务模式。
147 2
|
6月前
|
存储 数据采集 供应链
带你读《构建企业级好数据(Dataphin智能数据建设与治理白皮书)》——卷首语
带你读《构建企业级好数据(Dataphin智能数据建设与治理白皮书)》——卷首语
228 0
|
6月前
|
存储 安全
带你读《构建企业级好数据(Dataphin智能数据建设与治理白皮书)》——一、数据建设与治理的现状与诉求
带你读《构建企业级好数据(Dataphin智能数据建设与治理白皮书)》——一、数据建设与治理的现状与诉求