Ironic最新動向:待望のマルチテナント対応が視野に。ストレージや運用自動化も進展

2015年11月26日(木)
重松 光浩高田 唯子
今回はIronicの新機能の現状とMitakaに向けた動きを中心に以下ではとりあげます。

Ironicはベアメタルマシンをプロビジョニングするためのコンポーネントです。Ironicを使えば、NovaでVMインスタンスを制御するのと同じようにベアメタルマシンを制御することができます。ベアメタルの利点は、ハイパーバイザーのオーバーヘッドが無く高性能を出しやすいこと、リソースを占有できるので安定した性能を出せることにあります。このような理由から、ベアメタルを提供するサービスは特に企業やテレコムのプライベートクラウドの分野でニーズが高く、注目されているプロジェクトです。

Ironicは、バンクーバのデザインサミットの議論では、新機能の開発が優先されました。そのバランスをとったのか、今回の東京サミットでは、プロセスを定めたり、テスト品質を高めるための、非機能要件の議論に多くの時間が割かれました。新機能については、バンクーバでの議論をベースとして取り組むことになりました。

読者の皆様の関心はむしろIronicの新機能にあると思いますので、今回はIronicの新機能の現状とMitakaに向けた動きを中心に以下ではとりあげます。なおデザインサミットで議論された議論の全体は以下に記されています。

https://etherpad.openstack.org/p/summit-mitaka-ironic

テナントネットワーク分離機能

Ironicでは、これまで利用できるネットワークに制約があり、すべてのベアメタルノードを単一のネットワーク(フラットネットワーク)に接続する形しかとれませんでした。そのため、マルチテナントで分離されたネットワークを作ることはできませんでした。これはIronicがHPCでの利用やインフラのデプロイなど単一テナントで十分な環境を最初のターゲットとしていたためでしたが、マルチテナントのクラウドで利用したいという要望は以前からあり、ネットワーク分離機能の実現が望まれてきました。

それを受けてバンクーバサミットにおいてNeutronチームと合同での議論がもたれ、それ以降優先度を上げて取り組まれてきました。その結果、Neutron ML2を活用したマルチベンダ対応可能な仕様の議論も完了し、現在コードのレビュー中となっています。今回の東京サミットで引き続き優先的に取り組まれることが決まりましたので、Mitakaサイクルでは長年期待されてきたテナントネットワーク分離機能が実現する見込みです。

この機能についてカンファレンスでセッションがあり、どういうやり方で実現しているか、詳細な説明がありました※1。ポイントは、ベアメタルマシン準備に伴う接続ネットワークの切り替えと、Neutronへのスイッチ接続情報の通知の2点です。

※1 https://www.openstack.org/summit/tokyo-2015/videos/presentation/tenant-network-isolation-for-bare-metal-deployments-with-neutron

まず、ベアメタルマシン準備に伴う接続ネットワークの切り替えについてです。ベアメタルマシンは、テナントへの払い出し時に、VMのようにいきなりテナントネットワークに接続することができず、専用のネットワーク(Provisioningネットワーク)に接続してベアメタルマシンのOSの起動を行う必要があります。ベアメタルマシンの準備ができた時点で、テナントネットワークに接続を切り替えます。このネットワーク切り替えはIronicが直接Neutronを制御して行います。同様に、ベアメタルマシンの利用が終了した際には、Cleaning用のネットワークに接続を切り替えて、ベアメタルマシンの物理的な設定等の消去を行います。

次に、2点目の Neutronへのスイッチ接続情報の通知です。Neutron側でネットワーク分離を行うためには、ベアメタルマシンがどのスイッチのどのポートに接続されているかを知る必要があります。スイッチとベアメタルマシンの接続情報はIronicのDBに保持しておき、Neutronに新たに定義されたAPIを通じて、メタルマシンの払い出し時にこの情報をNeutronに通知します。

現状はIronicのDBへのスイッチ接続情報の登録は手動で行う必要がありますが、Future Workとして、後述するIronic Inspectorで自動認識することが計画されています。

現状このネットワーク分離機能はレビュー段階で、AristaとHPのスイッチが対応しています。Mitakaでの正式リリースに向けて対応スイッチが増えていくと予想されます。

ストレージ連携機能

Cinderボリュームからベアメタルを起動する機能です。従来よりIronicからCinderボリュームを利用する機能が強く望まれており、一昨年冬ごろに議論がはじまりましたが、ずっと進捗が思わしくありませんでした。バンクーバサミットにおいてCinderチームと共同での議論がもたれ、ついにストレージ連携機能の実現に向けての取り組みが加速してきました。

現状では以下の3機能を組み合わせることでストレージ連携を実現できることが分かってきており、仕様とあわせてPoCコードも用いて議論が進められています※2

※2 https://www.openstack.org/summit/tokyo-2015/videos/presentation/ironic-and-cinder-integration

  • Ironic DB上にノードとボリュームをひもづけて格納する機能(Ironic)
  • ボリュームからの起動を実現するBootドライバ機能(Ironic)
  • Cinderボリュームからベアメタルを起動するためのNovaドライバのサポート機能(Nova)

Mitakaサイクルでは、これら3機能が実装され、ストレージ連携機能の実現が期待されます。

物理ノード自動検知機能(Ironic Inspector)

Ironicには、Ironic Inspector※3というサブプロジェクトがあります。Ironic Inspectorは、物理ノードの情報を自動的に収集してIronicのデータベースに格納するIronicのプラグインです。 従来手入力で行っていた物理ノードの情報のデータベース登録を自動化することで、効率化、ヒューマンエラー削減を目的としています。Kiloサイクルでプロジェクトが設立され、LibertyサイクルでOpenStack公式プロジェクトになりました。

※3 https://github.com/openstack/ironic-inspector

現状のIronic Inspectorでは、物理ノードの情報(CPUアーキテクチャやCPU数、メモリサイズ、IPアドレス等)は自動収集でき、データベースへ格納されますが、その他の情報(ドライバ、MACアドレス等)の登録は従来通り手入力によって行わなければならない状態です。

そこで、Mitakaサイクルでは、物理ノード情報登録の完全自動化を目的として、物理ノード自動検知機能について議論を行いました。これは、物理ノードを特定のネットワークに接続した状態で電源が投入されると、物理ノードの情報を収集し、Ironicのデータベースに格納する機能です。 これにより、物理ノードの電源を入れるだけで、今まで手入力しなければならなかった情報も含め、そのノードの全ての情報が自動的にデータベースに格納されるようになります。具体的には図のようなシーケンスになります。

Inonic Inspectorの動作シーケンス

デザインサミットでは処理フロー等、概要レベルの議論を行い、BMC(Baseboard Management Controller;オンボードサーバ管理チップ)の認証情報の扱い等の詳細については、より多くの開発者およびユーザからユースケースや要求を吸い上げるためにMLで継続して議論を行うことになりました。

上述の「テナントネットワーク分離機能」で必要となるスイッチとの接続情報(スイッチのIDやスイッチの接続ポートのID等)についても、Ironic Inspectorで自動収集し、データベースに格納する機能が実装される予定です。接続情報は、LLDP(Link Layer Discovery Protocol)パケットを収集することで実現されます(LLDP はスイッチ等のネットワーク機器情報を近隣のノードに通知するのに使用される汎用的なプロトコルです)。

状態マシン:レスキュー状態の追加

Ironicの状態マシンについては、返却後に自動ディスク削除する「クリーニング」状態やノードの状態を自動的に取得/更新する「検査」状態がKiloリリースで実現されました。Libertyリリースでは、それに加えて、新規にマシン追加された状態である「エンロール」状態、ワークロードの合間にRAID設定やファームウェアアップデートを行う「ザッピング」状態が追加されました。

Mitakaにむけては 「レスキュー」状態が優先的に取り組まれることになりました。何か問題が発生した場合にもシステム修復する機能が実現することが期待されます。

Mitaka リリースで想定される Ironic ベアメタルノードの状態マシン(A proposal for the New Ironic State Machineより)

まとめ

これまでIronicは単一テナントの限定されたユースケースでしか使いづらいと言われてきましたが、テナントネットワーク分離機能を始めストレージや運用管理の自動化機能の実装が進んで来ています。次のMitakaリリースでは、これらの機能が正式に取り込まれ、マルチテナントのクラウドサービスで使えるレベルになって来ると期待できます。国内でもベアメタルの要望は強いと言われています。Ironicの事例も期待されます。今後の動向に注目です。

初出時に一番最後の画像が間違っておりました、お詫びして訂正致します。2015/11/30 編集部

NTT ソフトウェアイノベーションセンタ
NTTソフトウェアイノベーションセンタに勤務し、OpenStack Ironicのクロスプロジェクトリエゾン(ドキュメンテーション/neutron連携)。2015年よりOpenStack Ironicの機能評価などに携わり、OpenStack環境でのベアメタルクラウド実現に向けて研究開発にとりくんでいる。
NEC BI統括ユニット
2013年よりOpenStack開発コミュニティでの活動を開始し、現在「Ironic」および「Ironic Inspector」プロジェクトを中心に開発活動を行っている。「Ironic Inspector」のコアデベロッパー。

連載バックナンバー

クラウドイベント

Neutron最新動向 : 活発なサブプロジェクトに注目

2015/12/25
OpenStackの各プロジェクトについて紹介をしてきましたが、最後はNeutronです。
クラウドイベント

Nova最新動向:スコープを広げず安定性と機能性を追求

2015/12/16
Novaのプロジェクトがどう運営されていくかはOpenStack全体にとって重要なポイントであり続けると思います。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています