Congress最新動向: OpenStackプロジェクトのインテグレーションユースケースが続々登場
今回のAustin SummitレポートはCongressプロジェクト※1を取り上げます。
[1] https://wiki.openstack.org/wiki/Congress
OpenStack Congressは比較的新しいプロジェクトでBig Tentプロジェクトの一つです。2016年4月にリリースされたMitakaバージョンでは、3.0.0がリリースされました。CongressはGovernance as a Serviceと言われ、システムや企業がもつ様々なPolicyを定義することで、システムに対してPolicyによる制御を実現することを目指しています。
Congressはクラウド環境があるべき状態になっているかさまざまな情報を収集し、クラウドの運用者が定義したPolicyに違反していないか検査を行い、違反していた場合には違反内容の修正を実施します。今までなら、nova、neutron、keystoneなどの情報を突き合わせて判断をしなければならなかったことが、1つのPolicy記述言語 (Datalog) に記述するだけで、あとはCongressが各モジュールの情報を取得して動いてくれるのです。つまり、運用者は、DatalogでPolicyを定義するだけで、クラウド全体のガバナンスを管理できるようになります。それがCongressがGovernance as a Serviceと言われるゆえんです。Policyがどの様なものかは、以前の記事※2や今回のAustin Summitで多くのユースケースが議論されましたのでそちらをご覧ください。
[2] https://thinkit.co.jp/article/8381
本稿ではAustin SummitでNewtonリリース向けに議論された、Congressの最新動向についてレポートしていきたいと思います。
OpenStackプロジェクトとのインテグレーション
今回のAustin Summitでは、他のOpenStackプロジェクトと共にCongressで定義したPolicyを組み合わせて実現するユースケースとその実現方法について、多くの議論がされました。Congressが提供するGovernanceは前述の通り、「OpenStack内外の様々なサービスから情報を収集し、事前に定義したPolicyに違反していないかを判定します。判定の結果、Policyに違反していた場合、違反を更生するためのActionを実行する」というものです。そのため、Congressは他のサービスと連携することにより、その真価を発揮します。数多くのサービスと連携をするユースケースが提案されてきており、様々な領域のPolicy管理が提案および実現されてきていますので、その一端を紹介したいと思います。
アプリケーションSLAの管理
アプリケーションのSLAに必要なスケーラビリティやスループットなどの情報をCongressにPolicyとして設定をすることで、アプリケーションの開発者が柔軟にSLAを設定できるようにするユースケースです。
具体的にはMonascaのアラーム機能とCongressのPolicyを連携させることで、クラウド上にデプロイされたアプリケーションのSLAを確保します。Monascaプロジェクト※3はOpenStackの監視サービスで、監視したメトリックスを時系列に整理してアラームを上げる機能があります。そこで、Congressを利用して、ユーザが設定したPolicyをMonascaのアラーム情報に変換して設定し、アラームが上がった時、つまりPolicyの違反が発生した時に、アラームを取り除き常にアプリケーションのSLAが守られていることを目指しています。
[3] https://wiki.openstack.org/wiki/Monasca
本ユースケースは前回のOpenStack Summit Tokyoで提案され、MitakaリリースではCongressとMonasca間でデータのやり取りとPolicy違反時に対処を実施するMonasca driverが既に実装されています。ユースケースの実現に向けて不足している機能は、アラームのリアルタイム受信機能とPolicyからアラームへの変換機能の2つです。リアルタイム受信機能はMitakaで実装されたPush型Driverを用いて実現できることが確認されており、Congress内のPolicyをMonascaのアラームへ変換する機能をMonasca Driverへ実装することがNewtonに向けて提案されています。
Policyによる柔軟なNovaスケジューラの実現
Novaのスケジューラで一般的なFilterスケジューラにPolicyスケジューラを追加することで、OpenStackの運用者が簡単にスケジューラをカスタムできるといったユースケースです。
NovaのFilterスケジューラでは多くのFilterが用意されており、任意のFilterを組み合わせることで運用者が利用したいスケジューリングを実施できるようになっています。しかしながら、既存のFilterで実現できないスケジューリングを運用者が利用したい場合には、新しくFilterを開発する必要がありました。そこで、Congressで定義したPolicyをスケジューリングに利用することで、運用者が柔軟にスケジューラを設定できるようにします。
Novaプロジェクトでもスケジューラに関する議論が行われており、本ユースケースは同じくその中でも議論を続けていくことになっています。Newtonリリース以降ではPolicyを用いて運用者毎のスケジューリングが実施できるようになることが予想されます。
NFV領域での活用
OPNFV Doctorプロジェクト※4において、ハードウェアの故障を論理的なシステムの故障へ変換するユースケースが紹介されました。
[4] https://wiki.opnfv.org/display/doctor
DoctorプロジェクトはNFVを構成するインフラのFault Manangementを目的としたプロジェクトです。Zabbixなどの監視システムによって検知されたインフラの故障情報(ハイパーバイザやスイッチの故障情報)を元に、故障が影響する仮想マシンを特定し、故障に合わせた処理を実施する機能がCongressを用いて実現されています。Monascaインテグレーションで記載したPush型Driver用いることでこの機能が実現されており、Newtonリリースに向けて、本機能を実現しているDoctor用のDriverとそのPolicyがCongressプロジェクトに還元される予定です。
Congressのパフォーマンスと可用性の両立
Congressプロジェクトではスケーラビリティの向上を目的にLibertyリリース以降プロセス構成の変更を行ってきました。Mitakaリリースでは新構成のベースとなるコードが完成しています。しかし、マルチプロセス構成が実現されることにより、各プロセス間の通信スループットとデータの可用性確保が必要になるため、パフォーマンスと可用性を両立する方法について議論が行われました。
現在Policyの計算やPolicy違反への対処はインメモリで実施しているため、さまざまな実装方式の提案が行われました。pacemakerでプロセスの管理を実施しCongressプロセス間でデータの可用性を確保する方法、DBなどの永続化領域を利用した方法などが提案されています。
Summit期間中には議論が終わらなかったため、IRCやミーティングで議論が継続しています。Newtonリリースまでにはスケーラビリティを確保した新構成での動作が完成される見込みのため、近いうちにパフォーマンスと可用性を両立する方法も合わせて確立されることが予想されます。
おわりに
Congressプロジェクトはまだ知名度は低いですが、着実にユースケースが増えてきています。Congressは、Policyを管理する機能という特性上、各種サービスの縁の下の力持ち的な役割になります。まだ若いプロジェクトではありますが、今後各プロジェクトとのインテグレーションが進むにつれて、さまざまなユースケースでCongressが重要なポジションになっていくと予想されます。
せっかくの機会ですので、これを機にCongressを利用してみて気になるバグや欲しい機能についてコントリビューションしてみてはいかがでしょうか。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Congress最新動向:OpenStackでセキュリティやコンプライアンスを守る仕組みとは?
- Nova最新動向:スケジューラ、セル、ライブマイグレーションの改善は継続、他のプロジェクトとの連携が課題に
- Novaの最新情報:Placement機能の発展と利用拡大、大規模な環境への適応
- Nova最新動向:スコープを広げず安定性と機能性を追求
- Swift最新動向:Go言語実装と暗号化が導入間近。File Systemインテグレーションがキーに!
- OpenStackのPTLに聞いたOpenStackコミュニティの面白さ、難しさ
- 「OpenStack Summit May 2015 Vancouver」レポート #4(デザインサミットセッション)
- Ironic最新動向:待望のマルチテナント対応が視野に。ストレージや運用自動化も進展
- OpenStack運用者の活躍の場:OpsMeetup
- コンテナ連携が進むOpenStack