1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM Cloud Virtual Server for VPCでLXDによる小規模なプライベートクラウドを立てる

1
Last updated at Posted at 2025-09-25

概要

この文書では、小規模なプライベートクラウドをIBM Cloudを使い、Node-REDによるPaaSを構築します。
環境構築には、LXDを使います。LXDと同じものとしてIncusがありますが、Incusは別の資料として作成します。
また、IBM Cloud Virtual Server for VPCで仮想マシンを作成する手順の確認もあります。

IBM Cloud Virtual Server for VPCで仮想マシン作成

IBM Cloud上でIaaSにあたるサービスは、次のようなものがあります。

仮想サーバーの作成と運用

前世代の仮想サーバーの作成と運用(一時利用契約で、安く使えるが、2025年12月31日で購入ができなくなる。関連ニュース)

Power Systemsの仮想環境(正確にはLPAR環境, AIXやIBM i をサポート)

ベアメタルサーバーの作成と運用

VPCの作成

VPCは仮想プライベートクラウドのことです。パブリッククラウド内に独立したネットワークをつくることができます。
仮想サーバーを作成するために、VPCを作成します。

IBM Cloudにログインします。ログイン後、画面左上の「Ⲷ」をクリックします。
image.png
「Infrastructure」-->「Network」-->「VPCs」の順にクリックします。
image.png

「Virtual private clouds」の画面で、「Create +」をクリックします。
image.png

VPCの作成とともにサブネットも作成されます。
image.png

作成したVPCは、「Virtual private clouds」の画面に表示されます。
image.png

「Default security group」に表示されている、セキュリティグループ名をクリックすることで、インバウンドやアウトバウンドのルールを設定することができます。
image.png

インバウンドルートとアウトバウンドルール、それぞれに「Create +」をクリックすることで、追加することができます。今回は、インバウンドルールに下記を追加します。

区分 Protocol Port Port min Port max Source type Destination type
Inbound rules TCP Port range 22 22 Any Any
Inbound rules TCP Port range 8443 8443 Any Any
Inbound rules TCP Port range 8080 8080 Any Any

仮想マシンの作成

IBM Cloud Catalogで、「Virtual Server for VPC」にアクセスします。直接アクセスしたい場合は、こちらをクリックします。
image.png

この画面で仮想マシンを作成します。
image.png

「Location」を指定します。
image.png

仮想サーバー名を入力します。
image.png

小規模なプライベートクラウド環境として、この文書では「LXD」を使います。「LXD」を使うため、「Image」に「Ubuntu Linux」を指定、「Profile」に「vCPUs 2 , RAM 8GB」を指定します。「Ubuntu」以外を選ぶ場合は、「LXD」ではなく、「Incus」を使います。
image.png

「SSH keys」にて「Create a SSH key」をクリックし、SSH鍵を作成します。秘密鍵と公開鍵の両方を同時に作成します。秘密鍵がダウンロードされるので、保存しておきます。仮想サーバーに接続する際に、ダウンロードした秘密鍵を使用します。
image.png

作成したVPCのサブネットが選ばれていることを確認します。
image.png

画面右側に表示される「Summary」を確認します。「Create virtual server」をクリックします。これで仮想サーバーを作成することができます。
image.png

作成した仮想サーバーが表示されます。
image.png

仮想サーバーを表示する方法は、画面左上の「Ⲷ」をクリックし、「Infrastructure」-->「Compute」-->「Virtual server instances」の順にクリックすることで、IBM Cloud Virtual Server for VPCで作成した仮想サーバーの一覧を表示することができます。
image.png

floating IPの割り当て

作成した仮想サーバーで、下図のように「⁝」をクリックし、「Edit floating IPs」をクリックします。
image.png

「Attach +」をクリックして「Floating IP」を作成します。「Floating IP」には、月額 1.05ドルが生じます(25年9月現在)。
image.png

仮想サーバーに、「Floating IP」が割り当てされていることがわかります。割り当てされた「Floating IP」にSSH接続します。
image.png

仮想サーバーにSSH接続

仮想サーバーに接続します。ここでは「TeraTerm」を使っています。他のアプリで構いません。ユーザー名に「ubuntu」とし、認証方式に秘密鍵を使用します。秘密鍵は、先ほどダウンロードしたものを使います。
image.png

接続すると、下記のように表示されます。
image.png

仮想サーバーの時刻設定や最新のアップデート適用を行うため、次のコマンドを実行します。

sudo timedatectl set-timezone Asia/Tokyo
sudo apt update -y
sudo apt upgrade -y

これで、IBM Cloud Virtual Server for VPCで、LXDをインストールするための準備が終わりました。

管理者1人の小規模なプライベートクラウドの構築

LXD-UIはプライベートクラウドの仕組みを提供します。ログインには証明書を使うので、管理者が1人で運用する小規模なプライベートクラウドになります。

LXDとLXD-UIのインストール

LXDの公式ドキュメントは、こちらです。
次のコマンドを実行するとことで、LXDとLXDをWebブラウザで管理するLXD-UIをインストールします。

$ sudo snap install lxd

Webブラウザで接続するためのコマンドを実行します。8443番ポートで接続できるようにします。

$ lxc config set core.https_address :8443

実行結果

If this is your first time running LXD on this machine, you should also run: lxd init
To start your first container, try: lxc launch ubuntu:24.04
Or for a virtual machine: lxc launch ubuntu:24.04 --vm

lxd init を実行するように指示がでます。lxd initを実行します。公式ドキュメントにlxd initについての説明があります。

$ lxd init

次のように指示がでますので、指示にしたがって設定します。「Size in GiB of the new loop device (1GiB minimum) 」を5GiB(5GB)に指定しています。loop device上で、VMやコンテナが動きます。LXD上で動くコンテナは、システムコンテナです。

Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, ceph, dir, lvm, powerflex, pure, zfs) [default=zfs]:
Create a new ZFS pool? (yes/no) [default=yes]:
Would you like to use an existing empty block device (e.g. a disk or partition)? (yes/no) [default=no]:
Size in GiB of the new loop device (1GiB minimum) [default=19GiB]: 5GiB
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
Would you like the LXD server to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]:
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

LXD-UIのセットアップ

Webブラウザで、https://仮想サーバーのFloating IP:8443 にアクセスします。LXD-UIにログインする証明書を作成するため、まずは「キャンセル」をクリックします。
image.png

LXD-UIにアクセスするための証明書を作成

「Generate certificate」をクリックします。
image.png

「Create Certificate」の画面が表示されます。
証明書にパスワードを指定したい場合は、「Password protected」のトグルスイッチをオンにします。パスワードの指定は任意です。「Generate and download」をクリックします。
image.png

証明書を保存します。
image.png

ダウンロードした証明書をダブルクリックし、インポートします。
image.png

Webブラウザで、https://仮想サーバーのFloating IP:8443 にアクセスします。インポートした証明書を選び、「OK」をクリックします。
image.png

画面に指示されたコマンドを実行し、トークンを生成します。
image.png

コマンドを実行します。

$ lxc auth identity create tls/lxd-ui --group admins

実行結果(token:の後の文字列は、実行毎に異なるので、生成されたトークンを使ってください。)

TLS identity "tls/lxd-ui" (dc9116e8-bee8-427e-9227-9f65b2a8b9eb) pending identity token:
eyJjbGllbnRfbmFtZSI6Imx4ZC11aSIsImZpbmdlcnByaW50IjoiNTRlZTA2ZGVhNDdjZGRkZDJkNDJiMDA1MmUzODI3NTQ4MmVjZjU1YjUzZjEyNTIxMmE3MjU0M2Q5ZGY5MzExZiIsImFkZHJlc3NlcyI6WyIxMC4yNDQuMC40Ojg0NDMiLCIxMC4zOS4zMy4xOjg0NDMiLCJbZmQ0Mjo5ZjA3OjlmYjc6NzYyYzo6MV06ODQ0MyJdLCJzZWNyZXQiOiI5OWMwODY1MTEzYzIyNTc1M2IyZGQyMjNlMGQ4ZDZlNDc1ZDFlMTQ2YTlkMzMzZjhjYzhkMTU0YzI2NjgzOGRkIiwiZXhwaXJlc19hdCI6IjAwMDEtMDEtMDFUMDA6MDA6MDBaIiwidHlwZSI6IkNsaWVudCBjZXJ0aWZpY2F0ZSJ9

token:の後の文字列をコピーし、貼り付けます。その後、「Connect」をクリックします。
image.png

下図のように、「Canonical LXD」の画面が表示されます。「Instances」の画面で、「Create instance」で、Vmやコンテナ(システムコンテナ)を作成することができます。
image.png

インスタンスの作成と起動

VMとコンテナ(システムコンテナ)を作成することができます。LXDでは、どちらもインスタンスと言います。

  • IBM Cloud Virtual Server for VPCでは、仮想サーバーを動かしていますので、Nested VMができず、コンテナ(システムコンテナ)を動かすことができます。LXDでVMを動かすには、ベアメタルサーバーの方が良いでしょう。
  • システムコンテナは、VMのように操作することができ、SSHやsystemdなどを使うことができます。

「Canonical LXD」の画面の画面左側で「Instances」をクリックします。
「Instances」の画面で、「Create instance」をクリックします。
image.png

「Create an instance」の画面で、「Browse images」をクリックします。
image.png

今回は「Ubuntu 24.04 LTS」を探し、「Select」をクリックします。
image.png

「Create an instance」の画面に戻ります。「Main configuration」のタブで、「Instance name」に、インスタンス名を入力します。「Instance type」に「Container」を指定します。
割り当てるディスク等を指定する場合は、画面左側で「Devices」の項目で設定します。
「Create and start」をクリックします。
image.png

エラーがなく作成することができれば、「Success」のメッセージが表示されます。
image.png

「Instances」の画面で、インスタンスが表示されます。
image.png

インスタンス名をクリックします。「Overview」タブにインスタンス情報が表示されます。
image.png

「Terminal」タブから、インスタンスにコマンドを入力し実行することができます。
image.png

PaaSに仕立てる

「Canonical LXD」の画面で作成したインスタンスのターミナルに、PaaSで定番プラットフォームの「Node-RED」をインストールします。Node-REDは、IoTやAI分野、API連携を行うプラットフォームとして定番です。

Node-REDのインストール

インスタンスの「Terminal」タブで、次のコマンドを実行します。

$ bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

このように実行します。
image.png

指示にしたがって、インストールを進めます。
image.png

インスタンスの「Terminal」タブで、Node-REDの起動コマンドを実行します。Node-REDは、1880番ポートで起動します。

systemctl enable nodered.service
systemctl start nodered.service

Proxyを使って、外部からアクセス可能にする

LXDの「Proxy」を使って、インスタンスとホスト(仮想サーバー)間でネットワーク接続を転送します。

$ lxc config device add LXD-UIで起動したインスタンス名 任意のプロキシ名 proxy listen=tcp:ホストのIPアドレス:ポート番号 connect=tcp:インスタンスのIPアドレス:ポート番号

インスタンス名:今回は、ubuntu-demo
プロキシ名:今回は、nodered-proxy
ホストのIPアドレス:今回は、仮想サーバーのIPアドレスとして、10.244.x.x

実行例

$ lxc config device add ubuntu-demo nodered-proxy proxy listen=tcp:10.244.x.x:8080 connect=tcp:127.0.0.1:1880

このコマンドでは、ubuntu-demo 内で実行しているNode-RED(127.0.0.1:1880)と、ホスト(10.244.x.x:8080)を接続します。

Webブラウザで、https://仮想サーバーのFloating IP:8080にアクセスすることで、インスタンスで実行中のNode-REDにアクセスすることができます。
image.png

次のお題はIncus

LXDを使うために、仮想サーバーでUbuntuを使っています。Ubuntu以外でLXDと同じことを行うために「Incus」を使う必要があります。次は「Incus」を使ってみます。

参考資料

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?