Openstack cliまたはダッシュボードを介してインスタンスまたは仮想マシンを作成するたびにバックグラウンドで何が起こったかを考えたことはありますか?この記事では、OpenstackでのVMまたはインスタンスの作成を段階的に説明します。すべてのOpenstackコンポーネントは、Authトークンを使用してAPIと相互に通信します。
OpenStackCLIを介したOpenStackでの仮想マシンの作成
クレデンシャルファイルを入手してから、nova-bootコマンドを実行します。
# nova boot --flavor m1.small --image centos7 --nic net-id={private_network_id} --security-group norprod_sec_grp --key-name my_key stack_testvm
nova bootコマンドが実行されると、次の手順がバックグラウンドで実行されます。
ステップ:1) HorizonDashboardまたはOpenStackCLIは、ユーザー資格情報を取得し、RESTAPIを介してIDサービスで認証します
- IDサービス(Keystone)は、ユーザー資格情報を使用してユーザーを認証し、認証トークンを生成して送り返します。この認証トークンは、REST-Callを介して他のコンポーネントにリクエストを送信するために使用されます。
ステップ:2) DashboardまたはOpenStackCLIは、launchinstanceまたはnovabootコマンドで指定された新しいインスタンスリクエストをRESTAPIリクエストに変換し、nova-apiに送信します
ステップ:3) 次に、nova-apiサービスがリクエストを取得し、そのリクエストをIDサービス(Keystone)に送信して、認証トークンとアクセス許可を検証します。
- Keystoneサービスはトークンを検証し、更新された認証ヘッダーを権限とともにロールとともに送信します
ステップ:4) keystoneから応答を取得した後、nova-apiはnova-databaseとの競合をチェックし、新しいインスタンスまたはVMの初期データベースエントリを作成します。
ステップ:5) nova-apiはrpc.callリクエストをnova-schedulerに送信し、ホストIDが指定された更新されたインスタンスエントリを取得することを期待しています
ステップ:6) これで、nova-schedulerがキューからリクエストを選択します
ステップ:7) nova-schedulerはnova-databaseと通信して、フィルタリングと重み付けのメカニズムを使用して適切なホストを見つけます。
- nova-schedulerは、フィルタリングと重み付けの後に、適切なホストIDで更新されたインスタンスエントリを返します
- nova-schedulerは、適切なホストでインスタンスを起動するために、rpc.castリクエストをnovacomputeに送信します
ステップ:8) nova-computeはキューからリクエストを選択し、rpc.callリクエストをnova-conductorに送信して、ホストIDやフレーバー(RAM、CPU、ディスク)などのVMまたはインスタンス情報を取得します
ステップ:9) nova-conductorはキューからリクエストを受け取り、nova-databaseと通信します。
- nova-conductorがインスタンス情報を取得します
- これで、nova-computeはキューからインスタンス情報を選択します
ステップ:10) nova-computeはauth-tokenを使用してREST呼び出しを行うことでglance-apiに接続し、次にnova-computeは画像IDを使用して画像サービスから画像URIを取得し、画像ストレージから画像を読み込みます
ステップ:11) glance-apiはkeystoneを使用して認証トークンを検証し、その後nova-computeが画像メタデータを取得します
ステップ:12) Nova-computeは、auth-tokenをNetwork API(Neutron)に渡して、vmがIPアドレスを取得するようにネットワークを割り当てて構成することにより、REST呼び出しを行います
ステップ:13) Neutron-serverはkeystoneを使用して認証トークンを検証し、その後nova-computeがネットワーク情報を取得します。
ステップ:14) Nova-Computeは、auth-tokenをVolume APIに渡して、ボリュームをインスタンスまたはVMに接続することにより、REST呼び出しを行います。
ステップ:15) cinder-apiはkeystoneを使用して認証トークンを検証し、次にnova-computeがブロックストレージ情報を取得します。
ステップ:16) nova-computeは、ハイパーバイザードライバーのデータを生成し、libvirtまたはAPIを使用してハイパーバイザーでリクエストを実行し、最後にハイパーバイザーでVMを作成します。ダッシュボードでそのVMを確認でき、「novalist」コマンドも使用できます。
記事の内容は以上です。この記事が参考になることを願っています。フィードバックやコメントを共有してください。