OpenStack プロジェクトは、あらゆる種類のクラウド環境をサポートする、オープンソースのクラウドコンピューティングプラットフォームです。シンプルな実装、大規模なスケーラビリティ、豊富な機能を目指しています。世界中のクラウドコンピューティング技術者がプロジェクトに貢献しています。
OpenStack は、補完関係にある様々なサービスの組み合わせで Infrastructure-as-a-Service (IaaS) ソリューションを提供します。各サービスは application programming interface (API) を提供しており、簡単に連携できるようになっています。
このガイドでは、以下の主要な OpenStack サービスのデプロイメントを、実用的なサンプルアーキテクチャーを使って、順を追って説明します。内容は、Linux の経験は十分にあるが、OpenStack は初めてというユーザーを対象にして書かれています。
サービス |
プロジェクト名 |
説明 |
---|---|---|
Dashboard | Horizon | インスタンスの起動、IP アドレスの割り当て、アクセス制御の設定など、裏で動作する OpenStack サービスを操作するための、ウェブベースのセルフサービスポータルを提供します。 |
Compute | Nova | OpenStack 環境でコンピュートインスタンスのライフサイクルを管理します。要求に応じて仮想マシンの作成、スケジューリング、破棄などに責任を持ちます。 |
Networking | Neutron | OpenStack Compute などの他の OpenStack サービスに対して、Network-Connectivity-as-a-Service をできるようにします。ユーザーがネットワークやそれらへの接続を定義するための API を提供します。数多くの人気のあるネットワークベンダーやネットワーク技術に対応した、プラグイン可能なアーキテクチャーが採用されています。 |
ストレージ |
||
Object Storage | Swift | RESTful、HTTP ベースの API 経由で任意の非構造データオブジェクトを保存および取得します。データ複製による高い耐障害性とスケールアウトアーキテクチャーを持ちます。その実装は、マウント可能なディレクトリを持つファイルサーバーとは違っています。オブジェクトやファイルは複数のドライブに書き込まれ、データがサーバクラスター間で複製されていることが保証されます。 |
Block Storage | Cinder | 永続的なブロックストレージを、実行中のインスタンスに対して提供します。プラグイン可能なドライバーアーキテクチャーにより、ブロックストレージデバイスの作成と管理が容易になります。 |
共有サービス |
||
Identity service | Keystone | 他の OpenStack サービスに対して認証および認可サービスを提供します。すべての OpenStack サービスに対してエンドポイントのカタログを提供します。 |
Image service | Glance | 仮想マシンディスクイメージを保存および取得します。OpenStack Compute がインスタンスの配備中に使用します。 |
Telemetry | Ceilometer | 課金、ベンチマーク、スケーラビリティ、統計などの目的で、OpenStack クラウドの監視と計測を行います。 |
上位レイヤーサービス |
||
Orchestration | Heat | ネイティブの HOT テンプレート形式または AWS CloudFormation テンプレート形式を使用して、複数の複合クラウドアプリケーションを統合します。OpenStack ネイティブの REST API および CloudFormation 互換のクエリー API を提供しています。 |
こららの OpenStack サービスの基本的なインストール、設定、運用、トラブルシューティングができるようになったら、本番のアーキテクチャーを使ったデプロイメントに向けて以下のような点を検討するとよいでしょう。
パフォーマンス要件と冗長性要件を満たすよう、必要なコアサービスとオプションサービスを判断して実装します。
ファイアウォール、暗号化、サービスポリシーなどの方法を使用して、セキュリティーを向上させます。
本番環境の配備および管理を自動化するために、Ansible、Chef、Puppet、Salt などのデプロイツールを導入してください。
サンプルアーキテクチャーでは、仮想マシン すなわちインスタンスを起動するために、少なくとも 2 つのノード (ホスト) を必要とします。Block Storage や Object Storage などのオプションサービスを使う場合には、追加のノードが必要です。
このサンプルアーキテクチャーは、以下の点が最小限の本番アーキテクチャーと異なります。
Networking エージェントは、専用のネットワークノードではなく、コントローラーノードで動作します。
プライベートネットワークのオーバーレイ (トンネル) 通信は、専用ネットワークではなく管理ネットワークを通過します。
本番環境のアーキテクチャーの詳細は、Architecture Design Guide、Operations Guide、Networking Guide を参照してください。
ハードウェア要件
コントローラーノードでは、Identity サービス、Image サービス、Compute の管理コンポーネント、Networking の管理コンポーネント、さまざまな Networking エージェント、ダッシュボードが実行されます。SQL データベース、メッセージキュー、NTP のようなサポートサービスも含まれます。
オプションとして、コントローラーノードは、Block Storage、Object Storage、Orchestration、Telemetry サービスの一部も実行します。
コントローラーノードは、少なくとも 2 つのネットワークインターフェースが必要です。
コンピュートノードでは、インスタンスの操作を行う Compute の ハイパーバイザー 部分を実行します。デフォルトでは、Compute は KVM ハイパーバイザーを使用します。コンピュートノードでは、 Networking サービスのエージェントも実行されます。このエージェントは、インスタンスを仮想ネットワークに接続し、セキュリティーグループ としてインスタンスに対するファイアウォールサービスを提供します。
複数のコンピュートノードを配備できます。各ノードは少なくとも 2 つのネットワークインターフェースを持つ必要があります。
オプションの Block Storage ノードは、Block Storage が仮想マシンインスタンスのために配備するディスクを持ちます。
簡単のため、コンピュートノードとこのノード間のサービストラフィックは管理ネットワークを使います。本番環境では、性能とセキュリティーを向上させるため別のストレージネットワークを用意すべきでしょう。
複数のブロックストレージノードを配備できます。各ノードは少なくとも 1 つのネットワークインターフェースを持つ必要があります。
オプションの Object Storage ノードは、Object Storage がアカウント、コンテナー、オブジェクトを保存するディスクを持ちます。
簡単のため、コンピュートノードとこのノード間のサービストラフィックは管理ネットワークを使います。本番環境では、性能とセキュリティーを向上させるため別のストレージネットワークを用意すべきでしょう。
このサービスは 2 つのノードを必要とします。各ノードは、少なくとも 1 つのネットワークインターフェースを必要とします。複数のオブジェクトストレージノードを配備できます。
以下の仮想ネットワークの選択肢のいずれかを選択します。
プロバイダーネットワーク構成では、可能な限り最も簡単な方法で OpenStack Networking サービスをデプロイします。主として、レイヤー 2 (ブリッジング/スイッチング) サービスと VLAN によるネットワーク分離が利用できます。本質的には、仮想ネットワークは物理ネットワークにレイヤー 2 でブリッジングされ、レイヤー 3 (ルーティング) サービスは物理ネットワークインフラのものが利用されます。また、 DHCP サービスにより IP アドレス情報がインスタンスに提供されます。
注釈
この構成では、セルフサービスネットワーク、 レイヤー 3 (ルーティング) サービス、 LBaaS や FWaaS などの高度なネットワークサービス はサポートされません。これらの機能を使いたい場合は、セルフサービスネットワーク構成を検討してください。
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.