Bluemix
SoftLayer

Bluemix IaaS (旧SoftLayer) で Custom Model の仮想サーバーを注文する回避策

More than 1 year has passed since last update.

内容

最近、Flavor Model が導入されたことにあたり、調査した内容を記事にします。
従来のモデルでも注文できる方法を記載します。
(いつ無効化されるかわかりませんので、今のうちだけかもしれません!)

参考
Kick up your compute power with three new virtual server enhancements - Bluemix Blog

Flavor Model の導入

2017年9月11日の Flavor Model の導入により、Bluemix の Public 仮想サーバーは、「Flavor」と呼ばれる固定インスタンスモデルから選ぶ方式となりました。
この事前定義モデルにより、高速で使いやすくなりました。

Kobito.EcbHy6.png

  • Balanced
    • CPU と メモリ のバランスがとれたモデル
  • Balanced Local Storage
    • CPU と メモリ のバランスがとれたモデル のローカルストレージ(オールフラッシュモデルあり)
  • Compute
    • CPU と メモリ が1対1のモデル
  • Meomory
    • メモリ比率が大きいモデル

従来の Custom Model との比較(個人的調査)

Custom Model

従来のモデルでは、柔軟にコアとメモリを選ぶことができました。
Kobito.SSF57N.png

Flavor Model

それに対して今回導入されたモデルでは、偏ったモデルは廃止され、バランスをとって集約率をあげていく狙いと思われます。
Kobito.x0zZoQ.png

カスタマイズモデルのオーダー方法

ただ、今まで使っていたモデルが注文できなくなるのは不便ですよね。
現時点では、まだ従来モデルでも注文できる方法をみつけたので記載します。

オーダー時に Dedicated Virtual Server を選ぶ

スクリーンショット 2017-09-19 10.37.27.png

Dedicated Virtual Server の配置方式を「Auto Assign」とする

スクリーンショット 2017-09-19 10.39.55.png

インスタンスタイプを「Public Instance」にする

と注文できました!!!(2017年9月19日時点で検証済み)
スクリーンショット 2017-09-19 10.40.05.png

さいごに

一時的な回避方法としては、有効かと思いますので、ぜひお試しあれ!

追加:API経由での注文も回避策のひとつです。

$ python CreateVSI-win2k16-private-only.py khayama-test01
{'domain': 'bluemix.com', 'maxMemory': 1024, 'uuid': '476accf4-5932-41ad-b9b7-9fc9e4176e75', 'maxCpu': 1, 'metricPollDate': '', 'createDate': '2017-10-04T17:13:57+09:00', 'hostname': 'khayama-test01', 'startCpus': 1, 'lastPowerStateId': '', 'lastVerifiedDate': '', 'statusId': 1001, 'globalIdentifier': 'e2fdd691-759b-435b-ad33-fa70a0eb0718', 'provisionDate': '', 'maxCpuUnits': 'CORE', 'modifyDate': '', 'accountId': xxxxxx, 'id': 41000693, 'fullyQualifiedDomainName': 'khayama-test01.bluemix.com'}
$ cat CreateVSI-win2k16-private-only.py
from __future__ import print_function
import SoftLayer
from SoftLayer.managers.vs import VSManager
import sys
parm=sys.argv
hostName=parm[1]

def create_vsi():
    #Create a client to the SoftLayer_Account API service.
    #Note: currently set without the user ID and API key since
    #it will by default use the values set in the CLI
    #to use other values use SoftLayer.Client(sl_username, sl_api_key)
    client = SoftLayer.Client()
    vsi_mgr = VSManager(client)

    # uncomment to display create options
    # print(vsi_mgr.get_create_options())

    # common values
    datacenter = 'tok02' # the data center code
    domain = 'bluemix.com' # the domain name suffix for the host
    os_code = 'WIN_2016-STD_64' # the operating system code
    local_disk = True # local disk or SAN
    hourly = True # hourly or monthly billing
    dedicated = False # multi-tenant or single tenant
    nic_speed = 100 # speed of network device
    disks = [100] # size of the disks 100 or 25
    private = True # private networking only or include public internet networking as well

    # server properties
    hostname = hostName
    cpus = 1
    memory = 1024

    # code that can verify the create operation without actually doing it
    # template = vsi_mgr.verify_create_instance(hostname=hostname, domain=domain,
    #                                 cpus=cpus, memory=memory, datacenter=datacenter,
    #                                 os_code=os_code, local_disk=local_disk,
    #                                 hourly=hourly, dedicated=dedicated,
    #                                 private_vlan=private_vlan, disks=disks,
    #                                 nic_speed=nic_speed, private=private,
    #                                 ssh_keys=ssh_keys, tags=tags)
    # print(template)

    result = vsi_mgr.create_instance(hostname=hostname, domain=domain,
                                     cpus=cpus, memory=memory, datacenter=datacenter,
                                     os_code=os_code, local_disk=local_disk,
                                     hourly=hourly, dedicated=dedicated,
                                     disks=disks,
                                     nic_speed=nic_speed, private=private
                                     )
    print(result)

if __name__ == '__main__':
    create_vsi()