背景
部分客户场景下需要使用其他用户的自建MySQL或者CDB实例中的数据(其他数据源类型亦可参考),例如在WeData开发平台中需要通过集成任务导入其他租户的数据,或者数仓任务需要引入其他用户数据源时,在开发平台中无法直连目标数据源或者schema或者其他信息,本文提供一种方法可绕开网络限制,从而获取到目标数据信息
准备
a) 打通跨租户CDB实例与当前执行资源(CVM)所在VPC网络,可使用对等连接或云联网方案
参考:
云联网 https://cloud.tencent.com/document/product/877/30805
对等连接 https://cloud.tencent.com/document/product/553
b) 在当前账号下新建或使用一台已有CVM(最好与计算环境(执行计算任务的EMR或者CVM,这里指需要访问目标数据源的一个或多个CVM)位于相同VPC,否则需要保障网络互通)
安装网络端口映射工具并配置
a) 登录到准备好的CVM上,执行如下命令安装并启动端口映射工具
yum install -y socat
nohup /usr/bin/socat TCP4-LISTEN:${LOCAL_PORT},reuseaddr,fork TCP4:${DB_IP}:${DB_PORT} &
注:其中LOCAL_PORT为本地代理端口, DB_IP和DB_PORT是需要代理的源端DB信息
b) 配置开机启动
echo ‘/usr/bin/socat TCP4-LISTEN:11306,reuseaddr,fork TCP4:172.21.16.8:3306 &’ >> /etc/rc.d/rc.local
注:
1、 如果有多个数据源需要映射,则需要启动多个socat进程,并配置开机启动,否则主机重启后会导致数据源异常。
2、 重复执行前,要删除之前已添加的端口映射信息,请勿重复添加。
添加数据源
回到WeData平台,使用映射后的链接信息添加数据源,示例如下:
链接信息选择代理后的IP 端口