機能と役割
・仮想マシンの起動停止
・仮想マシンに対するリソース割り当て管理
・物理ホストに対する仮想マシンの配置管理
・SSH認証用キーペア管理
・Metadataサービス機能の提供
・仮想マシンへのコンソールアクセス提供
プロセス名 | 説明 |
---|---|
nova-api | REST API提供 |
nova-scheduler | インスタンス配置先決定 |
nova-compute | ハイパーバイザー制御 |
nova-conductor | DBアクセス |
nova-consoleauth | コンソールアクセス認証管理 |
nova-novncproxy | インスタンスコンソールアクセス提供(Webブラウザ) |
nova-xvpvnccproxy | インスタンスコンソールアクセス提供(Javaクライアント) |
nova-cert | EC2互換API利用時の証明書を管理 |
設定ファイル | 説明 |
---|---|
nova.conf | 全体設定 |
api-paste.ini | WSGI設定。nova-apiが参照 |
policy.json | API利用権限設定 |
rootwrap.conf | root権限で実行する方式を設定 |
・各プロセス間通信は基本的にメッセージングサーバ経由。プロセスの発行するリクエストはメッセージングサーバ経由し適したプロセスに渡される。
・メッセージングサーバは、1つのメッセージを全サーバに配信、特定プロセスのみに配信するなどの指定が可能
・プロセス起動ホストを増やしロードバランスすれば冗長化可能
・Novaは構成管理とハイパーバイザー制御を実施。プロセス全停止しても、インスタンス自体の動きに影響なし。
【nova-api】
・以下3種類のapiを提供
種別 | ポート番号 | プロセス |
---|---|---|
Nova API | 8774 | nova-api-os-compute |
EC2互換API | 8773 | nova-api-ec2 |
Metadataサービス | 8775 | nova-api-metadata |
【nova-scheduler】
・インスタンス起動ホストを選定する
・選定では「フィルタ」と「重み」を使う
・フィルタは以下2種類
タイプ | 説明 |
---|---|
チャンスフィルター | ランダムにホスト選択 |
フィルタスケジューラ | 組み込みフィルタルール利用(デフォルト) |
・フィルタスケジューラの場合、フィルタルールで対象ホストを絞り、残ったホストの重みを計算し、値が小さいホストを選択
・重みはホストの空き容量メモリサイズに定数(設定変更可能)を掛けて算出。
定数が正の数であれば、空き容量メモリサイズが少ないホストが選出(詰め込み型、デフォルト)
定数が負の数であれば、空き容量メモリサイズが大きいホストが選出(分散型)
【nova-conductor】
・nova-computeが管理する物理ホストのリソース情報をメッセージングサーバ経由で受け取り、DBに格納する。
・Folsom以前はnova-computeが直接DBに書き込む仕組みだったが、DB負荷が高くなるため、nova-conductorがまとめて書き込む形に変更。
【nova-compute】
・以下2点の役割があり。
・ハイパーバイザー制御(インスタンス作成・削除等)
・ハイパーバイザー稼働ホストのリソース使用状況の把握・通知
・nova-computeが動作するホストで障害発生した場合、インスタンスも停止するが、novaでは自動HAの仕組みなし。
・従来と異なりIaaSの基本的考えでは、基盤側で冗長化するのではなく、アプリ側で冗長化する仕組みの実装が必要。
アプリ自身で障害検知しNovaにAPI発行しインスタンス起動するなどの復旧フローを実行等
【nova-consoleauth、nova-novncproxy、nova-xvpvnncproxy】
・Novaが起動したインスタンスのコンソール画面へのアクセスを制御
・nova-consoleauthがセッション管理
・nova-novncproxy、nova-xvpvnncproxyがVNCによる画面転送機能を提供(KVMがVNCサーバ)
・nova-novncproxyはnoVNC利用。noVNCはHTML5/Canvas/WebSocketを利用したWebブラウザで使えるVNCクライアント。
・nova-xvpvnncproxyはVNC Javaクライアントソフトウェアが必要。
・Horizonダッシュボードはnova-novncproxyを利用。
・コンソールアクセスするURLはコマンドで取得可能。
・tokenはnova-consoleauthが発行し、memcachedに保存。全nova-consoleauthがそれを共有しセッション管理する。