SoftLayer的新帐户定义网络(ADN)功能可以完全控制专用网络中托管的服务器。 借助它,您可以将新的Bare Metal和虚拟服务器配置到您选择的IP地址范围内。 然后,您可以使用IP编号将服务器组织为逻辑组,以进行集群,任务分配,灾难恢复,服务本地化等。
但是,在使用ADN之前,必须先配置和配置某些必需的基础结构组件。 在本教程中,您将学习如何使用SoftLayer RESTful API为ADN设置必需的SoftLayer基础结构组件。 门户用户可以使用SoftLayer查看有关所需组件的详细信息以及定价细节。 SoftLayer API可以执行SoftLayer门户的大多数功能。 使用SoftLayer API,您可以在基础结构组件上进行配置以及执行管理操作。 这使您可以自动执行可重复的任务。
“基础架构的设置和配置是一个耗时的过程。...SoftLayer提供了统一的标准API库,可以通过各种方法和工具进行访问,并且对SoftLayer门户透明。 ”
与其他API访问方法相比,RESTful API具有各种优势。 例如,它们不依赖于编程语言,它们易于理解,需要最少的编码技能,并且可以使用CURL实用程序从任何Linux终端方便地执行它们。
要开始讨论,以下是我们将在本教程中使用的一些关键术语:
API用户是在SoftLayer客户门户帐户中专门创建的,用于调用API。 该用户有一个关联的API密钥 ,这是一个身份验证令牌,保留用于进行API调用。
REST API URLREST API使用URL通过HTTPS进行API调用。 URL代表SoftLayer对象层次结构,这很容易理解。
这是网址的格式:
https://[username]:[apiKey]@api.[service.]softlayer.com/rest/v3/[serviceName]/[initializationParameter].[returnDatatype]这是下订单的示例URL:
https://[userid]:[apikey]@api.softlayer.com/rest/v3/SoftLayer_Product_Order/placeOrder JSON对象JSON (JavaScript对象表示法)是一种易于理解的简单对象表示法,其结构用于存储键值对。 SoftLayer API接受并以JSON格式的文本返回API调用详细信息。 下订单所需的数据(例如服务类型,数量和相关属性)以JSON格式存储并保存在文本文件中。 然后,CURL实用程序将使用此文件进行API调用。
卷曲CURL是一个命令行实用程序,用于通过向SoftLayer发送HTTPS请求来进行API调用。
这是一个用法示例:
curl -H "Content-Type:application/json" --data @Order-data.json https://<userid>:<apikey>@api.softlayer.com/rest/v3/SoftLayer_Product_Order/placeOrder在上面的示例中, @Order-data.json指定一个文本文件,其中包含JSON格式的订单详细信息。
图1中的图说明了REST调用的流程。
Shell脚本包含可自动实例化REST调用的CURL命令。 图2说明了如何执行脚本。
本教程中显示的shell脚本和所需的JSON数据文件可在以下GitHub存储库中找到:
https://github.com/yash-nigam/ADN-REPO
可以按以下顺序使用这些脚本。
创建网络。 创建子网。 创建虚拟来宾(vm – Web)。 创建虚拟来宾(vm – App)。 创建Bare Metal(安装数据库)。 为虚拟访客创建Evault存储。 创建Evault裸机。 创建对象存储帐户。 订单块存储。 将块存储授权给虚拟来宾或Bare Metal。 订购NetScaler VPX。为了方便用户,文件已组织为以下层次结构:
/ ADN / src / Script :此文件夹包含所有Shell脚本文件。 / ADN / src / Json :此文件夹包含所有JSON数据文件。 / ADN / src / Output:此文件夹将包含执行Shell脚本的输出。从上面提到的Git存储库下载ADN文件夹,然后在本地计算机上执行Shell脚本。
在执行脚本之前,请确保检查并安装CURL:
以root用户登录系统并运行以下命令。 curl –V 如果安装了CURL,则应显示以下输出: curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2 如果未安装CURL,请使用以下命令进行安装: yum install curl每个SoftLayer对象都与一个特定服务相关。 各种方法与服务相关联,服务在被调用时会对该服务的对象执行特定的操作。 SoftLayer中的每个对象由唯一的ID标识,该ID需要包含在REST调用中。 下表列出了与每个REST调用关联的服务和方法:
SoftLayer对象 服务使用 使用方法 建立网络 SoftLayer_Network createObject 创建子网 SoftLayer_Network / <NetworkID> createSubnet / createObject 创建一个虚拟访客 SoftLayer_Virtual_Guest createObject 创建裸机服务器 SoftLayer_Product_Order 下订单 创建Evault存储 SoftLayer_Product_Order 下订单 创建对象存储帐户 SoftLayer_Product_Order 下订单 创建块存储 SoftLayer_Product_Order 下订单 授权块存储 SoftLayer_Network_Storage _Iscsi / <BlockStorageID / allowAccessFromVirtualGuest 订购NetScaler SoftLayer_Product_Order 下订单除了服务,对象ID和方法详细信息之外,还需要将其他某些详细信息与REST调用一起传递以提供对象。 包和价格ID用于计费,对于使用placeOrder方法的所有REST调用都是必需的。
如何查找包裹和价格ID
使用以下REST调用查找程序包ID:
curl https://<userid>:<apikey>@api.softlayer.com/rest/v3/SoftLayer_Product_Package/getAllObjects
使用以下REST调用查找特定包装ID的价格ID:
curl https://<userid>:<apikey>@api.softlayer.com/rest/v3/SoftLayer_Product_Package/222/getItemPrices
您还可以使用Firefox浏览器中的Firebug扩展程序从SoftLayer门户显示包装和价格ID:
在SoftLayer产品页面上,转到订购设备,然后选择要订购的设备 。 在“订单”窗口中启用Firebug扩展。 在Firebug窗口中,转到NET选项卡。 选择“ 持久”和“ 全部”按钮。 在“订单”窗口中,进入“ 添加到订单”页面。 POST条目将出现在Firebug窗口中,其中包含包裹和价格ID的详细信息。要成功创建SoftLayer对象,您需要使用正确的参数执行正确的CURL命令。 以下示例显示了可与CURL命令一起使用的参数,例如标题,包含JSON数据的文件名,REST API URL以及描述每个对象的唯一属性的键值对的描述。 CURL命令中提到的文件名@Network.json包含创建此对象所需的JSON数据。
创建网络是设置ADN的第一步。 所有SoftLayer组件都需要连接到网络才能相互通信。
休息电话:
curl -H "Content-Type: application/json" --data @Network.json https://<userid>:<password>@api.softlayer.com/rest/v3.1/SoftLayer_Network/createObject
子网在网络内部创建一个地址空间(一组IP地址)。 从地址空间为虚拟访客分配了IP地址。 可以在网络内部创建多个子网,以逻辑上分隔地址空间。
休息电话:
curl -k -u '<userid>:<apikey>' -X POST -d @Subnet.json https://api.softlayer.com/rest/v3/SoftLayer_Network/<NetworkID>/createSubnet/createObject.json –i
<NetworkID>是URL中使用的参数。 这是在其中创建子网的网络的ID。
虚拟来宾是虚拟机或虚拟服务器的SoftLayer术语。 虚拟机是物理工作站计算机的虚拟版本。 SoftLayer虚拟客户机在SoftLayer数据中心上运行,并具有自己的操作系统和虚拟硬件资源。
休息电话:
curl -H "Content-Type: application/json" --data @VM-app.json https://<userid>:<apikey>@api.softlayer.com/rest/v3/SoftLayer_Virtual_Guest/createObject
CURL命令成功执行后,将返回以下数据:
{ "accountId": 973639, "createDate": "2016-12-21T05:22:28-06:00", "domain": "ibm.com", "fullyQualifiedDomainName": "ADNTest1.ibm.com", "hostname": "ADNTest1", "id": 26954963, "lastPowerStateId": null, "lastVerifiedDate": null, "maxCpu": 1, "maxCpuUnits": "CORE", "maxMemory": 2048, "metricPollDate": null, "modifyDate": null, "provisionDate": null, "startCpus": 1, "statusId": 1001, "uuid": "f5225283-2f7b-4ab7-bab5-6ed0d064ccbb", "globalIdentifier": "a283bb3f-3aa9-430f-a3b4-f8a3a40feb66" }此外,用户可以在“设备列表”下签入已配置的虚拟访客以进行验证。
SoftLayer Bare Metal服务器是可以像虚拟服务器一样配置的物理服务器。 裸机服务器提供原始的服务器性能,并用于处理器或磁盘I / O密集型工作负载。
休息电话:
curl -H "Content-Type: application/json" --data @Baremetal.json https://<userid>:<apikey>@api.softlayer.com/rest/v3/SoftLayer_Product_Order/placeOrder
在表5中,每个价格ID表示在裸机订购过程中选择的可收费硬件,特定配置或服务。
注意 :如果给出了错误的价格ID,则剩余呼叫将失败。
对于裸机订购期间硬件/配置的任何更改,必须在JSON文件中更新相应的价格ID。
Evault是SoftLayer提供的企业级备份存储和灾难恢复解决方案。
休息电话:
curl -H "Content-Type: application/json" --data @Evault_VirtualGuest.json https://<userid>:<apikey>@api.softlayer.com/rest/v3/SoftLayer_Product_Order/placeOrder
要为Bare Metal服务器创建Evault存储,请使用Evault_Baremetal.json文件。
SoftLayer对象存储基于OpenStack Swift对象存储平台。 它提供了冗余且高度可扩展的云存储服务。 要使用对象存储,您需要首先创建一个对象存储帐户。
休息电话:
curl -H "Content-Type: application/json" --data @ObjectStorage.json https:// ://<userid>:<apikey>@api.softlayer.com/rest/v3/SoftLayer_Product_Order/placeOrder
注意 :在执行placeOrder命令之前,请先使用verifyOrder验证订单(将命令中的placeOrder替换为verifyOrder )。
创建对象存储帐户后,您需要:
创建容器 通过在容器上创建文件来利用容器休息呼叫以接收身份验证令牌(仅24小时有效),在进一步的请求中需要:
curl -i -H "X-Auth-User:<user id>" -H "X-Auth-Key: <api key >" https://dal05.objectstorage.softlayer.net/auth/v1.0
使用上一步中创建的身份验证令牌进行REST调用以创建容器:
curl -i -XPUT -H "X-Auth-Token: AUTH_tk7171f7f808cd481a89891b814adc7967" https://dal05.objectstorage.softlayer.net/v1/AUTH_4608a5ea-1df1-4ad2-9b1a-80021aadb625/tempapp
Rest调用以在容器内创建文件:
curl -i -XPUT -H "X-Auth-Token: AUTH_tk7171f7f808cd481a89891b814adc7967" --data-binary "Created for testing REST client" https://dal05.objectstorage.softlayer.net/v1/AUTH_4608a5ea-1df1-4ad2-9b1a-80021aadb625/tempapp/tempfile.txt
有关对象存储的更多操作,请参见“ 通过REST API管理SoftLayer对象存储 ”。
块存储可通过SAN持久性,持久性和灵活性实现本地磁盘性能。 它允许您创建存储卷或共享,并使用iSCSI连接将它们连接到Bare Metal或虚拟服务器。
下订单:
curl -H "Content-Type: application/json" --data @BlockStorage.json https:// ://<userid>:<apikey>@api.softlayer.com/rest/v3/SoftLayer_Product_Order/placeOrder
如果存储大小或IOPS单位使用不同的数量,则需要更改价格项目ID。
必须为每个块存储提供权限,以允许虚拟访客或Bare Metal服务器访问。
REST调用以允许访问虚拟访客:
curl -H "Content-Type:application/json" --data @BlockStorage_Auth.json https://<userid>:<password>@api.softlayer.com/rest/v3.1/ SoftLayer_Network_Storage_Iscsi/<ISCSI_BlocKStorageID>/allowAccessFromVirtualGuest
URL中使用的参数<ISCSI_BlocKStorageID>是需要访问虚拟客户机的ISCSI块存储的ID。
REST调用以允许访问Bare Metal:
curl -H "Content-Type:application/json" --data @JSON-Payload-file.json https://<userid>:<password>@api.softlayer.com/rest/v3.1/ SoftLayer_Network_Storage_Iscsi/<ISCSI_BlocKStorageID>/allowAccessFromHardware
URL中使用的参数<ISCSI_BlocKStorageID>是需要访问虚拟客户机的ISCSI块存储的ID。
Citrix NetScaler是功能强大的Web应用程序交付设备和负载平衡器。
休息电话:
curl -H "Content-Type: application/json" --data @Netscaler.json https://<userid>:<apikey>@api.softlayer.com/rest/v3/SoftLayer_Product_Order/placeOrder
注意:在执行placeOrder命令之前,请先使用verifyOrder命令验证订单(将命令中的placeOrder替换为verifyOrder )。
成功执行此命令后,将返回JSON有效负载的订单信息,其中包含订单的所有详细信息。
验证从SoftLayer门户成功配置NetScaler:
登录到SoftLayer门户。 转到设备列表。 应列出订购的NetScaler设备。 单击以打开设备。 (URL如下所示:https://control.softlayer.com/devices/details/<id>/applicationDeliveryController。) 选择操作>管理设备 。 用户应该能够管理设备。 验证是否已分配了专用IP,正确的公共VLAN和正确的IP数量。问题和解答
NetScaler VPX订购过程要求用户回答与IP地址使用有关的问题。 您可以使用以下命令找到这些问题的详细说明:
curl https://<userid>:<apikey>@api.softlayer.com/rest/v3oftLayer_Product_Item_Category/53/getQuestions
( 53是公共辅助静态IP地址的类别ID。)
表16中显示了这些问题的简要说明。这些问题的答案在NetScaler.json的JSON有效负载中。
基础架构设置和配置是一个耗时的过程。 SoftLayer API允许您在该过程中引入一些自动化。 SoftLayer提供了一个统一的标准API库,可以通过各种方法和工具进行访问,并且对SoftLayer门户透明。 在本教程中,您学习了创建可用于应用程序部署的ADN网络的步骤。 您还探索了许多对SoftLayer Cloud进行REST API调用的方法,并研究了可自动完成整个ADN设置的命令和脚本。
此外,我们还向您展示了ADN如何实现两个目的:(1)定义了一个根IP地址范围,用于将来的专用IP地址分配;(2)它为您提供了一个容器,用于对需要与每个服务器进行通信的服务器进行分组其他使用其私有IP。
我们要感谢以下人员的支持和协助:
Dinakaran Joseph-Cloud杰出工程师
Senthilkumar Vimalraj-GTS Labs基础设施专家
Nalini M-认知与云高级开发人员
Sudhanva Kulkarni-云应用程序开发人员
Vivekanandan Subramanian-Cloud,执行架构师
翻译自: https://www.ibm.com/developerworks/cloud/library/cl-softlayer-configure-components-for-adn/index.html
相关资源:softlayer-python, 在调用 SoftLayer API时,有一组 python 库可以帮助.zip