OpenStack Ironicによるベアメタル・プロビジョニング 第1回 #openstack
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
ベアメタル・プロビジョニングとは
ベアメタルは「空の物理サーバ」と呼ばれ、仮想マシンと区別する際によく使われます。
仮想マシンはホストマシンのリソースがあれば大量に構築することができ、スケールアップやライブマイグレーションなどの拡張性や機能が容易に利用できるといった利点があります。ですがハイパーバイザを経由することからDBサーバなどの高負荷な用途においてはオーバーヘッドが大きく、仮想マシンのスペックがよくても思ったほど性能が出ない場合があります。
この弱点をカバーするのがベアメタルです。
現時点では前述したような仮想マシンの利点を得ることは難しいですが、高パフォーマンスを得るためにはベアメタル上に展開したほうが有利です。仮想マシンと同様の手順でベアメタル上にシステムを構築することをベアメタル・プロビジョニングといいます。
OpenStack Ironicとは
OpenStack Nova(インスタンス管理) のベアメタル・プロビジョニング機能が新たなプロジェクトとして派生したのが OpenStack Ironicです。Kiloリリース(2015.1)にて正式に採用予定のコンポーネントです。Junoリリースにおいては開発版のIronicを使用することができます。
IronicのDriver
Ironicがベアメタルノードとやり取りするための手段としてDriverが開発されています( https://wiki.openstack.org/wiki/Ironic/Drivers )。たとえば以下のようなものがあります。
- pxe_ipmitool
Junoリリース時点で公式インストールガイドに記載されているDriverです。IPMI+PXE(iPXE)+iSCSI+ddコマンドを使用してプロビジョニングを行います。
- agent_ipmitool
Kiloリリースにて標準で使用されることが予定されているDriverです。IPMI+PXE(iPXE)+Ironic Python Agentを利用してプロビジョニングを行います。
またサードパーティ製DriverとしてHP iLOを利用した”iscsi_ilo”、”agent_ilo”などもあります。使用するにはディスクイメージ用のTemporary URL発行のためにOpenStack Swift(オブジェクトストレージ)が必須となっています。
今回は検証時に公式インストールガイドに掲載されていたpxe_ipmitoolを使用しました。
Ironic Python Agent
公式ドキュメント( https://wiki.openstack.org/wiki/Ironic-python-agent )によれば、
- ブートローダのインストール
- OSイメージのインストール
- HDDの削除
- RAIDの設定
プロビジョニングの流れ
Driverに”pxe_ipmitool”を使用した場合の流れを説明します。
コンポーネントはNovaの他にNeutron(ネットワーク管理)、Glance(イメージ管理)が使用します。
- Nova - インスタンス作成
- Neutron - DHCP情報の更新、IPアドレスの割り当て
- Glance - ディスクイメージを提供、IronicがTFTPのディレクトリにダウンロード
- Ironic - ベアメタルノードの電源ON。デプロイ用ミニOSをPXEブートさせる。ノードへiSCSI接続後、ディスクイメージをddコマンドで書き込み
- 以降、PXEにてOSのKernelとRamdiskが配布され、ブート後HDDから読み込み開始
事前準備
- ベアメタルノードと管理ホスト間でフラットネットワークを構築(VLANやGREだとPXEのパケットが通らないため)
- 使用するディスクイメージを作成
- デプロイ用ミニOSのイメージ作成(一度のみ)
- ベアメタルノードを登録
- PXE, TFTPサーバを構築
次回以降は
実際に行ったIronic 導入手順をご紹介いたします。