仮想化基盤が制御不能なほど「肥大化」し始めたら
Proxmox上で10〜15台程度のVMを運用しているホームラボなら、すべてが順調でしょう。しかし、その数が200台に増え、リソースの完全な分離を必要とする5〜7つの異なる開発チームに提供する場合を想像してみてください。この規模になると、手動でVMを作成したり、チームごとにVLANを構成したりするのは、運用上の悪夢となります。
最大の課題はマルチテナンシー(多重貸し出し)機能です。各チームが自らクォータ(割り当て量)を管理し、自分のパーティション内でVM作成やネットワーク設定を行える仕組みが必要です。個別のVM管理手法に固執し続けると、日々押し寄せるインフラサポートのチケット対応で、すぐに限界を迎えるでしょう。
OpenStackは本当に「理想の選択肢」か?
IaaS(Infrastructure as a Service)を構築する際、最初に思い浮かぶのはOpenStackでしょう。私もかつてこのツールで「社内AWS」を構築しようとしましたが、ある事実に気づきました。それは、OpenStackは非常に「習得が難しい」ということです。Nova、Neutron、Cinderといった数十のプロジェクトの集合体であり、非常に複雑なメッセージキューのネットワークを介して通信します。
OpenStackを安定して運用するには、常駐の専任エンジニアが少なくとも3人は必要です。中小規模のITチームにとって、このような肥大化したインフラ管理体制を維持することは、費用対効果が合いません。OpenStackは非常に強力ですが、人的リソースとハードウェアリソース(バックグラウンドサービスを実行するだけで最低64〜128GBのRAMが必要なことが多い)の代償が大きすぎます。
現在のプライベートクラウド手法の比較
インフラ自動化の課題を解決するために、通常3つの一般的な選択肢があります:
- Proxmox VE / ESXi: 従来の仮想化には最適ですが、エンドユーザー向けのセルフサービス機能には限界があります。大規模な詳細な権限設定やSDN管理は、バラバラになりがちです。
- OpenStack: すべての機能を備えていますが、設定が極めて困難です。安定性を維持するには、高度な管理スキルと非常に強力なハードウェアが必要です。
- Apache CloudStack: これこそが完璧な「中間地点」です。直感的なWebインターフェースを提供し、Compute、Storage、Network全体を集中管理できます。最も重要なのは、そのアーキテクチャがOpenStackよりもはるかに軽量であることです。
CloudStackの導入:実用的で堅牢
安定性を優先する場合、CloudStackはOpenStackの最良の代替案です。KVM、VMware、XenServerなどの複数のハイパーバイザーを、単一のダッシュボードから同時に管理できます。以下に、Ubuntu 22.04上でKVMを使用した基本的なCloudStackクラスターの構築方法を示します。
1. リソースの準備
少なくとも2台の物理ノード(または検証用のVM)を用意することをお勧めします:
- Management Server: 管理ダッシュボードとデータベースを実行(推奨構成:4 vCPU, 8GB RAM)。
- KVM Host: ユーザーのVMが実際に動作する場所(RAMとCPUが多いほど良い)。
後でトラブルにならないよう、各サーバーがネットワーク疎通しており、静的IPが割り当てられていることを確認してください。
2. 管理サーバーのインストール
まずは、システム設定全体を保存するためにMySQLをインストールする必要があります。
# システムの更新
sudo apt update && sudo apt upgrade -y
# MySQL Serverのインストール
sudo apt install mysql-server -y
# CloudStackがリモートからデータベースにアクセスできるようにする
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# bind-addressを0.0.0.0に変更
sudo systemctl restart mysql
その後、CloudStackの公式リポジトリを追加してインストールを進めます:
# CloudStack 4.18のリポジトリを追加
wget -O - http://download.cloudstack.org/release.asc | sudo apt-key add -
sudo add-apt-repository "deb http://download.cloudstack.org/ubuntu jammy 4.18"
# サーバーのインストール
sudo apt update
sudo apt install cloudstack-management -y
# データベースの初期化
sudo cloudstack-setup-databases cloud:password@localhost --deploy-as=root:root_password
3. KVMホスト(エージェント)の設定
VMを実行するノードに cloudstack-agent をインストールします。これはManagement ServerがKVMに命令を出すための橋渡し役となります。
sudo apt update
sudo apt install cloudstack-agent -y
# 制御ポートを開くためのLibvirt設定
sudo nano /etc/libvirt/libvirtd.conf
# 以下のパラメータが正しいことを確認:
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0
ネットワークリスニングモードを有効にするため、/etc/default/libvirtd ファイル内の libvirtd_opts 変数に -l フラグを追加することを忘れないでください。
4. Webインターフェース経由の設定
http://<管理IP>:8080/client にアクセスし、ユーザー名 admin、パスワード password でログインします。CloudStackはZone作成のウィザードを表示します。
CloudStackの階層構造は非常に論理的です:Zone(データセンター) > Pod(ラック列) > Cluster(ストレージを共有するサーバーグループ) > Host(物理マシン)。AWSのような柔軟なシステムを構築したい場合は、VLANやセキュリティグループを活用できる Advanced Networking モデルを選択することをお勧めします。
運用における「血肉となる」注意点
しばらくCloudStackを触ってみて、3つの重要な経験則を得ました:
- 共有ストレージを優先する: プライマリストレージにはNFSまたはCephを使用してください。ホストにハードウェア障害が発生した場合、CloudStackは30秒以内に別のホスト上でVMを自動的に移動・再起動します。
- システムVM(System VM)に注意を払う: すべてのテンプレートとコンソールは、2つのシステムVM(SSVMとCPVM)を経由して動作します。コンソール画面が表示されない場合は、これら2つのVMのネットワーク状態をすぐに確認してください。
- MTU設定: VXLANを使用する場合、VMのMTUを1450に下げてください。これにより、パケットのカプセル化ヘッダーによる容量増加に伴うパケットロスを防ぐことができます。
CloudStackは、私の労働を大幅に解放してくれました。virshコマンドを延々と打ち込む代わりに、IP割り当てから帯域制限まで、すべてが数回のクリックで完了します。Proxmoxでは物足りず、OpenStackは重すぎると感じるなら、CloudStackを試してみてください。これは、真に実用的なIaaSソリューションです。

