第2回 Cloudifyとは
本コラムでは、オーケストレーション技術について解説していきます。第2回では、TOSCAを活用したオーケストレーションフレームワークCloudifyについて、その概要を解説します。
Cloudifyとは
概要
Cloudifyとは、Cloudify Limited社によって開発されたオープンソースのクラウドオーケストレーションフレームワークです。Cloudifyは、さまざまなプラグインを組み合わせることで、クラウド上のアプリケーションのインストール/設定/アンインストールから、モニタリングの設定、自動スケーリング/自動ヒーリングの設定までをTOSCAベースのシンプルなモデルに集約し、システムの構築から運用までの一元的な自動化(=オーケストレーション)を実現します[図1 参照]。
Cloudifyを採用することにより、これまで人手で行ってきた作業をモデルとして定義(=コード化)できるため、人為的ミスの削減による品質向上や運用部門の集約による運用コスト削減などが期待されます。
図1. Cloudify利用イメージと特長
Cloudifyの構成
CLI(Command Line Interface)とManager
Cloudifyは、Cloudify CLI(クライアント)とCloudify Manager(サーバー)から構成されています。CLIは、ローカルマシン上におけるワークフローの実行、およびManagerのリモート制御に使用されます。Managerは、複数のコンポーネントを活用することでオーケストレーションを実現します[表1 参照]。
CLIとManagerはインストーラーが個別に提供されているため、Cloudifyの運用体制としては、オペレーター側はCLIのみを使用し、システム管理者側はManagerを管理するという役割分担が想定されます。
コンポーネント | 概要 | 役割 |
---|---|---|
Nginx | Webサーバー | CloudifyのRESTサービスの提供(プロキシ機能)、およびCloudifyのリソース管理(ブループリントやエージェントパッケージなど)に使用されます。 |
Gunicorn | Webサーバー | CloudifyのRESTサービスの提供に使用されます。 |
Flask | Webフレームワーク | CloudifyのRESTサービスのフレームワークとして採用されています。 |
PostgreSQL | データベース | ユーザー、ブループリント、デプロイメント、ログ・イベントなどの蓄積、およびレプリケーションに使用されます。 |
RabbitMQ | メッセージキューイング (ブローカー) |
デプロイメント、ログ・イベント、メトリクスに関するメッセージの管理に使用されます。 |
Logstash | ログマネージャー | RabbitMQからのログ・イベントメッセージの取得、およびPostgreSQLへのインデックスの作成に使用されます。 |
Riemann | イベントストリーム (ポリシーエンジン) |
RabbitMQのメトリクスメッセージに応じて、イベント処理(Cloudifyのワークフローなど)を実行させます。 |
Celery | タスクワーカー | RabbitMQからのデプロイメントメッセージの取得、およびワークフローの実行に使用されます。 |
InfluxDB | メトリクスデータベース | メトリクスメッセージの蓄積と可視化に使用されます。Grafanaなどの多機能なモニタリングツールと連携することもできます。 |
Cloudify Stage | ユーザーインターフェース | GUIベースでCloudifyを操作する際に使用されます。 |
Cloudify Composer | ブループリントGUIエディタ | GUIベースでブループリントを編集する際に使用されます。 |
- ※ブループリント … システム構成ファイル。TOSCAベースのYAML形式で記述します。ネットワークアドレスなどを変数として定義することで、システム構成を再利用することができます。また、プラグインを使用することで、外部サービスの機能をブループリントに定義できるようになります。
- ※デプロイメント … 実行可能状態のシステム構成情報。ブループリントの変数に値を代入することで作成できます。
- ※ワークフロー … ライフサイクル処理の実行単位。標準ではインストール、アンインストール、スケール、ヒールなどが用意されています。Pythonを用いて独自のワークフロー(ワークフロープラグイン)を作成することもできます。
- ※メトリクス … モニタリングやイベント処理に利用される数値データ。CPU使用率、メモリ使用率などが該当します。CloudifyではDiamondプラグインを用いたメトリクス収集がサポートされています。
参照
- Overview of Open Source Components in Cloudify
http://docs.getcloudify.org/4.3.0/manager_architecture/components/
Cloudifyの機能
機能一覧
Cloudifyはオーケストレーションを実現するための機能として、ブループリント管理、デプロイメント管理、ワークフロー制御、プラグイン、スクリプト(環境構築)、エージェントなどの機能を持っています。また、オーケストレーションを支援するための機能として、ユーザー管理、テナント管理、クラスタ構成(High Availability)、Composer(ブループリントのGUIエディタ)などの機能を持っています。
製品のエディション
Cloudifyはコミュニティ版とエンタープライズ版が提供されており、コミュニティ版は使用できる機能に制限があります。エンタープライズ版のみの機能は、テナント管理やクラスタ構成(High Availability)、Composer(ブループリントGUIエディタ)です。部門横断型プロジェクトや商用サービスをご検討中の方には、テナント管理やクラスタ構成機能を持ち、その他技術サポートも含まれているエンタープライズ版がお勧めです。
機能 | 概要 | コミュニティ版 | エンタープライズ版 |
---|---|---|---|
オーケストレーションを実現するための機能 | |||
ブループリント管理 | システム構成ファイル(ブループリント)を管理する機能。 | ○ | ○ |
デプロイメント管理 | 実行可能状態のシステム構成情報(デプロイメント)を管理する機能。 | ○ | ○ |
ワークフロー制御 | デプロイメントごとのライフサイクル処理(ワークフロー)を制御する機能。 標準では、Install/Uninstall/Scale/Heal/Updateなどが用意されています。 |
○ | ○ |
プラグイン | Cloudifyの拡張機能。 vSphere、OpenStack、AWS、Azure、GCP、Kubernetesなどが存在しており、Pythonを用いて、外部サービス連携用のプラグインやワークフロー用のプラグインを独自に作成できます。 |
○ | ○ |
スクリプト(環境設定) | サーバーやネットワーク機器に対して環境設定を行う機能。 Fabric(SSH)、Ansible、Chef、Puppetなどのプラグインを使用して、任意のコマンドや任意のスクリプトファイルを実行できます。 |
○ | ○ |
エージェント | アプリケーション上において、スクリプトの実行やモニタリングのログ/メトリクス収集を実行する機能。 | ○ | ○ |
オーケストレーションを支援するための機能 | |||
Stage(WebUI) | CloudifyをWebUIから制御するための機能。 ブループリントのアップロードから、デプロイメントの作成、ワークフローの実行に加えて、ユーザー管理やテナント管理が実行できます。 |
○ | ○ |
ユーザー管理 | Cloudifyのユーザーを管理する機能。 ユーザーの作成/削除/グループ化機能を持ち、LDAPとActiveDirectoryに対応しています。ロールベースアクセス制御を使用して、Cloudifyで利用できる機能に制限をかけることもできます。 |
○ | ○ |
テナント管理 | テナント単位で、ユーザー、ブループリント、デプロイメントなどを管理する機能。 | × | ○ |
クラスタ構成 (High Availability) |
Cloudify Managerを冗長化する機能。 ホットスタンバイ方式を採用しており、応答失敗時にアクティブ端末が動的に切り替えられます。 |
× | ○ |
Composer (ブループリントGUIエディタ) |
ブループリントをGUIから作成/編集するための機能。 ドラッグ&ドロップによる追加/配置、入力ボックスによる値の設定などに対応しており、GUIベースでブループリントを作成/編集することができます。 |
× | ○ |
Cloudifyのプラグイン
公式プラグインと独自プラグイン
2018年3月時点では、公式プラグインとして、vSphere、OpenStack、AWS、GCP、Azure、Kubernetes、Fabric(SSH)、Diamond(モニタリング)などがサポートされています[図 2参照]。クラウドサービスとの連携からモニタリングツールとの連携までがサポートされており、これらのプラグインを使用することにより、ブループリントを記述するだけで、オーケストレーションを実現することができます。
また、Cloudfiyは、Pythonを用いて独自プラグインを作成することができます。独自プラグインを使用することにより、Cloudifyにサポートされていない外部サービスや製品のオーケストレーションを実現することができます。独自プラグインの作成では、参考にできるテンプレートや公式プラグインがGithub上にオープンソースとして公開されているため、比較的容易に独自プラグインを実装することができます。
図2. Cloudifyの公式プラグイン一覧(2018年3月時点)
- Plugins | Cloudify https://cloudify.co/plugins
- Github | cloudify-cosmo https://github.com/cloudify-cosmo
CloudifyのVNFオーケストレーション
VNF連携の取り組み
Cloudify社は、Cloud Native VNF(Virtual Network Function)という取り組みにおいて、クラウド上のVNFの構築から運用までの自動化を推進しています。2018年3月時点では、Intel、VMware、Versa、Brocade、Fortinet、AudioCodesなどがCloud Native VNFパートナーになっています。[図3 参照]
図3. Cloudify Native VNFパートナー(2018年3月時点)
現在、Cloudify社は、Metaswitch、Netnumber、ASOCs、6Wind、FortinetなどのVNFベンダーと連携して、複数のネットワークサービスを組み合わせたソリューション提供体制の整備を進めています。既に、F5、Athonet、Cataleya IMS、Mavenir vEPC、VersaなどのVNFベンダーでは、Cloudifyをサポートまたはサポートを追加中です。今後も、Cisco CSR、 Juniper CPE、 Palo Alto firewallとの連携を進める予定となっており、CloudifyをサポートしたVNFは増えていくと考えられます。
参照
- Cloud Native VNF Partners | Cloudify
https://cloudify.co/cloud-native-vnf-partners/ - The Cloud Native VNF Explosion at MWC18 | Cloudify
https://cloudify.co/2018/02/23/cloud-native-vnf-explosion-mwc18/
Cloudifyの今後
更新頻度
Cloudifyは4~6カ月ごとにマイナーバージョンが更新され、操作性の改善や新機能の追加が続々と実施されています。Cloudifyの詳細な改修状況については、リリースノート、またはロードマップをご確認ください。2018年3月時点では、Cloudifyの最新バージョンは、エンタープライズ版がver.4.3.0、コミュニティ版がver.18.2.28です。
参照
- Download Cloudify | Cloudify https://cloudify.co/download/
- Roadmap | Cloudify https://cloudify.co/roadmap/
発展性
Cloudifyの特長は、
- (1)オープンソース(Apache License 2.0)による開発
- (2)システムの構築から運用までを一元管理する設計思想
- (3)クラウドサービスとネットワーク装置の制御の両立
にあると考えられます。
Cloudifyは、機能修正や機能拡張を柔軟に実施できるオープンソースのオーケストレーションフレームワークになっており、クラウドロックインや基盤ベンダーロックインを回避し、事業継続性の高いサービスを構築する手段として、有望な製品だといえます。
システムの構築・運用において、人為的ミスの削減や運用部門の集約化などをご検討中の方は、Cloudifyの採用をご一考いただければ幸いです。
Writer Profile
ソリューション事業部
SDIソリューションビジネスユニット SDIグループ
赤木 信也
Tweet