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带宽费用,不需要购买公网地址,价格不高,一般企业都可接受。
相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
23天前
|
安全 网络架构
MPLS线路构建稳定、高效网络的优选方案
【10月更文挑战第17天】MPLS线路构建稳定、高效网络的优选方案
45 5
|
1天前
|
安全 虚拟化
在数字化时代,网络项目的重要性日益凸显。本文从前期准备、方案内容和注意事项三个方面,详细解析了如何撰写一个优质高效的网络项目实施方案,帮助企业和用户实现更好的体验和竞争力
在数字化时代,网络项目的重要性日益凸显。本文从前期准备、方案内容和注意事项三个方面,详细解析了如何撰写一个优质高效的网络项目实施方案,帮助企业和用户实现更好的体验和竞争力。通过具体案例,展示了方案的制定和实施过程,强调了目标明确、技术先进、计划周密、风险可控和预算合理的重要性。
11 5
|
26天前
|
运维 监控 安全
连锁药店网络优化策略:一站式融合方案提升竞争力
在数字化浪潮下,线上药店通过技术创新和线上线下融合,正重塑购药体验,提供24小时服务和医保结算便利。面对激烈竞争,连锁药店和中小药店纷纷通过优化网络架构、提升服务质量和加强合规管理来增强竞争力,实现高效、安全的数字化转型。
|
2月前
|
域名解析 弹性计算 云计算
【深度好文】中小企业上云,为什么做好网络架构规划很重要!
本文通过一位小微软件公司技术负责人的实际体验为始,引发了对大量小微企业上云架构实践的研究。 发现中小企业上云时,往往聚焦于业务测试和服务尽快上线,很难有精力投入在云上技术架构的规划和设计中。所以,大家云上的架构五花八门,很多架构缺乏长远规划,极可能给业务未来发展埋下隐患。 基于此,我们沉淀了一套《应用上云经典托管架构》,强调了上云架构规划对于业务的重要性,并带领大家理解了方案中的网络规划和架构设计全过程。 作为从事企业上云IT部门,或者初创事业的个人开发者们,都可以参考和了解。
|
4月前
|
SQL 关系型数据库 MySQL
如何在Dataphin中构建Flink+Paimon流式湖仓方案
当前大数据处理工业界非常重要的一个大趋势是一体化,尤其是湖仓一体架构。与过去分散的数据仓库和数据湖不同,湖仓一体架构通过将数据存储和处理融为一体,不仅提升了数据访问速度和处理效率,还简化了数据管理流程,降低了资源成本。企业可以更轻松地实现数据治理和分析,从而快速决策。paimon是国内开源的,也是最年轻的成员。 本文主要演示如何在 Dataphin 产品中构建 Flink+Paimon 的流式湖仓方案。
7755 10
如何在Dataphin中构建Flink+Paimon流式湖仓方案
|
3月前
|
数据采集 量子技术 双11
【2023 年第十三届 MathorCup 高校数学建模挑战赛】C 题 电商物流网络包裹应急调运与结构优化问题 建模方案及代码实现
本文提供了2023年第十三届MathorCup高校数学建模挑战赛C题的详细建模方案及代码实现,针对电商物流网络中的包裹应急调运与结构优化问题,提出了包括时间序列分析在内的多种数学模型,并探讨了物流网络的鲁棒性。
64 2
【2023 年第十三届 MathorCup 高校数学建模挑战赛】C 题 电商物流网络包裹应急调运与结构优化问题 建模方案及代码实现
|
3月前
|
JSON 数据管理 关系型数据库
【Dataphin V3.9】颠覆你的数据管理体验!API数据源接入与集成优化,如何让企业轻松驾驭海量异构数据,实现数据价值最大化?全面解析、实战案例、专业指导,带你解锁数据整合新技能!
【8月更文挑战第15天】随着大数据技术的发展,企业对数据处理的需求不断增长。Dataphin V3.9 版本提供更灵活的数据源接入和高效 API 集成能力,支持 MySQL、Oracle、Hive 等多种数据源,增强 RESTful 和 SOAP API 支持,简化外部数据服务集成。例如,可轻松从 RESTful API 获取销售数据并存储分析。此外,Dataphin V3.9 还提供数据同步工具和丰富的数据治理功能,确保数据质量和一致性,助力企业最大化数据价值。
168 1
|
3月前
|
负载均衡 网络协议 安全
解析网络流量管理方案:简化基于云的DNS负载均衡
解析网络流量管理方案:简化基于云的DNS负载均衡
94 1
|
3月前
|
存储 监控 安全
这届网络工程师:熬夜写出了最狠的IT基础建设规划方案
这届网络工程师:熬夜写出了最狠的IT基础建设规划方案
|
3月前
|
存储 运维 安全
多云网络部署存在挑战,F5分布式云应用简化方案解读
多云网络部署存在挑战,F5分布式云应用简化方案解读
49 0