OpenStackでの仮想マシン用のSPICEコンソールの構成

この記事は、OpenStackクラウドプラットフォームの管理者を対象としています。 仮想マシンコンソールをダッシュ​​ボードに表示することについてです。 実際、OpenStackではデフォルトでnoVNCコンソールが使用されます。これはローカルネットワーク内で適切な速度で動作しますが、リモートデータセンターで実行されている仮想マシンでの動作には適していません。 この場合、コンソールの応答性は、控えめに言って、落ち込んでいます。



この記事では、Openstackインストールでより高速なSPICEコンソールを構成する方法について説明します。



OpenStackには、仮想コンソールのグラフィカルコンソール用にVNCとSPICEの2つのプロトコルがあります。 VNCクライアントのWeb実装であるnoVNCは、すぐに使用できます。



SPICEについては、人よりもはるかに少ない知識を持っています。 一般に、SPICEは、ストリーミングビデオ、オーディオ、コピーアンドペースト、USB転送など、多くの便利な機能をサポートするリモートアクセスプロトコルです。 ただし、OpenStackダッシュボードはSPICE-HTML5 Webクライアントを使用しますが、これはこれらすべての機能をサポートしていませんが、仮想コンソールを非常に効率的かつ迅速に表示します。つまり、必要なことだけを行います。







公式ドキュメント( link1link2 )では、OpenStackはSPICEコンソールのセットアップに関するかなりの情報を提供しています。 さらに、「SPICEコンソールにアクセスするには、VNCを明示的に無効にする必要がある」と書かれています。 これは完全に真実ではありません。VNCコンソールをオンにすると、ダッシュボードからSPICEコンソールを使用できない可能性が高くなります(ただし、python-novaclientを使用してAPI、つまり「nova get-spice-console」を使用できます) 。 さらに、SPICEコンソールは新しい仮想マシンでのみ使用でき、古い仮想マシンはハードリブート、サイズ変更、または移行の前にVNCのみを使用します。



そのため、この記事では、MirantisのOpenStackの2つのバージョン、Kilo(Mirantis OpenStack 7.0)とMitaka(Mirantis OpenStack 9.0)を同時に使用しました。 すべてのエンタープライズディストリビューションと同様に、3つのコントローラーノードとフロントエンドのHTTPSを使用した構成が使用されます。 どこでもオペレーティングシステムであるqemu-kvmハイパーバイザーはUbuntu 14.04であり、クラウドはFuelを介して展開されました。



この構成は、コントローラーノードとコンプの両方に影響します。 コントローラーノードで、次の操作を行います。



spice-html5パッケージ自体を配置します。



apt-get install spice-html5
      
      





Nova構成で、次の値を入力します。



/etc/nova/nova.conf

 [DEFAULT] ssl_only = True cert = '/path/to/SSL/cert' key = '/path/to/SSL/key' web=/usr/share/spice-html5 [spice] spicehtml5proxy_host = :: html5proxy_base_url = https://<FRONTEND_FQDN>:6082/spice_auto.html enabled = True keymap = en-us
      
      





ここで、<FRONTEND_FQDN>は、Horizo​​nダッシュボードのFQDNです。 明らかに、上記の証明書とキーはFRONTEND_FQDNと一致する必要があります。一致しない場合、最新のブラウザーではSPICEウィジェットが機能しません。 Horizo​​nがHTTPSを使用しない場合、SSL設定は省略できます。



noVNCとSPICEを同時に操作するには、次のフェイントを実行する必要があります。



 cp -r /usr/share/novnc/* /usr/share/spice-html5/
      
      





HTTPSを使用するには、Secure Websocketを使用する必要があります。そのためには、/ usr / share / spice-html5 / spice_auto.htmlファイルを修正する必要があります。 コードのこのセクションでは、「ws://」を「wss://」に修正する必要があります



/usr/share/spice-html5/spice_auto.html

  function connect() { var host, port, password, scheme = "wss://", uri;
      
      





繰り返しますが、noVNCとSPICEを同時に操作するには、起動スクリプト/etc/init/nova-novncproxy.confと/etc/init/nova-spicehtml5proxy.confを修正する必要があります。 両方のスクリプトで、1行コメントアウトする必要があります。



/etc/init/nova-spicehtml5proxy.conf

 script [ -r /etc/default/nova-consoleproxy ] && . /etc/default/nova-consoleproxy || exit 0 #[ "${NOVA_CONSOLE_PROXY_TYPE}" = "spicehtml5" ] || exit 0
      
      





/etc/init/nova-novncproxy.conf

 script [ -r /etc/default/nova-consoleproxy ] && . /etc/default/nova-consoleproxy || exit 0 #[ "${NOVA_CONSOLE_PROXY_TYPE}" = "novnc" ] || exit 0
      
      





実際、これにより、ファイル/ etc / default / nova-consoleproxyからコンソールタイプチェックを削除できます。



ここで、Haproxyの設定を修正する必要があります。



/etc/haproxy/conf.d/170-nova-novncproxy.cfg

 listen nova-novncproxy bind <PUBLIC_VIP>:6080 ssl crt /var/lib/astute/haproxy/public_haproxy.pem no-sslv3 no-tls-tickets ciphers AES128+EECDH:AES128+EDH:AES256+EECDH:AES256+EDH balance source option httplog option http-buffer-request timeout http-request 10s server controller1 192.168.57.6:6080 ssl verify none check server controller2 192.168.57.3:6080 ssl verify none check server controller3 192.168.57.7:6080 ssl verify none check
      
      





/etc/haproxy/conf.d/171-nova-spiceproxy.cfg

 listen nova-novncproxy bind <PUBLIC_VIP>:6082 ssl crt /var/lib/astute/haproxy/public_haproxy.pem no-sslv3 no-tls-tickets ciphers AES128+EECDH:AES128+EDH:AES256+EECDH:AES256+EDH balance source option httplog timeout tunnel 3600s server controller1 192.168.57.6:6082 ssl verify none check server controller2 192.168.57.3:6082 ssl verify none check server controller3 192.168.57.7:6082 ssl verify none check
      
      





PUBLIC_VIPは、FRONTEND_FQDNがハングするIPアドレスです。



最後に、ノードコントローラーでサービスを再起動します。



 service nova-spicehtml5proxy restart service apache2 restart crm resource restart p_haproxy
      
      





ここで、p_haproxyは、多数のOpenStackサービスが動作するHaproxyのPacemakerリソースです。



各計算ノードで、Nova configに変更を加える必要があります。

/etc/nova/nova.conf



 [spice] spicehtml5proxy_host = :: html5proxy_base_url = https://<FRONTEND_FQDN>:6082/spice_auto.html enabled = True agent_enabled = True server_listen = :: server_proxyclient_address = COMPUTE_MGMT_IP keymap = en-us
      
      





ここで、COMPUTE_MGMT_IPは、この計算ノードの管理インターフェイスのアドレスです(Mirantis OpenStackでは、パブリックネットワークと管理ネットワークに分かれています)。



その後、nova-computeサービスを再起動する必要があります。



 service nova-compute restart
      
      





ここで重要なポイントです。 VNCをオフにしないことを既に書きました。 この場合、既存の仮想マシンはダッシュボードのコンソールを失います。 ただし、クラウドをゼロから展開する場合は、VNCを完全にオフにすることをお勧めします。 これを行うには、すべてのノードセットのNova構成で以下を実行します。



 [DEFAULT] vnc_enabled = False novnc_enabled = False
      
      





ただし、とにかく、仮想マシンが既に回転しているクラウドでVNCとSPICEを一緒にアクティブ化すると、上記のすべての手順を実行しても、既に実行中の仮想マシンでも新しい仮想マシンでも、noVNCコンソールは開きます。 Horizo​​nの設定を見ると、使用されるコンソールのタイプは次の設定によって制御されます。



/etc/openstack-dashboard/local_settings.py

 # Set Console type: # valid options would be "AUTO", "VNC" or "SPICE" # CONSOLE_TYPE = "AUTO"
      
      





デフォルトでは、値はAUTOです。つまり、コンソールのタイプは自動的に選択されます。 しかし、これはどういう意味ですか? ポイントは、コンソールが優先される1つのファイルにあります。



/usr/share/openstack-dashboard/openstack_dashboard/dashboards/project/instances/console.py

 ... CONSOLES = SortedDict([('VNC', api.nova.server_vnc_console), ('SPICE', api.nova.server_spice_console), ('RDP', api.nova.server_rdp_console), ('SERIAL', api.nova.server_serial_console)]) ...
      
      





ご覧のとおり、VNCコンソールがあれば優先されます。 そうでない場合は、SPICEコンソールが検索されます。 最初の2つのポイントを交換することは理にかなっています。既存の仮想マシンは引き続き低速のVNCで動作し、新しい仮想マシンは新しい高速SPICEで動作します。 必要なものだけ!



主観的に、SPICEコンソールは非常に高速であると言えます。 グラフィックのないモードでは、ブレーキはまったくありません。グラフィックモードでは、すべてが迅速に機能し、VNCプロトコルと比較すると、まさに天国です! だからみんなにそれをお勧めします!



これについては、構成は完了していると見なすことができますが、最後に、実際にこれらのコンソールの両方がlibvirt XML構成でどのように見えるかを示します。



  <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0' keymap='en-us'> <listen type='address' address='0.0.0.0'/> </graphics> <graphics type='spice' port='5901' autoport='yes' listen='::' keymap='en-us'> <listen type='address' address='::'/> </graphics>
      
      





明らかに、仮想マシンの計算ノードへのネットワークアクセスがある場合、構成内の上記のTCPポートに接続するだけで、Webインターフェースの代わりに他のVNC / SPICEクライアントを使用できます(この場合、VNCの場合は5900、SPICEの場合は5901) 。



All Articles