2020年的十一黃金周是雙節,偶然間得知再出現雙節可能要幾十年之后了,很可惜我並沒有出去游玩的打算。所以假期沒什么事,就來研究下Hyper Server + Windows Admin Center。
之前就搭建過自己的NAS服務器,實現方式是一台PVE+LEDE+虛擬機若干。當時選擇這個方案的原因是因為,PVE的資源占用非常少,還可以Web管理,使用起來總比一台Win10/Windows Server+各種虛擬機的方案要清爽一些。
但使用以上方案也是沒有辦法的辦法,這樣做其實有另一個問題是這個方案的移動性是非常差的,如果我要用到這個環境里的某個虛擬機就必須帶着整台電腦走。
偶然間看到巨硬(微軟)也有類似於ESXI的技術方案:Hyper-V Server+Windows Admin Center。
Hyper-V Server
無論你是軟件開發人員、IT 專業人員還是技術愛好者,你們中的許多人都需要運行多個操作系統。 Hyper-V 讓你可以在 Windows 上以虛擬機形式運行多個操作系統。
說白了Hyper-V就是微軟自己的虛擬技術,可以運行多個虛擬機,當然對自家的Windows支持是最好的,不過Linux也不差。
值得說的一點是,在使用Hyper-V的時候,如果資源分配的合理,幾乎感受不到的他的存在,不像VMWare那樣關機要等好半天。
另外就是我個人比較喜歡他的虛擬交換機,配置起來通俗易懂。
在了解到Hyper-V Server 之前我覺得這個完意有一個致命的問題就是我必須得裝一台Windows10 pro才可以愉快的玩耍。然而Windows占用的資源對我來說毫無價值,完全浪費。
所以,如果Hyper-V能像ESXI那樣安裝在電腦上只有一個虛擬機運行軟件的話, 就非常完美,顯然Hyper-V Server就是這個完意了。
Hyper-V Server的安裝和系統安裝一樣。我用Rufus將下載的鏡像燒進U盤作為啟動盤,接下來就正常安裝步驟了。
安裝完之后,畫面非常簡潔只有兩個命令行 , 是的,它沒有GUI :)
Windows Admin Center
Windows Admin Center 是一個在本地部署的基於瀏覽器的新管理工具集,讓你能夠管理 Windows Server,而無需依賴 Azure 或雲。 利用 Windows Admin Center,你可以完全控制服務器基礎結構的各個方面,對於在未連接到 Internet 的專用網絡上管理服務器特別有用。
官網說這個玩意可以通過Web像Hyper-V管理器一樣管理虛擬機。可以安裝在Windows10、Windows Server、Windows Server Core上。
機緣巧合,在一個論壇里看到曾有人討論過,是否可以在Hyper-V Server上安裝Windows Admin Center。看了好多博客,感覺這是一個可行性很高的方案,可以玩一玩。
- 踩坑一
只有命令行我應該怎么下載呢?於是只能用最傳統的方式在另一台電腦下載軟件到U盤里,然后插到Hyper-V Server上用命令行安裝就行了。
以下是安裝命令,具體說明可以參見官網。
msiexec /i <WindowsAdminCenterInstallerName>.msi /qn /L*v log.txt SME_PORT=<port> SSL_CERTIFICATE_OPTION=generate
//我設置的商品號是6515,然后用另一台電腦訪問https://{ServerIP}:6515,訪問成功。
裝完后,我意識到,應該可以不用U盤傳安裝文件的,在命令行中設置共享文件夾應該就可以了吧。
安裝虛擬機
簡單熟悉這個完意后,安裝虛擬機的操作方式大致一樣,可以通過Web上傳鏡像,然后安裝。
這里要說的是,整個安裝過程中確實沒有PVE操作方便,不過也無傷大雅,並且官方文檔也說了,WAC暫時並不能取代Hyper-V管理工具。
需要用的虛擬機安裝完之后,開始組網,當然還是我比較喜歡的獨臂路由,利用虛擬交換機創建兩塊虛擬網卡。
- 內部網絡:用於連接LEDE與各個虛擬機。
- 外部網絡:讓LEDE連接外網。
新建的網卡都要開啟MAC欺騙,這么做的具體原因我也不太明白,只記得之前就是這樣搭建的,另外為LEDE接入這兩個網卡時,應該先接內部再接外部。大概結構如下圖,但真正的結構和這個還是有點區別的,這個下面再說。
- 踩坑二
創建外部網絡的時候有個選項允許管理操作系統共享此網絡適配器,這個完意我的建議是還是勾選上比較好,必竟如果LEDE崩了的話還可以通過遠程方式來解決,不然就只有去角落里打開這台電腦解決了。
我這里踩的坑就比較搞笑了,我給LEDE接完虛擬網卡后,沒有測試就想當然的把允許管理操作系統共享此網絡適配器的選項取掉了。結果Hyper-V Server失控了,失控的原因也比較好理解,LEDE中沒映射對應的端口。
我當時的解決方法也比較愚蠢,打開電腦用PowerShell刪除所有虛擬網卡后,重新創建上面的兩張網卡。現在想如果SSH到LEDE后添加一個端口映射就好了。
所以如果勾選上面的選項的話,我們是可以通過路由器直接訪問Hyper-V Server的,結構如下圖。
寫這篇博客也是波折多多,我也來學學知乎上的朋友們復盤一下整個過程。
- 博客內容是放在GitHub上的,不想這些內容出現在我的電腦里,所以放在了Hyper-V Server下的Ubuntu里。
- VS Code遠程到Ubuntu上寫內容沒什么問題,但在使用VIM插件的時候每次退出編輯模式之后,輸入法依然保留在中文狀態,所以下載了im-select.exe並為VS Code添加如下配置:
"vim.autoSwitchInputMethod.enable": true, "vim.autoSwitchInputMethod.defaultIM": "1033", //1033對應的輸入法是英文 "vim.autoSwitchInputMethod.obtainIMCmd": "C:\\Users\\hoyu_\\AppData\\im-select.exe", "vim.autoSwitchInputMethod.switchIMCmd": "C:\\Users\\hoyu_\\AppData\\im-select.exe {im}",
- 發現我的七牛雲圖床不能用了,又在Gitee重新搭建了個圖床。
- VS Code序列圖插件PlantUML需要所在環境有Java JDK,預覽要裝PlantUML Previewer。