跳至内容
警告

自2025年4月1日起, Equinix Metal已决定于June 20th, 2025关闭现货市场服务。请尽快将您活跃的现货市场实例转换为按需实例。

现货市场

Equinix Metal™ 现货市场允许用户以优惠价格竞标闲置服务器容量。作为交换,您授予Equinix Metal撤销任何实例的权利,且只需提前两分钟发出警告。如果您拥有可迁移的工作负载,现货市场是帮助您降低成本的绝佳工具。

现货市场如何运作?

现货市场是一个库存不断变化的市场。您可以通过定义各种因素来对库存进行竞价,例如您愿意为特定资源支付的最高价格、服务器的数量和类型、您是否希望在特定时间完成全部或部分订单等等。

例如,您可以预配五个实例,并设定您愿意支付的每个实例每小时的最高价格。如果您的价格等于或高于指定城市和方案的当前现货价格,系统就会为您创建这些实例。

这些实例具有易失性,这意味着如果有其他用户出价更高, Equinix Metal可以随时撤销这些实例。如果您的实例即将被撤销,它将收到至少两分钟的终止时间。

当前和历史市场定价

当前市场价格反映的是您在当前时间点部署单个实例所需指定的价格。如果现货市场价格是该类型服务器标准价格的 10 倍,则表示我们在该位置的现货市场实例容量已不足。

/market/spot/prices 端点将提供每个 Equinix Metal 地铁和套餐的当前价格。

curl -X GET -H 'X-Auth-Token: <API_TOKEN>' \
https://api.equinix.com/metal/v1/market/spot/prices

要查看特定地点和服务器的价格历史记录,/market/spot/prices/history?plan&metro 端点允许您查看过去 90 天的现货市场价格。

curl -X GET -H 'X-Auth-Token: <API_TOKEN>' \
https://api.equinix.com/metal/v1/market/spot/prices/history?plan&metro

竞价策略

虽然具体的出价策略完全取决于您自己,但大多数用户会根据自己的使用情况采用以下出价策略之一:

严格优化成本 - 牺牲可用性以获得最大折扣。这非常适合结束日期灵活的长期工作负载。

  • 用例:研究型任务
  • 建议出价:接近最低

成本/可用性平衡 - 价格略高于严格意义上的成本优化方案,但可以提高获得实例并长期保留实例的可能性。

  • 用例:可以处理一定量回收的批处理作业
  • 建议出价:高于最低出价 10-20%

按需竞价 - 当现货价格低于需求价格时,即可享受折扣;当现货价格高于需求价格时,立即切换至需求价格。

  • 用例:完全云原生应用程序,能够轻松移动工作负载
  • 建议出价:按需价格

优化连续性 - 出价要高,以确保可用性和连续性。

  • 用例:接受某些时期高于市场的价格,以换取正常运行时间的连续性
  • 建议出价:2 倍至 3 倍(按需价格)

创建现货市场请求

要发起现货市场请求,请向 /projects/{id}/spot-market-requests 端点发送 POST 请求。在请求正文中,定义您的请求详情。

curl -X POST \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/projects/{id}/spot-market-requests" \
-d '{
"devices_max": <integer>,
"devices_min": <integer>,
"max_bid_price": <float>,
"metro": "<metro_slug>",
"instance_parameters": {
"hostname": "<string>",
"plan": "<plan_slug>",
"operating_system": "<os_slug>"
}
}'

身体参数 -

  • devices_max (required) - The maximum number of devices to provision to fill this request.
  • devices_min (required) - The minimum number of devices to provision to fill this request.
  • max_bid_price (required) -
  • end_at (optional) - Set an expiration for the spot market request with date and UTC time of expiration in ISO8601 format.
  • instance_parameters (required) - Configuration for the requested devices. The instance parameters object must contain hostname, plan, operating_system, and metro.

instance_parameters 还可以包含用于通过 API 配置服务器的任何其他字段。这些字段的完整列表位于 /projects/{id}/spot-market-requests 端点的 API 参考文档中。

管理您的现货市场设备

要获取所有现货市场设备的列表,请向 /projects/{id}/devices 端点发送 GET 请求,并按设备类型进行筛选。

curl -X GET -H "X-Auth-Token: <API_TOKEN>" \
https://api.equinix.com/metal/v1/projects/{id}/devices?type=spot

现货市场设备可通过 API 进行更新,方法是向 /devices/{id} 端点发送 PUT 请求。请在请求正文中注明要更新的字段。所有字段均为可选,且均可独立更新。

curl -X PUT \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/devices/{id}" \
-d '{
"description": "<string>",
"hostname": "<string>",
"always_pxe": <boolean>,
"ipxe_script_url": "<string>",
"locked": <boolean>,
"spot_instance": <boolean>,
"tags": [
"<string>"
],
"userdata": "<string>"
}'

字段及其描述的完整列表可在API 参考中找到。

将现货市场服务器转换为按需服务器

如果您有需要保留的现货市场服务器,可以使用 API 将其转换为按需服务器。一旦转换为按需服务器,它将不会被终止,并且在剩余时间内将按按需价格计费。

注意

已标记为终止的服务器不符合转换条件。您必须在现货市场服务器被选中终止之前,将其转换为按需模式。

要进行转换,请向 /devices/{id} 端点发送 PUT 请求,请求正文包含服务器所在的地铁和 "spot_instance": false

curl -X PUT \
-H "Content-Type: application/json" \
-H "X-Auth-Token: <API_TOKEN>" \
"https://api.equinix.com/metal/v1/devices/{id}" \
-d '{
"spot_instance": false
}'

现货市场终止

当您的最高出价低于当前现货最高价格,或服务器需求增加且您的设备价格在所有现货市场实例中最低时,现货市场服务器将被终止。标记为终止的服务器有 120 秒的移除时间。

终止时间可在 API 或服务器的元数据中获取。

要确定服务器的终止时间,请向 /devices/{id} 端点发送 GET 请求。

curl -X GET -H 'X-Auth-Token: <API_TOKEN>' \
https://api.equinix.com/metal/v1/devices/{id}

字段 termination_time 包含实例终止时的 UTC 时间(ISO8601 格式)。如果响应为 null,则表示未设置终止时间。

您还可以从 /projects/{id}/devices 端点获取项目中所有设备及其信息的列表。

要查询服务器本身的终止时间,可以使用 cURL 查询其元数据。在服务器上运行:

curl -s https://metadata.platformequinix.com/metadata

响应将包含终止日期/时间,或者为 null

删除现货市场请求

要删除请求,请向 /spot-market-requests/{id} 端点发送 DELETE

curl -X DELETE -H 'X-Auth-Token: <API_TOKEN>' \
https://api.equinix.com/metal/v1//spot-market-requests/{id}

如果还想删除请求中配置的服务器,请发送 force_termination=true 作为查询参数。

curl -X DELETE -H 'X-Auth-Token: <API_TOKEN>' \
https://api.equinix.com/metal/v1/spot-market-requests/{id}?force_termination=true
此页面有帮助吗?