SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

マイクロサービスアーキテクチャが支えるOpenStackの動作と仕組み

Novaの動作と仕組み~複数のノード・仮想化方式でも効率的にインスタンス管理

マイクロサービスアーキテクチャが支えるOpenStackの動作と仕組み 第2回


既存のインスタンスの操作

最初は、既存のインスタンスの停止や削除といった操作を行う機能を説明します。

インスタンスを操作する場合の実行経路

ユーザーがインスタンスを操作する際、まずnova-apiコンポーネント(以下、nova-api)にそのリクエストが送信されます。 nova-apiはユーザーのリクエストを認可した後、操作対象のインスタンスがあるnova-computeコンポーネント(以下、nova-compute)にそのリクエストを転送します。 リクエストを受け取ったnova-computeは、インスタンスに対して操作を実行します。

nova-computeがサポートしている仮想化方式

nova-computeは数多くの仮想化方式をサポートしています。 次表に、サポートされている仮想化方式の例を挙げます。

Hyper-V Microsoftが提供する仮想化方式。ゲストOSとしてWindowsはもちろん、Red Hat Enterprise LinuxやCent OSなどもサポートしている
KVM Kernel-based Virtual Machine。後述のQEMUの機能の一部を利用するが、ハードウェアはCPU上で仮想化するので高速。Novaはインストールした際、デフォルトではこれを利用しようとする
QEMU ソフトウェア上でハードウェアをエミュレーションする仮想化方式。開発などの用途で広く使われている。なお、QEMUは何かの略称ではなく、そういう名前である
UML User Mode Linux。Linux上で実行することでプロセスの中で独立したLinuxを動作させることができる。仮想サーバー内の各プロセスは、物理サーバー内のプロセスと1対1で紐付けられる
VirtualBox KVMのようにCPU上でハードウェアを仮想化する仮想化方式。Windowsを実行させることも可能
vSphere 管理用OSを含む仮想化方式。軽量な管理用OSにドライバなども含まれているため、高いパフォーマンスを発揮する。また、サポートされるOSも幅広く、各種LinuxのみならずWindowsやMacをもサポートしている
Xen Linux上で動作する仮想化方式。Linux上で動作するが、Windowsの仮想サーバーを作成することも可能
LXC Linux Containers。「コンテナ」と呼ばれる形でプロセスやネットワークスペースを分離することによって仮想化環境を作る。起動が速いという利点がある
Docker OpenStackでは2013年2月リリースのHavanaからサポート。LXCと同じくコンテナを利用する仮想化方式だが、アプリケーションのデプロイにより特化されている

このように、nova-computeが様々な仮想化方式をサポートしているおかげで、他の仮想化環境で動作していたシステムをOpenStack上へ移行する場合に、かかるコストが抑えられます。

また、複数の仮想化方式が混在したクラウドコンピューティングサービスを提供することも可能です。

異なる仮想化方式を混在させることも可能
異なる仮想化方式を混在させることも可能

仮想化方式を問わず共通の方法で操作できる

想像してみてください。OpenStack上で異なる仮想化方式のインスタンスがいくつも動作しているときに、それらを一斉に一時停止させたいとします。 ただし、仮想化方式が異なると、できることや操作の仕方も異なるのが普通です。 すると、各インスタンスの仮想化方式に合わせて、一時停止コマンドを変えて送信することになるのでしょうか。

これは少々無駄ですし、異なる仮想化方式の新規導入がおっくうになりますよね。

異なる仮想化方式にそれぞれの方法でアクセス
異なる仮想化方式にそれぞれの方法でアクセス

OpenStackではその心配はありません。仮想化方式にかかわらず、共通のインターフェイスでどのコンピュートノードにも同じようにアクセスできます。仮想化方式ごとに操作方法やコマンドを使い分けるといった必要はありません。その理由はこうです。

インスタンスを作成するコンピュートノードにはnova-computeをセットアップしますが、このとき、そのコンピュートノードで利用する仮想化方式をnova-computeに設定します。nova-computeは設定された仮想化方式に適合するドライバーを用いて、起動や停止といったインスタンスへの操作を行います。

一方で、インスタンスの仮想化方式が何であれ、同じようにアクセスし操作できるように、nova-apiが共通のインターフェイス(API)を外部に提供しています。ユーザーはnova-apiが受け付けるAPIだけを意識すればよく、内部で使われている仮想化方式について気にかける必要はありません。これが「仮想化方式ごとに操作方法やコマンドを使い分けるといった必要がない」理由です。

異なる仮想化方式に単一の方法でアクセス
異なる仮想化方式に単一の方法でアクセス

また、「ユーザーはnova-apiが受け付けるAPIだけを意識すればよく、内部で使われている仮想化方式について気にかける必要はない」ということは、「APIが取り決められた形式に従っていれば、内部実装にどのような技術を用いてもよい」という意味でもあります。すると、サービスの基盤となる技術を独立させることが可能となります。これは「マイクロサービスアーキテクチャ」の特徴です。

Novaでは、新しい仮想化方式をサポートすることも容易です。nova-computeの共通APIを通じて新しい仮想化方式を扱うためのドライバーを実装するだけです。それで、既存のnova-computeと同じ手順で、新しい仮想化方式のインスタンスを作成できます。

1つのOpenStack環境に、複数の仮想化方式で作成したインスタンスを混在させることも可能です。これは、Novaがコンピュートノードそれぞれに個別のnova-computeを導入する方式を採用しているためです。

どちらも、OpenStackがマイクロサービスアーキテクチャを採用していることに由来します。

次のページ
新しいインスタンスの作成

この記事は参考になりましたか?

マイクロサービスアーキテクチャが支えるOpenStackの動作と仕組み連載記事一覧

もっと読む

この記事の著者

大嶋 俊祐(株式会社ワークスアプリケーションズ)(オオシマ シュンスケ)

株式会社ワークスアプリケーションズ所属。 社内では技術研修を担当しながら、OpenStackを使ってプライベートクラウドを作っています。 自分が運営する研修を自分が作ったプライベートクラウドを使って運営するのがマイブーム。 あだ名はひよこ。TRPGが趣味なのでどなたかお誘いください。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9848 2021/03/25 21:21

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー