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?

中規模プライベートクラウドまで拡張できるMicroCloudを、IBM Cloud Virtual Server for VPCに入れてみた

Last updated at Posted at 2025-10-02

概要

この文書では、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と仮想サーバーを用意します。予算に余裕があれば、ベアメタルサーバーでも構いません。
image.png

MicroCloudの最小構成は、シングルノード(サーバー1台)でvCPU2とRAM8GBの割り当てが必要です。OS(Image)は、Ubuntu 24.04(2025年9月時点)を指定します。Floating IPを割り当てます。
image.png

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

このようになっています。
image.png

仮想サーバーにSSH接続

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

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

実行結果
image.png

microcephの実行状況を確認するコマンドを実行します。

sudo microceph cluster list

実行結果
image.png

microovnの実行状況を確認するコマンドを実行します。

sudo microovn cluster list

実行結果
image.png

クラスター構成を確認するコマンドを実行します。

sudo lxc cluster list

実行結果
image.png

UI(セルフサービスダッシュボード)のセットアップ

Webブラウザは、Chrome , Micrososft Edge , Firefox に対応しています。

ログインするための証明書を作成

MicroCloudでは、UIにアクセスするには、証明書を使ってログインします。一般的には、ユーザー名やメールアドレスとパスワードを使ってログインするわけですが、MicroCloudでは証明書を使ってログインします。

Webブラウザで、「sudo lxc cluster list」の実行結果に表示されました、URLにアクセスします。
表示内容のとおり、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

画面に指示されたコマンドを実行し、トークンの文字列を取得します。

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」をクリックします。
image.png

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

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

MicroCloudでは、VMとコンテナ(システムコンテナ)を作成することができます。LXDでは、どちらもインスタンスと言います。VMはKVMベースです。システムコンテナは、VMのように操作することができ、SSHやsystemdなどを使うことができます。

「MicroCloud」の画面の画面左側で「Instances」をクリックします。
「Instances」の画面で、「Create instance」をクリックします。
画面中央の「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

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

インスタンス名をクリックします。「Overview」タブにインスタンス情報が表示されます。
image.png
「Terminal」タブから、インスタンスにコマンドを入力し実行することができます。
image.png

ターミナルからコマンドを実行することができます。動作確認として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」をクリックします。
image.png

次のように各項目に値を入力します。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」と表示されている緑のボタンをクリックします。
image.png

Proxy設定により、http://仮想サーバーのFloating IP にアクセスしたとき、「Listen(MicroCloudをインストールしたサーバー)」を介して、Proxy設定により「Connect(インスタンス)」が呼び出され、Nginxで運用しているWebサーバーにつながるという動きになります。
image.png

これで、インスタンス作成とアプリケーションを動かすことが確認できました。

プロジェクト機能を用いた、インスタンス管理

プロジェクトの追加

インスタンス(仮想マシンおよびシステムコンテナ)は、MicroCloudでは「プロジェクト」単位で管理されています。「プロジェクト」を追加するには、画面左側に表示されているプロジェクト名をクリックし、「+Create project」をクリックします。
image.png

「Create a project」画面で、最低限必要なことは「Project name」でプロジェクト名を入力することです。
「Project name」を入力後、「Create」をクリックします。
image.png

プロジェクトが作成され、インスタンス画面が表示されます。もともとあった「default」プロジェクトでは、Nginxをインストールしたインスタンスが起動中ですが、新しく使ったプロジェクトには、他のプロジェクトで管理しているインスタンスが表示されていないことがわかります。
image.png

他のプロジェクトからインスタンスが見えないかどうか

新しくつくったプロジェクトで、インスタンスを起動します。
image.png

画面左側で、プロジェクトを「default」に変更します。
image.png

他のプロジェクト、「z-project」のインスタンスが表示されていないことがわかります。
image.png

プロジェクト作成時に、既存のStorage Poolを選んだので、2つのプロジェクトでストレージを共有していることになります。ストレージを分けたい場合は、画面左側で、「Storage」の下の「Pools」をクリックしましょう。
画面右上の「+Create pool」をクリックして、各プロジェクトで使用するstorage poolを用意することができます。
image.png

そのほか

ログインできる証明書(MicroCloudでは、ユーザー名やメールアドレスの代わりに証明書でログイン)を増やす

画面左側の「Permissions」の下の「Identities」をクリックします。「Identities」画面で、「+Create TLS identity」で増やすことができます。
「Create identity」で証明書を作成する際に、権限(Auth groups)を選びます。全体の管理者を意味する「admins」以外を選ぶ場合は、事前にグループ作成が必要になります。

証明書に割り当てる権限(グループ)を増やす・編集する

証明書に割り当てる権限(MicroCloudでは、Group)は、画面左側の「Permissions」の下の「Groups」をクリックします。「Auth groups」画面で、「+Create group」で増やすことができます。
image.png
デフォルトでは、「admins」のgroupがあり、これはMicroCloudの管理者という位置づけです。複数人でUIを使う場合は、グループを新たにつくりましょう。

参考資料

1
0
0

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?