驗證使用VMware HTML Console SDK--Nginx集成Vcenter 6.X HTML Console系列之 2--(共4)
官方下載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> <metahttp-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--vm2.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)