Hyper-V Server + Windows Admin Center

  • 2020 年 10 月 7 日
  • 筆記

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 2019下载

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。看了好多博客,感觉这是一个可行性很高的方案,可以玩一玩。

传送门:Windows Admin Center 下载

  • 踩坑一

只有命令行我应该怎么下载呢?于是只能用最传统的方式在另一台电脑下载软件到U盘里,然后插到Hyper-V Server上用命令行安装就行了。
以下是安装命令,具体说明可以参见官网

msiexec /i <WindowsAdminCenterInstallerName>.msi /qn /L*v log.txt SME_PORT=<port> SSL_CERTIFICATE_OPTION=generate

//我设置的商品号是6515,然后用另一台电脑访问//{ServerIP}:6515,访问成功。

装完后,我意识到,应该可以不用U盘传安装文件的,在命令行中设置共享文件夹应该就可以了吧。

安装虚拟机

简单熟悉这个完意后,安装虚拟机的操作方式大致一样,可以通过Web上传镜像,然后安装。

这里要说的是,整个安装过程中确实没有PVE操作方便,不过也无伤大雅,并且官方文档也说了,WAC暂时并不能取代Hyper-V管理工具。

需要用的虚拟机安装完之后,开始组网,当然还是我比较喜欢的独臂路由,利用虚拟交换机创建两块虚拟网卡。

  1. 内部网络:用于连接LEDE与各个虚拟机。
  2. 外部网络:让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。