第4回 Nova #1

  • OpenStack

最終更新⽇:

掲載⽇:

ICTインフラソリューション部のグエンです。前回は、HorizonとKeystoneを説明しました。
今回は、NovaというOpenStackの非常に重要な機能を説明しようと思います。

Novaとは

Novaは、OpenStackのコンポーネントの1つであり、クラウドコンピューティングプラットフォームであるOpenStackのコンピュートを提供します。Novaを使用することで、仮想マシンやインスタンスを管理し、クラウド上で計算リソースを提供、スケーリング、制御することが可能です。

Novaのアーキテクチャ

Keystoneは1つのコンポーネントから構成されているため、1台のサーバにインストールするだけで動作します。Novaについては複数のコンポーネントから構成されているため、1台のサーバにインストールすることもできますが、複数台のサーバに分けてインストールすることも可能です。それぞれのコンポーネントを適切なサーバにインストールすることで、Novaを機能させることができます。以下にNovaを構成する主要なコンポーネントとそれぞれの機能を示しています。また、各コンポーネントがどの種類のノードにインストールされるかにも述べています。

Openstack-vol0004_01.png

コンピュートノード:

 ・nova-compute: Novaの中心的な構成要素であり、仮想マシンの生成と管理を担当します。これにより、仮想マシンの起動、停止、削除などの操作が可能になります。Novaと連携し、仮想環境を制御します。

コントローラーノード:

 ・nova-api: 外部ユーザーや他のOpenStackサービスからのリクエストを受け取り、それらのリクエストに応じて適切な操作を行います。RESTful APIを提供し、仮想マシンの管理やリソースの割り当てなどの操作を可能にします。
 ・nova-scheduler: リソースの利用状況や要求に基づいて、仮想マシンインスタンスをどのホストに配置するかを決定します。この決定は、スケジュールポリシーに従って行われます。
 ・nova-conductor: データベースへのアクセスや操作の調整などの機能を担当します。また、APIサーバとComputeサービスの間でメッセージングを処理します。

インスタンスの起動

Openstack-vol0004_02.png

1. アプリケーションや対話型ツールは、APIを介してKeystoneからトークンを取得します。
2. インスタンスを起動するため、トークン付きのAPIリクエストを送信します。
3. nova-api が Keystoneとともにトークンを検証します。
4. nova-api によって、API リクエストが処理されます。
5. nova-api がインスタンスを立てるためのコンピュートノードを選択し、nova-conductorに委任します。
6. nova-conductorがnova-schedulerにコンピュートノードを要求します。
7. nova-conductorはnova-computeと連携し、インスタンスを起動します。ここでは失敗したと仮定します。
8. nova-conductorは nova-scheduler に対して、別のホストを要求します。
9. nova-conductorはnova-computeと連携し、インスタンスを起動します。
10. nova-computeとnova-conductorがAPIを使い、Glance、Cinder、Neutronからリソースを取得します。
11. コンピュートが仮想化方式を経由してVMを起動します。ここでは成功します。

nova-computeが利用可能な仮想化方式

nova-computeは多様な仮想化方式をサポートしています。以下に、一部サポートされている仮想方式を示します。

Hyper-V

Microsoftが開発したハイパーバイザー型の仮想化プラットフォームであり、Windowsベースの仮想化環境を提供します。Windows Server上で動作し、WindowsやLinuxなどのゲストOSをホストすることができます。

KVM (Kernel-based Virtual Machine)

Linuxカーネル内に組み込まれた仮想化インフラストラクチャを提供します。ハードウェア仮想化機能を利用し、LinuxやWindowsなどのゲストOSをホストできます。

QEMU

オープンソースのマシンエミュレーションと仮想化プロセッサエミュレーションを提供するプロジェクトです。KVMと組み合わせて使用されることが一般的で、ハードウェア仮想化をサポートします。

UML (User-mode Linux)

Linuxカーネルを利用して、カーネルレベルの仮想化を提供します。Linux上でLinuxを実行することができ、軽量であるため、開発やテストに適しています。

vSphere

VMwareの仮想化プラットフォームであり、企業向けの仮想化ソリューションを提供します。ESXiハイパーバイザーをベースに、高可用性、自動化、セキュリティなどの機能を提供します。

LXC (Linux Containers)

Linuxのカーネル機能を利用してOSレベルの仮想化を提供するプロジェクトであり、Dockerなどのコンテナ型仮想化の基盤となっています。OSレベルの仮想化を実現し、軽量かつ高速なコンテナを提供します。

Docker

コンテナ型仮想化プラットフォームであり、アプリケーションやサービスをコンテナとしてパッケージ化し、独立した実行環境で実行することができます。開発、デプロイメント、スケーリングなどの用途で広く利用されています。

これらの仮想化方式は、それぞれの特性や利点を持ち、OpenStackのnova-computeコンポーネントを通じて仮想マシンを作成・管理できるようにサポートされています。

Openstack-vol0004_03.png

なぜ特定のコンピュートノードを選択する専用のコンポーネントが存在するのか?

nova-schedulerは、nova-apiから独立したコンポーネントとして開発されました。インスタンスの作成機能だけがnova-apiから分離され、 nova-apiはインスタンスを操作する役割を果たすため、作成機能も含まれるべきだと思われるかもしれません。

その理由は、インスタンスの作成ロジックが複雑であるためです。複雑なロジックはメンテナンスが難しく、時間がかかる可能性があります。また、インスタンスの作成機能だけをメンテナンスするために、その他のインスタンス操作が全て停止するのは非効率です。

そのため、インスタンスの作成機能はnova-apiから分離され、別のコンポーネントであるnova-schedulerに実装されました。nova-apiはインスタンスの作成リクエストを受け取ると、API経由でnova-schedulerを呼び出します。これは、OpenStackにおけるマイクロサービスアーキテクチャの一例です。

nova-schedulerに問題があった場合でも、nova-apiとは独立して停止させ、修正や設定を行い、再起動することができます。その間、nova-apiは正常に動作し続け、ユーザーは既存のインスタンスを操作できます。インスタンスの作成が一時的にできなくなることを除けば、ユーザーには影響がありません。

コンピュートノードの管理

Openstack-vol0004_04.png

コンピュートノードの管理やリソースの組織化について、いくつかの重要な概念があります

1. リージョン (Region) は、物理的な場所やデータセンターなど、リソースが配置される場所を指します。 複数のプロジェクトやテナントをサポートし、それぞれが独自のリソースを持つことができます。
2. セル (Cell) は、リージョン内の物理的な分割や論理的な分割を提供し、特定のリージョン内でリソースの管理や負荷分散を効果的に行うために使用されます。セルは大規模な展開を管理するための概念です。
3. アグリゲート (Aggregate) は、OpenStackコンピュートノードのグループ化機能です。特定の条件や属性に基づいて、コンピュートノードをグループ化し、リソースの管理やスケジューリングを行うために使用されます。
4. アベイラビリティゾーン (Availability Zone) は、特定のリージョン内の論理的なセクションを指します。それぞれのアベイラビリティゾーンは、異なる電源、冷却、ネットワークなどの基盤インフラストラクチャに接続されており、障害が発生した場合でもサービスの可用性を確保します。

これらの概念を適切に活用することで、OpenStackインフラストラクチャの管理やリソースの効率的な利用に役立ちます。

第4回は以上になります。次回、インスタンス操作について紹介します。