1. 程式人生 > >驗證使用VMware HTML Console SDK--Nginx集成Vcenter 6.X HTML Console系列之 2--(共4)

驗證使用VMware HTML Console SDK--Nginx集成Vcenter 6.X HTML Console系列之 2--(共4)

輸出 get admin ron content 三種 init.d csdn bubuko

官方下載VMware HTML Console SDK和VMware HTML Console SDK Programming Guide 2.10,當然大家也可以使用從這裏下載OpenH5Console

打開裏面的示例代碼console.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head> 
  <meta 
http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Console</title> </head> <body> <link rel="stylesheet" type="text/css" href="wmks-all.css" /> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"
src="jquery-ui.min.js"></script> <script type="text/javascript" src="wmks.min.js"></script> <div id="wmksContainer" style="position:absolute;width:100%;height:100%"></div> <script> var wmks = WMKS.createWMKS("wmksContainer",{}) .register(WMKS.CONST.Events.CONNECTION_STATE_CHANGE,
function(event,data){ if(data.state == WMKS.CONST.ConnectionState.CONNECTED) { console.log("connection state change : connected"); } });wmks.connect("wss://10.200.108.91:443/ticket/368c0616102e1c58"); </script> </body> </html>

1、連接VM時使用的是vmks.connect(url)方法

該url的格式為:

<ws|wss>://<host:port>/<path>/<?authentication info>

ws是websocket的簡稱,WSS是 Web Socket Secure 的簡稱, 它是 WebSocket 的加密版本,SSL 是基礎, 在 SSL 上運行 WebSocket 協議就是 WSS; 在 SSL 上運行 HTTP 協議就是 HTTPS,具體參考WSS、SSL 和 https 之間的關系。

2、獲取Ticket

很多人在這裏卡住了,不是因為沒有獲取到ticket,而是因為獲取的ticket類型不對。目前知道vcenter有三種類型的ticket(6.X),包括mksTicket、webmks Ticket、CloneSession Ticket。t經過驗證,只能使用webmks Ticket,獲取方法有很多種,我說兩種

2.1 通過vcenter網頁獲取:

依次是: 瀏覽 vSphere 管理的對象--content--rootFolder--childEntity--datastore--vm 技術分享圖片

2.2 通過VMware PowerCLI獲取:

需要下載安裝VMware PowerCLI,然後依次執行如下命令

$VCenter = "vc的FQDN"
Connect-VIServer $VCenter -User [email protected] -Password  vc密碼
$Vm = Get-VM VM名字
$Ticket = $Vm.ExtensionData.AcquireTicket("webmks")
$ESXHost = $Ticket.host
$TicketNumber = $Ticket.ticket

執行完成之後,再次輸入$TicketNumber,就是需要的認證信息了。

將以上獲取的ticket信息,放入console.html,然後雙擊就能打開控制臺了。

3、有幾個問題需要註意:

3.1 如果使用的wss的話,因為證書未安裝,網頁可能會沒有反應。

這是因為需要信任證書,可以直接在瀏覽器輸入https://<host:port>,然後添加信任例外就能解決。或者先安裝對應的證書,再重新生成ticket進行連接

3.2 修改ESXi配置,使其支持ws方式,這樣就沒有證書驗證的問題了

默認ESXi支持ws方式,但80端口給重定向到443端口了,所以需要把重定向去掉,具體步驟是:

1 Log in to the ESXi Shell as a user with administrator privileges.
2 Change to the /etc/vmware/rhttpproxy/endpoints/conf directory.
3 Use a text editor to open the endpoints.conf file.
4 Change the security settings as required

allow - Allow HTTP access.
redirect – If the Endpoint address is a local port, then the client is redirected to 443. If the Endpoint address is a remote host, then the client is redirected to that host.
reject - No HTTP access
只需要修改type為ticket的即可,改為allow,具體參考vsphere-esxi-vcenter-server-55-security-guide

然後重啟rhttpproxy服務:

/etc/init.d/rhttpproxy restart

3.3 其實解決證書問題還可以通過Nginx

將https數據,輸出為http的,

將https數據,輸出為https的,然後為Nginx頒發信任證書,或添加信任

這個待第3篇裏說。

參考:

Showing Web Console of a VM via vSphere HTML Console SDK - Samples

WebMKS SDK 2.0 non-minified wmks.js

vcenter 6.x 生成預驗證的 html5 vm console鏈接

驗證使用VMware HTML Console SDK--Nginx集成Vcenter 6.X HTML Console系列之 2--(共4)