この記事では、Openstackインストールでより高速なSPICEコンソールを構成する方法について説明します。
OpenStackには、仮想コンソールのグラフィカルコンソール用にVNCとSPICEの2つのプロトコルがあります。 VNCクライアントのWeb実装であるnoVNCは、すぐに使用できます。
SPICEについては、人よりもはるかに少ない知識を持っています。 一般に、SPICEは、ストリーミングビデオ、オーディオ、コピーアンドペースト、USB転送など、多くの便利な機能をサポートするリモートアクセスプロトコルです。 ただし、OpenStackダッシュボードはSPICE-HTML5 Webクライアントを使用しますが、これはこれらすべての機能をサポートしていませんが、仮想コンソールを非常に効率的かつ迅速に表示します。つまり、必要なことだけを行います。
公式ドキュメント( link1 、 link2 )では、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>は、HorizonダッシュボードのFQDNです。 明らかに、上記の証明書とキーはFRONTEND_FQDNと一致する必要があります。一致しない場合、最新のブラウザーではSPICEウィジェットが機能しません。 Horizonが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コンソールは開きます。 Horizonの設定を見ると、使用されるコンソールのタイプは次の設定によって制御されます。
/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) 。