Apache CloudStack: OpenStackが重すぎる場合のプライベートクラウド構築の「救世主」

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

仮想化基盤が制御不能なほど「肥大化」し始めたら

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つの重要な経験則を得ました:

  1. 共有ストレージを優先する: プライマリストレージにはNFSまたはCephを使用してください。ホストにハードウェア障害が発生した場合、CloudStackは30秒以内に別のホスト上でVMを自動的に移動・再起動します。
  2. システムVM(System VM)に注意を払う: すべてのテンプレートとコンソールは、2つのシステムVM(SSVMとCPVM)を経由して動作します。コンソール画面が表示されない場合は、これら2つのVMのネットワーク状態をすぐに確認してください。
  3. MTU設定: VXLANを使用する場合、VMのMTUを1450に下げてください。これにより、パケットのカプセル化ヘッダーによる容量増加に伴うパケットロスを防ぐことができます。

CloudStackは、私の労働を大幅に解放してくれました。virshコマンドを延々と打ち込む代わりに、IP割り当てから帯域制限まで、すべてが数回のクリックで完了します。Proxmoxでは物足りず、OpenStackは重すぎると感じるなら、CloudStackを試してみてください。これは、真に実用的なIaaSソリューションです。

Share: