使用 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 的部署包括以下任务:
-
在 Azure 控制台中设置 ExpressRoute 线路
部署完成后,你会获得一个服务密钥。验证服务密钥时,系统会显示主用和备用端口,你可以选择用于连接的端口。你可以第二次使用该密钥,为未使用的端口创建另一条连接。
有关详细信息,请参阅 Microsoft 帮助主题 Tutorial: Create and modify an ExpressRoute circuit。
-
验证 Azure 服务密钥
当订购 Azure 服务时,请使用该服务密钥并确保有一个可用于连接的空闲端口。
API 响应包括关联端口和对等体的 ExpressRoute 详细信息。创建 VXC 需要 Azure 端口的详细信息。
-
创建并部署 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
-
使用POST Create VXC to Azure (v3)端点创建请求:
POST {baseUrl}/v3/networkdesign/buy -
在请求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 }}"
}
}
]
}
]