pikesaku’s blog

個人的なプログラム勉強メモです。記載内容について一切の責任は持ちません。

OpenStackアーキテクチャメモ(Nova)

参考

www.amazon.co.jp
 
 

機能と役割

仮想マシンの起動停止
仮想マシンに対するリソース割り当て管理
・物理ホストに対する仮想マシンの配置管理
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権限で実行する方式を設定



各プロセス間通信は基本的にメッセージングサーバ経由。プロセスの発行するリクエストはメッセージングサーバ経由し適したプロセスに渡される。

f:id:pikesaku:20171005001727p:plain

メッセージングサーバは、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による画面転送機能を提供(KVMVNCサーバ)
・nova-novncproxyはnoVNC利用。noVNCはHTML5/Canvas/WebSocketを利用したWebブラウザで使えるVNCクライアント。
・nova-xvpvnncproxyはVNC Javaクライアントソフトウェアが必要。
・Horizonダッシュボードはnova-novncproxyを利用。
・コンソールアクセスするURLはコマンドで取得可能。
・tokenはnova-consoleauthが発行し、memcachedに保存。全nova-consoleauthがそれを共有しセッション管理する。

f:id:pikesaku:20171005022320p:plain
f:id:pikesaku:20171005022333p:plain

 
 

【nova-cert】

・EC2互換APIを利用する際に必要になるX509形式の証明書を管理するプロセス
・OpenStack APIが充実してきたため、最近は使われてない