文档

基于计算巢私网互联实现多租服务跨地域访问

更新时间:

计算巢私网互联支持跨地域访问能力,可以帮助服务商在跨地域的服务发布访问场景下降低软件复杂度和资源维护成本。本文档介绍在计算巢创建多租版全托管服务并启用跨地域访问能力的详细信息。

前提准备

  • 在创建服务前,您需要先准备实例并创建终端节点服务,服务实例可以是ECS、SLB、NLB、ALB模式的HTTP/HTTPS服务实例。

  • 在北京、杭州或张家口三个地域中的任意一个地域准备一个VPC和ECS资源,用于验证跨地域访问功能。

背景信息

支持的地域

目前服务接入发布支持全地域,用户访问侧支持以下地域。

针对用户创建服务实例跨地域选择时的地域不在下拉列表的情况,请联系我们支持新的地域。

  • 北京

  • 杭州

  • 张家口

  • 上海

  • 深圳

跨地域带宽

目前产品公测阶段,单用户服务访问限速1 Gbps,如需更高带宽请联系我们产品运营同学进行配额调整。

计费信息

跨地域互联是计算巢新增的互联能力,旨在帮助服务商和客户降低跨地域互联的门槛,1年公测期限速免费,单用户限速连接带宽限速1 Gbps。付费方默认是服务发布方,未来可配置选择为用户访问侧收费。

创建全托管服务

本实践在张家口地域准备了一个支持HTTP、HTTPS的API服务,并使用SLB对外暴露访问入口。

资源逻辑图如下:2024-01-29_14-33-32.png

在ECS资源上创建了一个简单的API服务,该API服务的请求示例如下:9.png

创建多租版全托管服务

  1. 登录计算巢控制台

  2. 在左侧导航栏中,选择我的服务。并在我的服务页面中,选择我创建的服务,然后单击创建新服务

  3. 创建新服务界面,配置服务信息。

    选择自定义创建服务的方式,并选择全托管服务2024-05-17_11-06-17.png

  4. 单击下一步:配置服务

  5. 在配置服务页面,配置服务的相关信息。

    此处只列举跨地域访问需要特别配置的参数,其他参数的详细信息,请参见创建全托管服务

    1. 租户类型处,选择多租户类型;在部署方式处,选择无部署物;在部署地域处,选择华北3(张家口)2024-01-29_16-00-52.png

    2. 网络设置区域的VPC私网访问处,配置终端节点服务配置自定义域名2024-01-29_16-10-26.png

  6. 单击创建服务

    在弹出的确认弹窗中单击确定2024-05-17_11-13-56.png

    当服务创建成功后,您可以单击去列表查看测试服务。测试服务的详细信息,请参见测试服务

  7. 我的服务页中,单击预发布,然后在弹窗中单击确定预发布2024-05-17_11-16-54.png

  8. 审核通过后,单击上线服务,完成最终上线。12.png

服务启用跨地域访问

  1. 单击服务实例名称,进入服务详情页。

  2. 在服务详情页中,查看VPC跨地域访问信息。

    此时VPC跨地域访问为未开通13.png

  3. 单击立即开启,在弹窗中设置后端服务类型后端服务端口信息,然后单击开启

    开启完成预计耗时1分钟,请您耐心等待。

    14.png

创建跨地域访问实例

  1. 在服务实例详情页中,单击用户服务部署链接。15.png

  2. 在创建服务实例页面,选择用户VPC所在的地域,并设置专有网络信息。

    说明
    • 推荐勾选使用推荐的自定义域名,计算巢将自动创建PrivateZone记录绑定解析。

    • 若用户VPC的地域不在地域列表中,请联系我们以支持新地域。

    16.png

  3. 单击确认订单

    创建过程预计耗时1分钟,请耐心等待,待状态变为已部署后,说明已经在您的VPC和服务商服务间打通了跨地域的访问链路,此时可以尝试跨地域访问服务进行连通性验证。17.png

  4. 服务实例创建完成后,进入实例详情页面,可以看到网络配置的域名:message.isv.example.xyz。18.png

跨地域服务访问验证

服务实例创建完成后,即可在上一步创建的用户VPC下的任意一台ECS上,使用配置的域名进行访问。

通过dig命令查看域名cname到了终端节点,直接使用域名可以访问其HTTP、HTTPS的地址,并正确返回跨地域服务接口内容。19.png

跨地域流量查询

从云监控控制台可以查询到跨地域流量的使用情况,也可以使用云监控的OpenAPI查询特定时间段的流量数据,帮助服务商和用户了解流量使用情况。

云监控控制台

  1. 登录云监控控制台

  2. 在左侧导航栏中,选择云产品监控,在云产品监控页面选择其他 > 计算巢私网互联(服务),进入监控列表页。20.png

  3. 在监控列表页选择地域,并找到相应私网互联服务ID。21.png

  4. 查看私网互联服务的带宽使用情况。22.png

OpenAPI

通过云监控OpenAPI,可以查询一段时间内的带宽用量。

下面以Java SDK为例,介绍查询的方式。使用命令引入云监控SDK。

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>cms20190101</artifactId>
  <version>7.0.52</version>
</dependency>

在查询云监控时,Namespace为acs_computenest。支持两种MetricName,详细信息如下。

MetricName

中文名称

聚合维度dimensions

描述

ServiceEndpointCrossRegionInBps

服务跨地域入带宽(接入点维度)

userId,instanceId,endpointId,privatelinkEndpointId

私网互联服务入方向的跨地域带宽,并根据不同的接入点进行区分。

ServiceEndpointCrossRegionOutBps

服务跨地域出带宽(接入点维度)

userId,instanceId,endpointId,privatelinkEndpointId

私网互联服务出方向的跨地域带宽,并根据不同的接入点进行区分。

通过Privatelink终端节点ID查询

您可以通过Privatelink终端节点ID查询带宽用量,Java的示例代码如下。

在Dimensions入参中,可以指定聚合维度,本文指定Privatelink终端节点ID。

package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {
    public static com.aliyun.cms20190101.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必填,您的 AccessKey ID
                .setAccessKeyId(accessKeyId)
                // 必填,您的 AccessKey Secret
                .setAccessKeySecret(accessKeySecret);
        // Endpoint 请参考 https://api.aliyun.com/product/Cms
        config.endpoint = "metrics.cn-hangzhou.aliyuncs.com";
        return new com.aliyun.cms20190101.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        // 请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取 AccessKey 的方式进行调用,仅供参考,建议使用更安全的 STS 方式/
        com.aliyun.cms20190101.Client client = Sample.createClient(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        com.aliyun.cms20190101.models.DescribeMetricListRequest describeMetricListRequest = new com.aliyun.cms20190101.models.DescribeMetricListRequest()
                .setMetricName("ServiceEndpointCrossRegionInBps")
                .setNamespace("acs_computenest")
                .setStartTime("1706086820000")
                .setEndTime("1706086920000")
                .setDimensions("{\"privatelinkEndpointId\":\"ep-bp1i97b17aeed0490978\"}");
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        // 复制代码运行请自行打印 API 的返回值
        client.describeMetricListWithOptions(describeMetricListRequest, runtime);      
    }
}

返回的结果示例如下:

{
  "RequestId": "117CA844-DFAF-545A-8B33-437EFC59E41F",
  "Period": "60",
  "Datapoints": "[{\"timestamp\":1706086860000,\"instanceId\":\"vis-23c6ca529f724473a935\",\"endpointId\":\"vep-8c5ae90f74d943ef886d\",\"privatelinkEndpointId\":\"ep-bp1i97b17aeed0490978\",\"userId\":\"1563457855438522\",\"Value\":10919.466},{\"timestamp\":1706086920000,\"instanceId\":\"vis-23c6ca529f724473a935\",\"endpointId\":\"vep-8c5ae90f74d943ef886d\",\"privatelinkEndpointId\":\"ep-bp1i97b17aeed0490978\",\"userId\":\"1563457855438522\",\"Value\":7532.266}]",
  "Code": "200",
  "Success": true
}

此处示例中,Value为10919.466,代表该时间段内终端节点ep-bp1i97b17aeed0490978请求私网互联服务vis-23c6ca529f724473a935的跨地域入方向的平均带宽为10919.466bit/s。经过换算,可以得到一分钟内,入方向流量为10919.466 * 60 / 8 = 81896(B)。

删除服务实例

  1. 登录计算巢控制台

  2. 在左侧导航栏中,选择服务实例

  3. 在我的服务实例管理页面中,单击我的服务实例并选择全托管服务。找到已创建的服务实例,然后单击操作列的删除2024-05-23_18-15-44.png

  4. 在弹出的页面中,单击确定删除

    在服务实例页面中,可以查看删除服务实例进度。

    待删除完成后,在服务访问验证的ECS上,使用dig / curl命令验证域名发现域名解析已经清理,已无法访问域名。25.png

其他实践场景

对启用了跨地域服务的计算巢托管服务,依然可以进行同地域PrivateLink连接,此时逻辑跟未启用跨地域服务创建服务实例的逻辑一致。

  • 本页导读 (0)