通过公网访问实例中的服务

当您在 DSW 实例中部署了 Web 服务(如模型 API、 WebUI)并希望直接在浏览器访问免登录的分享给协作者测试,或需要从外网连接调用时,DSW 提供了自定义服务功能来配置公网访问的能力,使服务能暴露在互联网上。请注意:此功能主要用于开发测试阶段。

重要提醒

  • 会产生额外费用:配置公网访问需使用NAT网关弹性公网IP (EIP),这些是独立计费的云产品。

  • 支持两种类型实例:支持使用公共资源组实例(资源规格非ecs.ebm开头)以及灵骏智算实例,且每个实例最多可配置5个自定义服务

  • DSW 停止则服务中断:当 DSW 实例停止时,其内部服务(及公网访问能力)也将不可用。

  • 生产环境推荐 EAS:如需稳定、高可用、支持弹性伸缩的生产环境服务,请将模型部署至PAI-EAS

实现原理

为了让 DSW 实例内的服务(如运行在 9000 端口的 API)能从公网访问,需要以下资源协同工作:

  1. 弹性公网 IP (EIP):提供一个固定的公网 IP 地址 (121.40.**.**)。这是公网访问的入口。

  2. NAT 网关:位于您的 VPC 内,负责将公网请求 (EIP:端口) 映射到私网 DSW 实例 (私有IP:端口)。

  3. 安全组:相当于 DSW 实例的防火墙。您必须显式添加规则,允许公网流量访问您服务监听的特定端口(如 9000)。这是访问成功的关键一步。

核心流程公网用户 (浏览器/工具) -> EIP:端口 -> NAT网关 -> 交换机(vSwith) -> 安全组规则检查 -> DSW 实例私有IP:端口 -> 您的服务

计费说明

  • NAT 网关和 EIP 从创建起即开始计费

  • 即使 DSW 实例已停止,只要 NAT 网关和 EIP 未被删除,它们仍会持续产生费用

  • DSW 实例本身的费用按运行状态计算(后付费实例停止后不计费)。

如何配置公网访问

创建 DSW 实例时配置公网访问

  1. 创建DSW实例,配置如下关键网络参数。

    • 网络信息配置区域选择您的专有网络和安全组。

    • 找到自定义服务单击添加,输入服务实际监听的端口号(如 9000),勾选公网访问,然后选择您的NAT网关弹性公网IP

      image

  2. 为上述已选安全组配置监听端口的入方向规则。关键参数如下,具体操作,请参见添加安全组规则

    • 授权策略:允许

    • 协议类型:根据服务选择(如 TCP

    • 端口范围:填写您配置的监听端口(如 9000/9000

    • 授权对象0.0.0.0/0 (允许所有公网IP访问,测试用) 或按需限制 IP。生产环境建议严格限制来源 IP。

      image

为已有 DSW 实例配置公网访问

对于已有的DSW实例,修改公网访问配置可通过如下两种方式。

注意:如果需要添加或变更VPC、NAT网关等,还是需要通过变更配置再重启实例的方式完成。

image

在实例详情页配置

DSW实例列表页,单击实例名称进入详情页面,修改公网访问配置。

image

image

DSW实例内配置

DSW开发环境内,单击页面上方的配置可以修改自定义服务。

image

image

image

测试连通性

  1. DSWTerminal中执行如下命令,启动Python内置的HTTP服务。

    # 创建一个包含测试内容的 HTML 文件
    echo 'Hello, World!' > index.html
    
    # 启动 Python 内置 HTTP 服务(监听 9000 端口)
    python -m http.server 9000 --bind 0.0.0.0
  2. 在实例详情页查看访问配置获取访问地址。

    image

    以公网访问为例,复制公网访问地址121.40.**.**:9000并在浏览器中访问。当返回Hello, World!时表示服务访问配置成功。

生产环境应用建议

  • 仅用于开发测试:DSW 公网访问功能设计初衷是方便临时测试和协作调试

  • 通过 EAS 部署生产环境:对于正式发布的推理服务,请部署到 PAI-EAS。EAS 提供:

    • 高可用性和负载均衡。

    • 自动弹性伸缩应对流量波动。

    • 完善的监控告警、版本管理、灰度发布。

    • 更优化的公网访问集成与计费模式。详情参见将模型部署为在线服务

  • 节省成本

    • DSW 实例停止后:DSW 本身(后付费)停止计费但是,NAT 网关和 EIP 只要存在就会继续计费

    • 长期不使用公网访问:若确定不再需要,务必删除为 DSW 配置的 NAT 网关和 EIP 以停止相关费用。可在 VPC 控制台EIP 控制台操作。

常见问题

  1. 配置了公网访问,但浏览器访问/外网连接失败 (无法访问此网站/Connection refused/Timeout)?

    • 第一步:检查安全组规则! (最常见原因)

      • 确认安全组已添加 入方向 规则。

      • 规则 端口范围 是否包含您配置的端口(如 9000

      • 规则 授权对象 是否包含您的公网 IP 或 0.0.0.0/0

      • 规则 协议类型 (TCP/UDP) 是否正确

    • 第二步:确认服务在运行且监听正确端口

      • 在 DSW 实例的 Terminal 内,使用 netstat -tunlp | grep <端口号> (如 netstat -tunlp | grep 9000) 查看端口是否被监听。

      • 确保您的应用服务进程已启动并在监听配置的端口。

    • 第三步:检查 NAT 网关和 EIP 状态

    • 第四步:本地测试:在 DSW 实例内部,尝试用 curl http://localhost:<端口号>curl http://<实例私有IP>:<端口号> 看服务是否响应。

    • 第五步:使用网络诊断工具

      • 阿里云 VPC 提供网络智能服务NIS可辅助排查路径问题 (需开通)。

      • 在 DSW 实例内使用 telnet <EIP> <端口> 测试端口连通性(需先安装 telnet)。

  2. 停止 DSW 后,公网访问配置还会收费吗?

    • 会,DSW 实例停止后本身(后付费)不计费。但是,关联的 NAT 网关EIP 资源只要未被删除,会持续独立计费。务必手动删除它们以节省费用。

  3. 一个 EIP 能映射多个端口吗?

    • 可以。 同一个 DSW 实例配置的多个服务端口(最多5个),都通过同一个 EIP 和 NAT 网关进行映射访问。访问时使用 EIP:不同端口 即可。