当您通过MaxCompute访问位于外网或VPC网络中的目标服务时,默认情况下,MaxCompute与目标服务之间的网络不可达。您需要开通网络连接以便访问外网或VPC中的目标服务(例如指定IP或域名、RDS、HBase集群、Hadoop集群等)。本文为您介绍MaxCompute与目标服务间的网络结构及支持的网络开通方案。

背景信息

当您涉及在如下场景中访问位于外网或VPC网络中的目标服务时,需要申请开通MaxCompute和目标服务间的网络连接。
  • UDF:用户创建了自定义函数UDF,且需要调用UDF访问位于外网或VPC网络中的目标服务。
  • 外部表:用户创建了外部表,且需要基于外部表访问位于外网或VPC网络中的目标服务。
  • 湖仓一体:用户基于MaxCompute构建了湖仓一体能力,且需要访问位于VPC网络中的目标服务。
MaxCompute与目标服务间的网络结构及支持的网络开通方案如下。网络结构
MaxCompute访问目标服务有如下三种方案:
  • 服务映射方案
    根据目标服务所处网络类型分为如下两种:
    • 服务映射方案(外网)
      适用于通过UDF或外部表访问处于外网中的目标IP或域名的场景。您需要填写网络连接申请表单,如果目标IP或域名不存在安全限制,审核通过后即可访问目标IP或域名。
      说明 当待访问的外网IP或域名存在安全限制时,请联系外网对应责任人根据相应的安全限制进行处理,确保MaxCompute访问外网IP或域名不受限制。
    • 服务映射方案(VPC)

      适用于MaxCompute与VPC间的网络已连接,需要通过UDF或外部表访问处于VPC网络中的单个IP或域名的场景。您只需要将MaxCompute项目所属地域的IP网段添加至VPC的安全组,并将目标IP或域名所属VPC实例添加至MaxCompute项目,完成双向授权后,即可访问目标IP或域名。

  • 专有网络连接方案
    适用于通过外部表、UDF或基于湖仓一体架构访问处于VPC网络下的RDS、HBase集群、Hadoop集群场景。您需要通过VPC网络管理控制台进行授权以及配置安全组,在MaxCompute控制台创建MaxCompute与VPC网络之间的连接,配置RDS、HBase集群、Hadoop集群等目标服务安全组,以此来建立MaxCompute与目标服务间的网络通路。
    说明

    阿里云账号(主账号)或拥有tenant的Super_Administrator角色的RAM用户(子账号)可以在MaxCompute控制台创建MaxCompute与VPC网络之间的连接。

    tenant的Super_Administrator角色可以在MaxCompute控制台的用户管理页签授权。仅主账号或已经拥有tenant的Super_Administrator角色的子账号可以操作授权。详情请参见为用户授权管理角色

  • 直接连通方案
    适用于通过UDF或外部表访问阿里云OSS、OTS(Tablestore)服务的场景。OSS、OTS服务与MaxCompute连通无需申请开通专有网络。
    说明
    • 如果您创建了OSS或OTS外部表,可以通过OSS、OTS的内网域名访问。
    • 如果您调用UDF访问OSS、OTS,可以通过OSS、OTS的外网域名。您在访问之前,需要在MaxCompute添加外网访问OSS、OTS的IP白名单。详情请参见添加IP白名单。更多OSS域名信息,请参见访问域名和数据中心。更多OTS域名信息,请参见服务地址

前提条件

当您使用服务映射方案(外网)或专有网络连接方案申请开通MaxCompute与目标服务间的网络连接前,请确认已满足如下条件:
  • 已创建MaxCompute项目。

    如果已有MaxCompute项目,直接使用即可,不必再创建新项目。在湖仓一体场景中,建议设置MaxCompute项目的数据类型为Hive兼容类型。更多创建MaxCompute项目信息,请参见创建MaxCompute项目

  • 如果需要访问位于VPC网络中的目标服务,请提前获取VPC所有者账号。同时还需要获取访问MaxComoute项目的阿里云账号,以及目标服务环境或集群的管理员账号。

使用限制

  • 在湖仓一体场景中,MaxCompute项目必须由VPC实例所有者账号创建。
  • 通过MaxCompute访问位于VPC网络中的RDS、HBase集群、Hadoop集群时,MaxCompute项目必须与RDS、HBase集群、Hadoop集群所使用的VPC网络处于相同地域。

开通地域

MaxCompute仅支持在如下地域通过服务映射方案或专有网络连接方案开通网络连接。
方案类型 支持地域 支持连通的目标
服务映射方案(外网服务映射方案) 中国站所有地域 外网IP或域名
服务映射方案(VPC服务映射方案)
  • 华北2(北京)
  • 华东2(上海)
VPC IP或域名
专有网络连接方案
  • 华北2(北京)
  • 华东2(上海)
  • 华北3(张家口)
  • 华东1(杭州)
  • 华南1(深圳)
  • VPC IP或域名
  • RDS
  • HBase集群
  • Hadoop集群

服务映射方案(外网)

MaxCompute访问外网IP或域名需要按照如下步骤进行操作:
  1. 提交申请
    1. 打开MaxCompute网络连接创建申请表单,填写下表所列参数信息。服务映射申请表单
      参数名称 说明
      请选择您开通服务的区域 在下拉列表选择需要开通网络连接的地域。
      请选择您需要的网络连接方案类型 在下拉列表选择外网服务映射方案
      请填写申请配置外网的IP或域名、端口的白名单 您需要填写目标IP或域名及对应的端口。如果需要访问多个域名,请使用英文逗号(,)分隔。例如访问阿里云域名,需要提供的网络配置信息为www.aliyun.com:80;访问高德服务,需要提供的网络配置信息为restapi.amap.com:443,restapi.amap.com:80
      手机号 填写可以联系到您的手机号码,申请结果会以短消息形式通知您。
    2. 单击提交

      MaxCompute技术支持团队接收到提交的申请信息后,会进行审核并完成配置。当您收到已通过审核的短消息时,即可继续执行后续步骤。

      说明 如果短消息提示未通过审核,请重新填写并确认信息无误后再提交申请。
  2. 测试网络连通性

    登录MaxCompute客户端,配置odps.internet.access.list属性并执行调用UDF的SQL语句,访问目标IP或域名。命令格式如下。

    --设置网络连接申请表单中配置的外网IP或域名、端口。即下方SQL语句要访问的外网IP或域名。
    set odps.internet.access.list=<ip_address:port丨realm_name:port>; 
    --执行SQL语句调用UDF。
    select <UDF_name>("<http://ip_address丨realm_name>");
    • ip_address:port丨realm_name:port:必填。目标外网IP或域名、端口。
    • UDF_name:访问外网IP或域名的UDF。

      假设UDF代码示例如下。

      package com.aliyun.odps.test.udf;
      import com.aliyun.odps.udf.UDF;
      import java.io.BufferedReader;
      import java.io.IOException;
      import java.io.InputStreamReader;
      import java.net.URL;
      public class <UDF_name> extends UDF {
        public String evaluate(String urlStr) throws IOException {
          URL url = new URL(urlStr);
          StringBuilder sb = new StringBuilder();
          try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()))) {
            String line;
            while ((line = reader.readLine()) != null) {
              sb.append(line).append('\n');
            }
          }
          return sb.toString();
        }
      }
    基于UDF示例代码创建的内建函数名称为url_fetch,网络连接审核通过后,执行命令示例如下。
    set odps.internet.access.list=www.aliyun.com:80;
    select url_fetch("http://www.aliyun.com");

服务映射方案(VPC)

MaxCompute访问VPC网络中的服务需要按照如下步骤进行操作:
  1. 配置白名单
    1. 为目标VPC实例安全组配置MaxCompute IP网段。

      您需要在VPC实例的安全组中添加待开通网络连接地域对应的MaxCompute IP网段,允许MaxCompute网段的IP访问VPC网络中的服务,IP网段信息如下表所示。更多配置VPC安全组操作,请参见VPC安全组

      地域 MaxCompute IP网段
      华东2(上海) 100.104.49.64/26、100.104.212.192/26、100.104.244.0/26、100.104.94.0/26
      华北2(北京) 100.104.218.0/26、100.104.120.0/26、100.104.156.192/26、100.104.149.0/26、100.104.49.64/26、100.104.212.192/26、100.104.244.0/26、100.104.94.0/26
    2. 登录MaxCompute客户端,将目标VPC实例添加至MaxCompute白名单,允许VPC网络中的服务访问MaxCompute。命令格式如下。
      --将目标VPC实例添加至MaxCompute白名单。
      setproject odps.security.outbound.destination=<RegionID>_<VPC实例ID>[*];  
      • RegionID:必填。VPC网络所属的地域ID。获取方法,请参见获取RegionID及VPC ID
      • VPC实例ID:必填。VPC实例ID。您可以登录专有网络管理控制台,在实例ID/名称列获取目标VPC实例ID。
      • [*]:必填。通配符,表示将VPC网络下的所有IP和端口都加入MaxCompute白名单。[]不可省略。
      例如,需要连接的VPC实例ID为vpc-bp1e4p7feyvwt103j****,所在地域为华东2(上海),将VPC内的所有IP和端口都加入MaxCompute白名单,命令示例如下。
      setproject odps.security.outbound.destination=cn-shanghai_vpc-bp1e4p7feyvwt103j****[*];
  2. 测试网络连通性

    通过MaxCompute客户端设置如下属性并提交调用UDF的SQL语句,访问VPC网络中的目标IP。

    例如需要访问的VPC内的网络IP和端口为192.0.2.0:80,命令示例如下。

    --指定要访问的VPC ID。
    set odps.vpc.id=vpc-bp1e4p7feyvwt103j****; 
    --指定要访问的VPC网络IP和端口号。
    set odps.vpc.access.ips=192.0.2.0:80; 
    --调用UDF访问目标IP和端口号。     
    select url_fetch("http://192.0.2.0:80");   

专有网络连接方案

通过专有网络连接方案开通网络连接的操作步骤如下:

  1. 授权

    使用VPC实例所有者账号,在登录阿里云状态下单击授权,单击同意授权完成授权。

    授权权限包括允许MaxCompute在VPC安全组内创建并绑定弹性网卡ENI。授权后,MaxCompute会自动在VPC网络内创建弹性网卡ENI。

  2. 配置安全组

    在VPC实例下,创建独立安全组用于控制MaxCompute对VPC网络内的各种资源的访问权限。

    1. 登录专有网络管理控制台,单击目标VPC实例ID后,单击资源管理页签。VPC实例
    2. 资源管理页签的专有网络资源区域,将鼠标悬停至安全组数值上方后,单击添加,为MaxCompute创建独立安全组并记录安全组ID。

      新建安全组为普通安全组,需要选择与连通服务相同的VPC网络。更多创建安全组操作,请参见创建安全组

      • 添加安全组添加
      • 配置安全组

        您可以按照默认配置添加安全组。

        配置安全组
      说明
      • 安全组为普通安全组,不是企业安全组。普通安全组的出口是默认开启的。企业安全组的出口是默认关闭的,会导致访问不了VPC内的任何服务。
      • MaxCompute在后续的创建网络通路过程中会默认自动根据带宽需求创建2个ENI,不收取费用,由MaxCompute创建的ENI将位于这个安全组内。在HBase场景,如果用户的HBase无法对某个安全组开放网络权限,您可以将MaxCompute创建的ENI IP添加至白名单即可。由于ENI IP可能会发生变化,推荐您添加VPC实例对应交换机的IP网段至白名单。

        您可以在ECS管理控制台的左侧导航栏,单击弹性网卡,获取ENI IP。

  3. 创建网络连接
    1. 登录MaxCompute控制台
    2. 在MaxCompute控制台的网络资源页签,单击新增网络连接
    3. 新增网络链接对话框,按下表填写参数后单击确定
      参数名称 说明
      链接名称 自定义网络链接名称。格式如下:
      • 字母开头。
      • 只能包含字母、下划线(_)和数字。
      • 长度在1-63个字符。
      类型 网络连接类型。默认为直通链接(passthrough)
      说明 直通链接对应的即是专有网络连接方案。
      区域 MaxCompute支持的通过专有网络连接方案开通网络连接的地域。详情请参见开通地域
      vpcid VPC实例ID。
      获取方式如下:
      • 连接HBase、Hadoop集群时:您可以在对应控制台的网络连接信息处获取该信息。
        例如,当您连接阿里云HBase集群时,您可以登录HBase管理控制台,在集群列表页面单击目标集群名称后,在左侧导航栏单击数据库连接,即可在右侧连接信息处获取VPC ID。获取ID
      • 其他情况:登录专有网络管理控制台,在专有网络页面即可获取VPC ID。VPC实例
      vSwitchID VPC网络绑定的交换机ID。
      获取方式如下:
      • 连接HBase、Hadoop集群时:您可以在对应控制台的网络连接信息处获取该信息。

        例如,当您连接阿里云HBase集群时,您可以登录HBase管理控制台,在集群列表页面单击目标集群名称后,在左侧导航栏单击数据库连接,即可在右侧连接信息处获取交换机ID。

        交换机ID
      • 其他情况:登录专有网络管理控制台,在左侧导航栏单击交换机,即可在右侧通过VPC实例ID获取到交换机ID。交换机ID
      securityGroup 步骤2中记录的安全组ID。
  4. 配置目标服务的安全组。
    • 配置Hadoop集群安全组。
      为Hadoop集群的安全组配置如下信息,确保MaxCompute可以访问Hadoop集群。安全组配置内容如下:
      • 配置Hadoop集群所在安全组的入方向访问规则。
      • 授权对象为ENI所在的安全组,即步骤2中创建的安全组。
      • HiveMetaStore端口:9083。
      • HDFS NameNode端口:8020。
      • HDFS DataNode端口:50010。
      例如,当您连接在阿里云E-MapReduce上创建的Hadoop集群时,您需要配置的安全组规则如下图所示。详细配置操作,请参见添加安全组规则配置防火墙或安全组
    • 配置HBase集群安全组。

      将为MaxCompute创建的安全组或ENI IP加入HBase集群的安全组或IP白名单中。

      例如,当您连接阿里云HBase集群时,可以登录HBase管理控制台,在集群列表页面单击目标集群名称后,在左侧导航栏单击访问控制,即可在安全组白名单设置页签添加安全组或IP白名单。更多添加安全组或IP白名单操作,请参见设置白名单和安全组

      添加安全组
      说明 如果不允许添加安全组,您可以在白名单设置页签添加MaxCompute创建的ENI IP。当MaxCompute配置变更时,ENI IP可能会发生变化,推荐您添加交换机ID的IP网段添加至白名单。
    • 配置RDS安全组。

      将为MaxCompute创建的安全组或ENI IP加入RDS安全组或IP白名单中。

      例如,当您连接阿里云RDS时,可以登录RDS管理控制台,在实例列表页面单击目标实例名称后,在左侧导航栏单击数据安全性,即可在安全组白名单设置页签添加安全组或IP白名单。更多添加安全组或IP白名单操作,请参见设置安全组设置IP白名单

      设置安全组
      说明 当MaxCompute配置变更时,ENI IP可能会发生变化,推荐您添加交换机ID的IP网段添加至白名单。
  5. 测试网络连通性

    参照湖仓一体操作,测试网络连通性。详细操作请参见MaxCompute湖仓一体