CloudStack
Where in the admin: Infrastructure › Cloud provider › CloudStack › API connection (
/infra/cloudstack?tab=connect)。最初の接続は、setup wizardのステップ2でも行えます。
動作内容
NexCMPは、Apache CloudStackクラウド上で動作する仮想マシンの販売を行います。CloudStack APIを介してVMのデプロイ、起動、停止、サイズ変更、スナップショット、削除を行い、ゾーンからパブリックIPアドレスを割り当て、課金と帯域幅の使用量を読み取り、管理コンソールにキャパシティと稼働状態を表示します。ハイパーバイザーの信頼できる情報源はCloudStackであり、NexCMPはその上のストアフロント、課金、ポータルとして機能します。
CloudStackをメインのVMソースとする(または予定している)場合は、このページを使用してください。その隣の2つ目のソースについては、Proxmox VEをご覧ください。
要件
| 項目 | 要件 |
|---|---|
| CloudStack version | 4.23がテスト済みのリリースです。VMコンソールには4.18以降が必要であり、実行中のVMのCPU/RAMのライブスケーリングにはKVMを使用する4.23が必要です。 |
| Zone type | 顧客VM用のゲストネットワークを少なくとも1つと、空きアドレスを持つパブリックIP範囲を持つゾーン。 |
| Hypervisor | KVMがテスト済みのハイパーバイザーです。 |
| アカウント | NexCMP用に作成された専用のドメインとアカウント。ROOT管理者キーは絶対に使用しないでください。 |
| API reachability | パネルサーバーは、管理サーバーのAPI URL (https://cloudstack.example.com/client/api) にHTTP(S)経由で到達できなければなりません。VMコンソール、帯域幅、Kubernetes機能も同じエンドポイントを使用します。 |
| Optional read-only key | 2つ目の読み取り専用キーを使用すると、管理コンソールにホスト、ストレージ、システムVM、パブリックIP範囲を表示できます。VMの販売には不要です。 |
| Public IP | ゾーン内の空きパブリックIPv4アドレス。NexCMPが販売できるプレフィックスは、Sales IP poolsで設定されます。 |
| Templates | パスワードが有効な準備完了テンプレートが少なくとも1つ、およびアカウントから見えるサービスオファリングが少なくとも1つ必要です。Templates を参照してください。 |
| ストレージ | アカウントのボリューム用のプライマリストレージ、およびスナップショットやイメージを販売する場合はセカンダリストレージ。 |
| 依存関係 | なし。Kubernetes、Private Cloud、Images、Bandwidthはこのページに依存します。 |
ROOT管理者キーを使用しない
NexCMP 専用のドメインとアカウントを作成します。これにより、キーはそのドメインにのみ到達し、キーが漏洩した場合でもクラウドの残りの部分に影響を与えません。また、セットアップウィザードでは、選択したネットワークがゾーンと、キーを所有するアカウントの両方に属していることも確認されます。
インフラストラクチャの準備
コマンドは、CloudStack管理者としてログインした CloudMonkey (cmk) を使用します。例の名称と山括弧内のプレースホルダーを置き換えてください。
専用アカウントとAPIキーの作成
NexCMPが所有するすべてを保持するドメインを作成します。
bashcmk create domain name=nexcmp出力内の
idに注意してください。これは以下で<domain-id>として使用されます。アカウントに付与するロールを探します。
bashcmk list roles type=DomainAdmin filter=id,nameロール 選択するタイミング Domain Admin (推奨) フル機能セット: VM、ネットワーク、Kubernetes用プロジェクト、VPC、イメージ。アクセス範囲はその nexcmpドメインで停止します。User VMライフサイクルのみ。グローバル設定 allow.user.expunge.recover.vmが trueでない限り、通常のユーザーはVMを完全に削除(expunge)できません。その場合、NexCMPはVMを停止し、CloudStackがexpunge.delay後に完全に削除します。アカウントと最初のユーザーを作成します。推測されにくい強力なパスワードを使用してください。このパスワードは今後入力されることはありません。
bashcmk create account name=nexcmp-api username=nexcmp-api \ password='CHANGE-ME-LONG-RANDOM' email=ops@example.com \ firstname=NexCMP lastname=API roleid=<role-id> domainid=<domain-id>新しいユーザーのAPIキーペアを生成します。
bashcmk list users domainid=<domain-id> username=nexcmp-api filter=id,username cmk generate userkeys id=<user-id>apikeyとsecretkeyをコピーします。これらはNexCMPに入力する API key および Secret key です。NexCMPはこれらを暗号化して保存し、後からは下4桁のみを表示します。ドメインに制限的なリソース制限(インスタンス、ボリューム、パブリックIP、ネットワーク、スナップショット、テンプレート、プロジェクト)が設定されていないことを確認してください。
bashcmk list resourcelimits domainid=<domain-id>
顧客VM用のゲストネットワークの作成
お客様のVMは、新しいアカウントに属する1つのゲストネットワークにデプロイされます。仮想ルーター(VR)およびスタティックNAT、ファイアウォール、ポートフォワーディングサービスを備えた孤立ネットワークは、NexCMPがスタティックNATによって各VMにパブリックIPを割り当てるため、正常に動作します。
bash
cmk list networkofferings state=Enabled guestiptype=Isolated filter=id,name
cmk create network name=customers displaytext=customers zoneid=<zone-id> \
networkofferingid=<offering-id> account=nexcmp-api domainid=<domain-id>サービスのデフォルトのエグレスポリシーを確認します。「deny」に設定されている場合、ファイアウォールのエグレスルールが追加されるまで、お客様のVMからのアウトバウンドアクセスは許可されません。
サービスプランとテンプレートの表示設定
- サービスプランとネットワークプランは、公開されているか、
nexcmpドメインに割り当てられている必要があります。そうでない場合、アカウントでそれらをリスト表示または使用できません。 - 少なくとも1つのテンプレートを登録または共有します(Templatesを参照)。NexCMPには、準備が完了しており推奨されているテンプレートが表示されます。
オプション:インフラストラクチャページ用の読み取り専用キー
Capacity、Host、Storage、System VMの各タブ、およびパブリックIP範囲のリストでは、6つのコマンドに対する読み取り権限のみが必要な2つ目のキーを使用します。フル管理者キーを再利用する代わりに、制限付きロールを作成してください:
bash
cmk create role name=nexcmp-readonly type=Admin
# <role-id> is the id printed above
for api in listHosts listCapacity listSystemVms listVlanIpRanges listClusters listStoragePools; do
cmk create rolepermission roleid=<role-id> rule=$api permission=allow
done
cmk create rolepermission roleid=<role-id> rule='*' permission=deny次に、そのロールを持つアカウントを(ゾーン全体のデータを読み取るためROOTドメインで)作成し、ステップ4と同様にキーを生成して、次のセクションでRO API keyとして入力します。
ネットワークパスの確認
パネルサーバーから:
bash
curl -fsS -o /dev/null -w '%{http_code}\n' https://cloudstack.example.com/client/apiHTTPの応答(4xxを含む)があれば、ポートに到達可能であることを示しています。タイムアウトが発生した場合は、お客様側でのファイアウォールまたはDNSの問題を示しています。
NexCMP での接続
セットアップウィザードでの設定
setup wizardのステップ2では、同じ値の入力を求められます。Test connectionをクリックすると、そのキーでアクセスできるゾーンとネットワークの一覧が表示されます。ゾーン、ゲストネットワーク、ゾーンの表示名、国を選択し、Save CloudStackをクリックします。そのゾーン内に存在しないネットワークや、キーから見えないネットワークはウィザードで拒否されます。

後から管理コンソールで行う設定
Infrastructure › Cloud provider › CloudStackを開き、API connectionタブを選択します。
Connectionカードに入力します:
項目 入力例 Endpoint API https://cloudstack.example.com/client/apiAPIキー (書き込みアクセス) XXXX(保存済みのキーを維持する場合は空のままにします)Secret key XXXXRO APIキー / ROシークレットキー オプション、読み取り専用アカウントのもの Zone ID ゾーンのUUID 
保存する前にTest connectionをクリックします。保存せずに、入力したキーのテストを行います(書き込みキーは
listZonesとlistCapabilitiesで、読み取り専用キーはlistSystemVmsでテストされます)。Save connectionをクリックします。Enable CloudStack connectionはオンのままにしてください。オフにすると、データを失うことなく、ワーカーがすべてのCloudStackジョブを停止します。
Services › Virtual Machines › Policy › Provisioningを開き、デフォルトのゲストネットワーク、カスタムプラン、および新しいVMのデフォルトのキーペアを設定します。

Infrastructure › Cloud provider › Sales IP poolsを開き、Configure sales rangesの下にあるSellable IP range prefixes(例:
203.0.113.)を設定します。ゾーン内の特定のアドレスを絶対に販売してはならない場合は、Excluded IP prefixesも設定します。すべての空きアドレスを許可する場合は、プレフィックスを空のままにします。
NexCMPの読み書き
| 領域 | 読み取り | 変更 |
|---|---|---|
| VMs | 一覧、状態、利用履歴、コンソールエンドポイント | デプロイ、起動、停止、再起動、再インストール、削除、スケール、パスワードとSSHキーのリセット |
| ディスクとスナップショット | ボリューム、VMスナップショット、バックアップ | 作成、アタッチ、デタッチ、リサイズ、削除、スナップショット、復元 |
| ネットワーク | ネットワーク、ルーター、パブリックIP、ファイアウォール、ポートフォワーディング、ロードバランサールール | パブリックIPの関連付けと解放、静的NAT、ファイアウォール、ポートフォワーディング、外向きルール、プライベートクラウド用のネットワークとACL |
| カタログ | サービス、ディスクとネットワークのオファリング、テンプレート、ISO、OSタイプ | テンプレートとISO(イメージ)の登録および削除、カスタムプラン作成時のサービスオファリング |
| Kubernetes | サポートされているバージョン、クラスター、設定 | プロジェクト、リソース制限、ネットワーク、クラスター(Kubernetesモジュール) |
| 読み取り専用キー | ホスト、クラスター、ストレージプール、システムVM、容量、VLAN IP範囲 | なし |
ライブCPUとRAM、および帯域幅
- ホットプラグ。 稼働中のVMは、テンプレートがそれを許可しており(動的スケーラブル)、ゲストOSが新しいCPUとRAMをオンラインにする場合にのみ、再起動なしでサイズ変更できます。NexCMPは、名前が
vNで終わりNが6以上であるテンプレート、またはテンプレートのvCPU/RAM hot-plugフィールドで手動設定した場合に、Auto Scalingを有効にします。Templatesをご覧ください。 - 帯域幅ソース。 デフォルト設定では、NexCMPはCloudStackのVM統計情報からトラフィックを測定します(
listVirtualMachinesUsageHistory、5分ごとにポーリングされ、VMネットワークインターフェイスごとに合算されます)。数値にはVM間のトラフィックが含まれるため、エッジルーターのカウント値よりわずかに高くなる場合があります。CloudStackのVM統計情報の収集を有効にしたままにしてください。統計情報の保持期間を超えるギャップはスキップされます。Bandwidthをご覧ください。
確認
- Test connectionは、ゾーンとCloudStackのバージョンとともに「Write key: OK」を返します。
- Infrastructure › Cloud provider › Providersには、直近のテスト時刻とともにプロバイダーがアクティブであると表示されます。ダッシュボードのヘルスパネルに「CloudStack: not connected」と表示されなくなります。
- Sales IP poolsに空きアドレスが表示されます(約1分ごとに更新されます)。
- カスタマーポータルまたは管理コンソールから小規模なVMを注文し、Runningに達すること、パブリックIPを持つこと、およびコンソールを開けることを確認します。
制限と注意点
- このNexCMPリリースでは、接続できるCloudStackクラスターは1つです。Add cloud providerダイアログで2つ目のクラスターのキーをテストすることはできますが、保存はできません。
- 1つのCloudStackゾーンがNexCMPのデフォルトゾーンにアタッチされます。複数のゾーンを持つCloudStackは入力したゾーンにスコープされるため、他のゾーンのVM、IP、ネットワークは無視されます。
- CloudStackでゲストネットワークを削除すると、新しいデプロイがすべて失敗するようになります。ネットワークが消滅すると、管理コンソールに赤い通知が表示されます。
- 資格情報はサーバーから外に出ることはありません。APIは最後の4文字のみを返します。
トラブルシューティング
| 症状 | 原因 | 対処法 |
|---|---|---|
listCapabilities: cloudstack 401: unable to verify user credentials and/or request signature | APIキーまたはシークレットが間違っている、別のユーザーのキーである、またはパネルサーバーの時計に問題がある | cmk generate userkeysでキーを再生成し、両方を貼り付けます。パネルサーバーの時間を確認してください。 |
テスト: listZones: …またはタイムアウト | パネルサーバーがAPI URLに到達できない | DNS、ファイアウォール、および正確な/client/apiパスを確認してください。 |
| ウィザード: 「このAPIキーに対応するネットワークがそのゾーンに見つかりません」 | 選択したネットワークが別のアカウントまたはゾーンに属している | 専用アカウントでネットワークを作成し(上記参照)、再度Test connectionを実行します。 |
| ウィザード: 「ゾーンとネットワークを選択してください」 | テストが実行されていない、またはゾーンやネットワークが選択されていない | Test connectionをクリックし、両方のリストから選択します。 |
| バナー「CloudStack key not configured」 | キーがまだ保存されていません(「Connect later」) | Connectionカードを入力し、Save connectionをクリックしてから、Test connectionをクリックします。 |
| バナー「CloudStack connection is OFF」 | Enable CloudStack connectionスイッチがオフになっている | スイッチをオンにして保存します。 |
| 読み取り専用キー: テストでの「unusable …」 | ロールの権限が不足しているか、アカウントが間違っている | 許可されている6つのコマンドを確認し、アカウントがROOTドメインにあることを確認してください。 |
| 「Zone public IP ranges not measured yet」または「no public IP ranges declared」 | 読み取り専用キーがないか、ゾーンにパブリック範囲が本当に宣言されていない | 読み取り専用キーを追加するか、CloudStackでパブリックIP範囲を追加してください。 |
| "プールが空です — vmdの同期を60秒待機中" | IPリストはワーカーによって1分に1回更新されます | 1分待ってから再読み込みしてください。 |
| "範囲 203.0.113. 内のFree IPが枯渇しています" | 販売可能なプレフィックス内のすべてのアドレスが使用されています | ゾーンにアドレスを追加するか、プレフィックスを広げるか、未使用のIPを解放してください。 |
| "ネットワークデータの取得に失敗しました(CloudStackが応答しないか、キーの権限が不足しています)" | キーがアクセス権を失ったか、CloudStackが停止しています | Test connectionを実行し、アカウントが有効になっていることを確認してください。 |
| "ゲストネットワークが存在しません" | ネットワークがCloudStackで削除されました | ネットワークを再作成し、Provisioningの設定でデフォルトに指定してください。 |