概要
この文書では、IBM Cloud Virtual Server for VPCでLXDによる小規模なプライベートクラウドを立てるの発展です。LXDに、CephとOVNを追加して、シングルノードおよび3~50ノードの中規模なクラウド構築を行うソフトウェアである、Canonical MicroCloud を、IBM Cloud Virtual Server for VPCに入れてシングルノード構成で運用し始めた話です。
大規模クラウド基盤をつくることのできるOpenStackを使うほどではない、中~小規模のクラウド環境や、ラボ環境のようなパーソナルクラウドであれば、MicroCloudで十分です。
サーバーの用意
IBM Cloud Virtual Server for VPCでLXDによる小規模なプライベートクラウドを立てるをもとに、VPCと仮想サーバーを用意します。予算に余裕があれば、ベアメタルサーバーでも構いません。
MicroCloudの最小構成は、シングルノード(サーバー1台)でvCPU2とRAM8GBの割り当てが必要です。OS(Image)は、Ubuntu 24.04(2025年9月時点)を指定します。Floating IPを割り当てます。
MicroCloudは、Ubuntuを前提としています。シングルノード以外では、3~50ノードの構成に対応しています。
また、VPCのセキュリティグループでは、下記のようにルールを追加します。
区分 | 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 | 18080 | 18080 | Any | Any |
Inbound rules | TCP | Port range | 80 | 80 | Any | Any |
仮想サーバーにSSH接続
仮想サーバーに接続します。ここでは「TeraTerm」を使っています。他のアプリで構いません。ユーザー名に「ubuntu」とし、認証方式に秘密鍵を使用します。秘密鍵は、仮想サーバーを用意した際に作成しダウンロードしたものを使います。
IPアドレスの確認
IPアドレスを確認するため、次のコマンドを実行します。
ip a
実行結果(結果の一部を伏字にしています。)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback ■■:■■:■■:■■■:■■:■■ brd ■■:■■:■■:■■■:■■:■■
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether ■■:■■:■■:■■■:■■:■■ brd ■■:■■:■■:■■■:■■:■■
altname enp0s3
inet 10.244.64.7/24 brd 10.244.64.255 scope global dynamic ens3
valid_lft 287sec preferred_lft 287sec
inet6 fe80::4ff:fe95:dd01/64 scope link
valid_lft forever preferred_lft forever
この場合、MicroCloudは、インストール時に自動選択するNICとして、仮想ネットワークインターフェースのens3を選びます。
NICが複数ある場合は、どちらか選ぶことができます。
MicroCloud のインストールと初期化
サーバーが仮想化支援機能に対応しているか確認するため、次のコマンドを実行します。出力結果が、1以上であればVMを作成可能と判断できます。
sudo egrep -c '(vmx|svm)' /proc/cpuinfo
仮想サーバーの時刻設定や最新のアップデート適用を行うため、次のコマンドを実行します。
sudo timedatectl set-timezone Asia/Tokyo
sudo apt update
sudo apt upgrade
MicroCloud をインストールします。
sudo snap refresh
sudo snap install lxd microceph microcloud microovn
実行結果
microcloud (2/stable) 2.1.1-202e275 from Canonical✓ installed
microovn (24.03/stable) 24.03.2+snapa2c59c105b from Canonical✓ installed
lxd (5.21/stable) 5.21.4-8b5e998 from Canonical✓ installed
microceph (squid/stable) 19.2.1+snap9d13f4a172 from Canonical✓ installed
MicroCloudの初期化を行います。
sudo microcloud init
対話形式の初期化がはじまります。サーバーのスペックにあわせて対話形式の設定を進めます。
シングルノード構成では、no とします。
Do you want to set up more than one cluster member? (yes/no) [default=yes]:
お使いのストレージに合わせて構成します。
Would you like to set up local storage? (yes/no) [default=yes]:
Would you like to set up distributed storage? (yes/no) [default=yes]:
ネットワーク構成について警告が表示されること場合があります。シングルノード構成であればこのまま進めて動かすことができます。
! Warning: Some systems are ineligible for distributed networking. At least one interface in state UP with no IPs assigned or a bridge is required
Continue anyway? (yes/no) [default=yes]:
下記のように表示されることで、MicroCloudを使用することができます。
Initializing new services ...
Local MicroCloud is ready
Local MicroOVN is ready
Local MicroCeph is ready
Local LXD is ready
Awaiting cluster formation ...
Configuring cluster-wide devices ...
MicroCloud is ready
稼働状況をみてみましょう。ホスト名 vmtest-microcloud、IPアドレスを10.244.64.7とします。
MicroCloudの稼働状況を確認するコマンドを実行します。
sudo microcloud cluster list
microcephの実行状況を確認するコマンドを実行します。
sudo microceph cluster list
microovnの実行状況を確認するコマンドを実行します。
sudo microovn cluster list
クラスター構成を確認するコマンドを実行します。
sudo lxc cluster list
UI(セルフサービスダッシュボード)のセットアップ
Webブラウザは、Chrome , Micrososft Edge , Firefox に対応しています。
ログインするための証明書を作成
MicroCloudでは、UIにアクセスするには、証明書を使ってログインします。一般的には、ユーザー名やメールアドレスとパスワードを使ってログインするわけですが、MicroCloudでは証明書を使ってログインします。
Webブラウザで、「sudo lxc cluster list」の実行結果に表示されました、URLにアクセスします。
表示内容のとおり、LXD-UIと同じ操作です。
「Generate certificate」をクリックします。
「Create Certificate」の画面が表示されます。
証明書にパスワードを指定したい場合は、「Password protected」のトグルスイッチをオンにします。パスワードの指定は任意です。「Generate and download」をクリックします。
証明書を保存します。
ダウンロードした証明書をダブルクリックし、インポートします。
トークンの登録
Webブラウザで、https://仮想サーバーのFloating IP:8443 にアクセスします。インポートした証明書を選び、「OK」をクリックします。
画面に指示されたコマンドを実行し、トークンの文字列を取得します。
lxc auth identity create tls/lxd-ui --group admins
実行結果(token:の後の文字列は、実行毎に異なるので、生成されたトークンを使ってください。)
TLS identity "tls/lxd-ui" (cd1a52fd-33d3-437f-b93f-a7e61f8b80c8) pending identity token:
eyJjbGllbnRfbmFtZSI6Imx4ZC11aSIsImZpbmdlcnByaW50IjoiNDcxNTBhM2VjMjQwZGI1ZTFlMzk5ZDgzNDc2YTExNDFhMjM4ZDM2ZDllNmI1NzVkNGRjODNjMWI0YmFiYzAzYSIsImFkZHJlc3NlcyI6WyIxMC4yNDQuNjQuNzo4NDQzIiwiMjQwLjcuMC4xOjg0NDMiLCIxMC4xNTQuNTYuMTo4NDQzIiwiW2ZkNDI6ZjY4NjpiNWNlOmM3M2U6OjFdOjg0NDMiXSwic2VjcmV0IjoiMmI2N2EzZjZmZGYwMjJiZmZjMjY5MGM1NjM3NzQ3NjEyMzJjMmY5NDlkYmI4N2FmM2VmZmM3YjBhNDQwOTY4NiIsImV4cGlyZXNfYXQiOiIwMDAxLTAxLTAxVDAwOjAwOjAwWiIsInR5cGUiOiJDbGllbnQgY2VydGlmaWNhdGUifQ==
「Paste the trust token below:」に、token:の後の文字列をコピーし貼り付けます。「Connect」をクリックします。
下図のように、「MicroCloud」の画面が表示されます。「Instances」の画面で、「Create instance」で、Vmやコンテナ(システムコンテナ)を作成することができます。
インスタンスの作成と起動
MicroCloudでは、VMとコンテナ(システムコンテナ)を作成することができます。LXDでは、どちらもインスタンスと言います。VMはKVMベースです。システムコンテナは、VMのように操作することができ、SSHやsystemdなどを使うことができます。
「MicroCloud」の画面の画面左側で「Instances」をクリックします。
「Instances」の画面で、「Create instance」をクリックします。
画面中央の「Create instance」を作成します。
「Create an instance」の画面で、「Browse images」をクリックします。
今回は「Ubuntu 24.04 LTS」を探し、「Select」をクリックします。
「Create an instance」の画面に戻ります。「Main configuration」のタブで、「Instance name」に、インスタンス名を入力します。「Instance type」に「Container」を指定します。
割り当てるディスク等を指定する場合は、画面左側で「Devices」の項目で設定します。
「Create and start」をクリックします。
「Instances」の画面で、インスタンスが表示されます。
インスタンス名をクリックします。「Overview」タブにインスタンス情報が表示されます。
「Terminal」タブから、インスタンスにコマンドを入力し実行することができます。
ターミナルからコマンドを実行することができます。動作確認としてWebサーバーを立ててみましょう。
Webサーバーを立てる
作成したインスタンスにNginxをインストールします。
timedatectl set-timezone Asia/Tokyo
apt update
apt upgurade
apt install -y nginx
Nginxを起動します。
systemctl start nginx
Nginxの起動を確認します。
systemctl status nginx
実行結果
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-10-02 08:59:52 JST; 1min 15s ago
Docs: man:nginx(8)
Process: 3958 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, s>
Process: 3960 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/S>
Main PID: 3990 (nginx)
Tasks: 3 (limit: 9469)
Memory: 3.1M (peak: 5.9M)
CPU: 30ms
CGroup: /system.slice/nginx.service
├─3990 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
├─3992 "nginx: worker process"
└─3993 "nginx: worker process"
Oct 02 08:59:52 u1 systemd[1]: Starting nginx.service - A high performance web server and a reverse p>
Oct 02 08:59:52 u1 systemd[1]: Started nginx.service - A high performance web server and a reverse pr>
lines 1-17/17 (END)
インスタンス内のNginxに外部からアクセスできるようにするには、インスタンスにProxy設定を追加する必要があります。
Proxyを使って、外部からインスタンスに接続してみる
例として、今ほどインストールしましたNginxに接続するためのProxy設定を説明します。
インスタンスの「Configuration」タブをクリックします。「Devices」の下の「Proxy」を選び表示します。「+New Proxy Device」をクリックします。
次のように各項目に値を入力します。Listenで入力できるポート番号は、IBM Clouod Virtual Serverを使っている場合は、VPCのセキュリティグループのルールで登録したポート番号の範囲で入力することができます。
Type | Address | Port | 備考 | |
---|---|---|---|---|
Listen | TCP | 仮想サーバーのNIC(ens3)に割り当てされているIPアドレス(例 10.244.64.7) | 80 | MicroCloudをインストールしたサーバー |
Connect | TCP | 127.0.0.1 | 80 | インスタンス |
入力後、「Save 1 change」と表示されている緑のボタンをクリックします。
Proxy設定により、http://仮想サーバーのFloating IP にアクセスしたとき、「Listen(MicroCloudをインストールしたサーバー)」を介して、Proxy設定により「Connect(インスタンス)」が呼び出され、Nginxで運用しているWebサーバーにつながるという動きになります。
これで、インスタンス作成とアプリケーションを動かすことが確認できました。
プロジェクト機能を用いた、インスタンス管理
プロジェクトの追加
インスタンス(仮想マシンおよびシステムコンテナ)は、MicroCloudでは「プロジェクト」単位で管理されています。「プロジェクト」を追加するには、画面左側に表示されているプロジェクト名をクリックし、「+Create project」をクリックします。
「Create a project」画面で、最低限必要なことは「Project name」でプロジェクト名を入力することです。
「Project name」を入力後、「Create」をクリックします。
プロジェクトが作成され、インスタンス画面が表示されます。もともとあった「default」プロジェクトでは、Nginxをインストールしたインスタンスが起動中ですが、新しく使ったプロジェクトには、他のプロジェクトで管理しているインスタンスが表示されていないことがわかります。
他のプロジェクトからインスタンスが見えないかどうか
他のプロジェクト、「z-project」のインスタンスが表示されていないことがわかります。
プロジェクト作成時に、既存のStorage Poolを選んだので、2つのプロジェクトでストレージを共有していることになります。ストレージを分けたい場合は、画面左側で、「Storage」の下の「Pools」をクリックしましょう。
画面右上の「+Create pool」をクリックして、各プロジェクトで使用するstorage poolを用意することができます。
そのほか
ログインできる証明書(MicroCloudでは、ユーザー名やメールアドレスの代わりに証明書でログイン)を増やす
画面左側の「Permissions」の下の「Identities」をクリックします。「Identities」画面で、「+Create TLS identity」で増やすことができます。
「Create identity」で証明書を作成する際に、権限(Auth groups)を選びます。全体の管理者を意味する「admins」以外を選ぶ場合は、事前にグループ作成が必要になります。
証明書に割り当てる権限(グループ)を増やす・編集する
証明書に割り当てる権限(MicroCloudでは、Group)は、画面左側の「Permissions」の下の「Groups」をクリックします。「Auth groups」画面で、「+Create group」で増やすことができます。
デフォルトでは、「admins」のgroupがあり、これはMicroCloudの管理者という位置づけです。複数人でUIを使う場合は、グループを新たにつくりましょう。