跳转至

使用 API 在 MVE 与 Microsoft Azure 之间创建 VXC

本文介绍使用 API 从 MVE 到 Microsoft Azure ExpressRoute 创建 VXC 的流程。配置分为两个步骤:首先使用 Azure 服务密钥查找 Azure 互连位置,然后可以在你的 MVE 上为特定 vNIC 创建 VXC。

注意

在连接到 Azure 之前,你需要在 Azure 控制台中设置 ExpressRoute 线路。设置完成后,你会收到包含连接详细信息的服务密钥。要将你的 MVE 连接到 Azure,先查询该服务密钥的详细信息,然后为 Azure 端口创建 VXC。

MVE 到 Azure 的部署包括以下任务:

  1. 在 Azure 控制台中设置 ExpressRoute 线路

    部署完成后,你会获得一个服务密钥。验证服务密钥时,系统会显示主用和备用端口,你可以选择用于连接的端口。你可以第二次使用该密钥,为未使用的端口创建另一条连接。

    有关详细信息,请参阅 Microsoft 帮助主题 Tutorial: Create and modify an ExpressRoute circuit

  2. 验证 Azure 服务密钥

    当订购 Azure 服务时,请使用该服务密钥并确保有一个可用于连接的空闲端口。

    API 响应包括关联端口和对等体的 ExpressRoute 详细信息。创建 VXC 需要 Azure 端口的详细信息。

  3. 创建并部署 VXC

    使用已验证的服务密钥和端口详细信息,从 MVE 创建到 Microsoft Azure 的 VXC。

    作为 VXC 配置的一部分,你可以选择 Peering 类型。Peering 类型可以是 private 或 Microsoft。

    定义 Peering 类型后,系统会在 Azure 侧和 Megaport 侧自动完成 Peering 配置并匹配对等体,从而部署一个已知可用的工作配置。部署完成后,你可以修改该配置。

开始之前,先获取有效的访问令牌。有关详细信息,请参阅 创建 API 密钥

验证服务密钥

使用 API 验证 Microsoft Azure 服务密钥。响应包括关联端口和对等体的 ExpressRoute 详细信息。创建 VXC 需要 Azure 端口的详细信息。

检查该服务密钥,确保有一个可用于连接的空闲端口。在 API 响应中,可用端口的值为 "vxc":null,具有已分配值的端口不可用。

有关各响应字段的详细信息,请参阅 Azure 服务密钥响应字段

验证服务密钥

  • 使用 GET Look Up Azure Service Key (查找 Azure 服务密钥) API 借助该服务密钥查询 Microsoft Azure 位置详细信息:

    GET {baseUrl}/v2/secure/azure/{service_key}

以下示例响应展示了一个具有可用端口的配对密钥(vxc = null)。

{
    "message": "查询成功",
    "terms": "本数据受可接受使用政策 https://www.megaport.com/legal/acceptable-use-policy 约束",
    "data": {
       "bandwidth": 50,
       "connectType": "AZURE",
       "managed": false,
       "megaports": [
           {
               "productId": 53013,
               "productUid": "83f95deb-a537-485e-80d9-c442c776ddc9",
               "name": "London Primary",
               "nServiceId": 119129,
               "description": "位于Equinix LD5的数据中心的Azure ExpressRoute",
               "companyId": 1475,
               "companyUid": "c40de5ed-4707-4471-a78c-69436de2c505",
               "companyName": "Azure ExpressRoute",
               "portSpeed": 10000,
               "locationId": 90,
               "state": null,
               "country": "United Kingdom",
               "port": 53013,
               "type": "primary",
               "vxc": null
           },
           {
               "productId": 53014,
               "productUid": "d84ad163-8e22-4150-8cb7-44f1aecf9e90",
               "name": "London Secondary",
               "nServiceId": 119130,
               "description": "位于Equinix LD5的数据中心的Azure ExpressRoute",
               "companyId": 1475,
               "companyUid": "c40de5ed-4707-4471-a78c-69436de2c505",
               "companyName": "Azure ExpressRoute",
               "portSpeed": 10000,
               "locationId": 90,
               "state": null,
               "country": "United Kingdom",
               "port": 53014,
               "type": "secondary",
               "vxc": null
           }
       ],
       "peers": [],
       "resource_type": "csp_connection",
       "service_key": "3f0f66b9-0c82-4d61-ae31-f5985c841a4a",
       "vlan": 19
   }
}

创建并部署一个VXC到指定的vNIC

通过服务密钥查询获得Azure ExpressRoute端口详情后,即可创建到Azure的VXC。

您需要在请求的Body中指定配置信息。第一个productUid用于识别MVE,而bEnd: productUid用于识别Azure接口。同时,您还需要在serviceKey字段中提供Azure ExpressRoute服务密钥。

提示

可使用v2/dropdowns/partner/megaports端点查询连接B端的Azure位置。

您可以为一个Azure接口创建多个连接,例如当您需要同时将私有和Microsoft对等体接入同一个接口时。

单一 Azure Peering VLAN

在本示例中,使用了单一 Azure Peering VLAN。您可以通过aEnd innerVlan与bEnd innerVlan均已指定来判断,且对于单一Azure Peering VLAN,两者值相同。

如果该值设置为0,系统会自动分配并设置一个有效的inner VLAN。

提示

要在下单前测试请求并查看价格详情,可使用相同Body配置,通过/v3/networkdesign/validate端点进行测试。

创建 VXC

  1. 使用POST Create VXC to Azure (v3)端点创建请求:

    POST {baseUrl}/v3/networkdesign/buy
    
  2. 在请求Body中填写MVE的productUid、VXC的名称、Azure端口的productUid,并将服务密钥innerVlan设置为501,vNicIndex设置为0(界面1)。

    注意

    vNIC 编号对应以下 MVE 接口:

    • vNIC 0 = 在 MVE 上的接口 1
    • vNIC 1 = 在 MVE 上的接口 2
    • vNIC 2 = 在 MVE 上的接口 3
    • vNIC 3 = 在 MVE 上的接口 4
    • vNIC 4 = 在 MVE 上的接口 5
[
  {
   "productUid": "{{ mveid }}",
    "associatedVxcs": [
      {
        "productName": "Link to Azure ",
        "partnerConfigs" : {
           "connectType": "AZURE",
           "serviceKey": "((azureServiceKey}}"
        },
        "rateLimit": 1000,
        "term": 12,
        "shutdown": false,
        "promoCode": "promox3mnthfree2",
        "aEnd": {
          "vNicIndex":0,
          "innerVlan": 501
        },
        "bEnd": {
               "productUid": "{{ azurePortUid }}",
          "innerVlan": 501
        }
      }
    ]
  }
]

发送请求后,当VXC下单成功,您将收到成功响应。

以下是一个示例响应:

{
    "message": "VXC [7f7c22f6-5cde-45d7-8603-f3546c714118] 已创建。",
    "terms": "本数据受可接受使用政策 https://www.megaport.com/legal/acceptable-use-policy 约束",
    "data": [
       {
           "createDate": 1709822378799,
           "vxcOrderId": 139947,
           "payerMegaPortId": 190079,
           "nonPayerMegaPortId": 53013,
           "payerMegaPortName": "MVE for VNIC config",
           "nonPayerMegaPortName": "London Primary",
           "payerCompanyId": 1153,
           "nonPayerCompanyId": 1475,
           "payerLocationId": 89,
           "nonPayerLocationId": 90,
           "salesId": null,
           "payerCompanyName": "Megaport Lab",
           "nonPayerCompanyName": "Azure ExpressRoute",
           "payerMegaPortNsId": 510708,
           "nonPayerMegaPortNsId": 119129,
           "payerVlanId": 0,
           "nonPayerVlanId": 0,
           "payerInnerVlanId": 501,
           "nonPayerInnerVlanId": 501,
           "payerApproverName": "name",
           "payerApproverId": 41315,
           "nonPayerApproverName": "name",
           "nonPayerApproverId": number,
           "payerApproval": number,
           "nonPayerApproval": number,
           "fixedTerm": true,
           "duration": 1,
           "rollover": true,
           "serviceName": "from MVE for VNIC config to London Primary",
           "payerStatus": "APPROVED",
           "nonPayerStatus": "APPROVED",
           "speed": 1000,
           "distanceBand": "METRO",
           "intercapPath": "",
           "awsId": null,
           "promoCode": null,
           "dealUid": null,
           "rateType": "MONTHLY",
           "vxcJTechnicalServiceId": 190104,
           "vxcJTechnicalServiceUid": "7f7c22f6-5cde-45d7-8603-f3546c714118",
           "provisionDate": 1709822378782,
           "orderType": "NEW",
           "monthlyDiscountAmount": null,
           "discountMonths": null,
           "amazonDirectConnectConfigDto": null,
           "amsixConnectConfigDto": null,
           "sdrcProvItem": null,
           "rate": null,
           "setup": null,
           "asn": null,
           "bgpPassword": null,
           "usageAlgorithm": "POST_PAID_HOURLY_SPEED_METRO_VXC",
           "costCentre": null,
           "azureServiceKey": "{{ azureServiceKey }}",
           "oracleVirtualCircuitId": null,
           "serviceKey": null,
           "vxc": {
               "serviceName": "Link to Azure ",
               "name": "Link to Azure ",
               "secondaryName": null,
               "technicalServiceId": 190104,
               "technicalServiceUid": "7f7c22f6-5cde-45d7-8603-f3546c714118",
               "requestedDate": 1709822378782,
               "configuredDate": null,
               "currentEstimatedDelivery": null,
               "companyName": "Megaport Lab",
               "companyId": 1153,
               "billingContactName": null,
               "billingContactId": null,
               "adminContactName": null,
               "adminContactId": null,
               "technicalContactName": null,
               "technicalContactId": null,
               "salesName": null,
               "salesId": null,
               "billableId": 181652,
               "billableUsageAlgorithm": null,
               "productType": "VXC",
               "provisioningStatus": "DEPLOYABLE",
               "failedReason": null,
               "inAdvanceBillingStatus": null,
               "provisioningItems": [],
               "tags": [],
               "vxcDistanceBand": "METRO",
               "intercapPath": "",
               "marketplaceVisibility": true,
               "vxcPermitted": true,
               "vxcAutoApproval": false,
               "createDate": 1709822378792,
               "terminationDate": null,
               "contractStartDate": null,
               "contractTermMonths": 1,
               "rateType": "MONTHLY",
               "trialAgreement": false,
               "payerCompanyId": null,
               "nonPayerCompanyId": null,
               "minimumSpeed": null,
               "maximumSpeed": null,
               "rateLimit": 1000,
               "errorMessage": null,
               "lagId": null,
               "aggregationId": null,
               "lagPrimary": null,
               "market": "UK",
               "accountManager": null,
               "promptUid": null,
               "components": [],
               "attributes": [],
               "aLocation": null,
               "bLocation": null,
               "aMetro": null,
               "aCountry": null,
               "aLocationId": null,
               "bLocationId": null,
               "bMetro": null,
               "bCountry": null,
               "attributeTags": {},
               "createdBy": "b0dedbd2-ecc7-4bad-a13b-6c34b4005115",
               "buyoutPort": null,
               "virtual": false,
               "locked": false,
               "adminLocked": false,
               "bgpShutdownDefault": false,
               "originDomain": null
           },
           "connectType": "AZURE",
           "payerConfig": {},
           "nonPayerConfig": {},
           "attributeTags": {},
           "serviceLicense": null,
           "originDomain": null,
           "fullyApproved": true
       }
   ]
}

多个 Microsoft 对等体 (Q-in-Q)

如果您不想使用单一Azure Peering VLAN,而是希望通过Q-in-Q在单个VXC上实现多个Microsoft对等体,只需指定aEnd innerVlan值。

在使用Q-in-Q时,Azure端在Azure中设置的对等VLAN ID不会显示在Megaport API或Portal中。它由客户在Azure ExpressRoute对等中配置,并在MVE实例配置上进行匹配。

如以下示例所示,aEnd innerVlan字段值100实际上为MVE上的外部vlan或s-tag。Q-in-Q模式下运行于innerVlan之内的内部VLAN(c-tag)对Megaport来说是透明的。

注意

Azure VXC是唯一允许您指定双标签VXC的云VXC类型。

以下为一个示例请求:

[
 {
"productUid": "02ec2091-46bb-4904-bd17-96c752ff826e",
 "associatedVxcs": [
   {
     "productName": "My New Azure VXC",
     "partnerConfigs" : {
        "connectType": "AZURE",
        "serviceKey": "{{ service_key }}"
     },
     "rateLimit": 1000,
     "term": 12,
     "shutdown": false,
     "aEnd": {
       "innerVlan": 100
     },
     "bEnd": {
       "productUid": "{{ azurepuid }}"
     }
   }
 ]
 }
]