天天看點

openstack nova nova分析—— nova-novncproxy 

nova分析—— nova-novncproxy 

原文:http://www.tuicool.com/articles/7fqMN3Z

推薦:http://cwtea.blog.51cto.com/4500217/1348218/

            http://www.iyunv.com/thread-42667-1-1.html

nova提供了novncproxy代理支援使用者通過vnc來通路虛拟機,使用者可以通過websocket、java用戶端或者spicehtml5來通路。通過websket通路虛拟機的功能已經內建到horizon中,而通過java用戶端則需要先安裝相應的軟體。為了友善使用者通路虛拟機,nova通過有一個proxy來實作,proxy通常同nova-api一起部署。

vnc通路的實作方法如下,首先是啟動一個虛拟機時啟用vnc,這可以通過給kvm加上vnc參數即可。這樣,kvm就會啟動一個vncserver監聽虛拟機。通過websocket來通路虛拟時,其步驟如下:

1. 通過nova-api擷取通路url,url的格式是: http://ip:port/?token=xxx ,該位址實際上就是vnc proxy的位址。

2. 浏覽器連接配接到vnc proxy

3. vnc proxy連接配接到nova-consoleauth來驗證token,并将token映射到虛拟機所在的主控端的ip位址和某個端口,該端口就是虛拟機啟動時所監聽的端口。

4. vnc proxy與虛拟機所在的主控端的vncserver建立連接配接,并開始代理,直到浏覽器session結束。

在nova.conf中,計算節點可以指定vncserver的監聽位址及vnc proxy應該通過那個位址連接配接到vncserver,該選項就是vncserver_proxyclient_address。vnc proxy充當了公網和計算節點之間的橋梁,此外還需要對vnc協定進行封裝。

vnc proxy配置方法

通常情況下,為了提供完整的vnc功能,需要部署三個服務:

  • nova-consoleauth: 提供token驗證,維護token與ip位址、端口号的映射。
  • nova-novncproxy: 支援基于浏覽器的vnc 用戶端,通常與nova-api部署在一起。
  • nova-xvpvncproxy: 支援基于java的vnc用戶端,,通常與nova-api部署在一起。

此外還需要對計算節點進行設當的配置。具體如下:

  • vnc_enabled=True   啟用虛拟機的vnc功能。
  • vncserver_listen=0.0.0.0   預設是127.0.0.1,即隻可以從本機進行通路,通常情況下是配置為管理網的IP位址。設定為0.0.0.0主要是考慮到動态遷移時,目的主控端沒有相應的IP位址,動态遷移會失敗。
  • vncserver_proxyclient_address  該位址指明vnc proxy應該通過那個IP位址來連接配接vncserver,通常是管理網IP位址。
  • novncproxy_base_url=http://$SERVICE_HOST:6080/vnc_auto.html  指定浏覽器client應該連接配接的位址。$SERVICE_HOST通常是一個公網IP位址。
  • xvpvncproxy_base_url=http://$SERVICE_HOST:6081/console  指定java client應該連接配接的位址。$SERVICE_HOST通常是一個公網IP位址。

vnc proxy的配置則相對簡單,隻需要設定其監聽的主機和端口即可。具體如下:

  • novncproxy_host=$SERVICE_HOST  通常為一個公網IP。
  • novncproxy_host=6080
  • xvpvncproxy_host=$SERVICE_HOST 通常為一個公網IP。
  • xvpvncproxy_port=6081

繼續閱讀