引言
那上篇咱们讲到,我们买了硬件,组装好了一个大宝贝。
那我们如何才能把它正确的、有效的、合理的玩起来,这个难题接踵而至。
如果就把它视为一个单一的、很大的裸金属机器来玩,倒也不是不行,只是一方面无法满足我们当时想的那样,将它化身为诸多小虚机来完成不同服务之间的隔离,另一方面也太没技术含量了(手动狗头doge),这..这..这怎么好意思给别人说我有一个“集群”呢?
所以虚拟化这台服务器是势在必行的一件事,那么本篇就从虚拟化解决什么问题、有哪些构建虚拟化的方案、主流服务器级虚拟化方案和最终选用的虚拟化解决方案这四个步骤展开详解。
话不多说,开整!
虚拟化解决的问题
其实无论是学习时代,还是牛马生涯,我们或多或少的都接触过虚拟化技术,以及享受过虚拟化技术带来的便利和好处。
虚拟化简单来说就是通过有限的硬件资源,模拟出更多有完整物理资源隔离或共享物理资源的操作系统。
那它能解决的问题有以下几方面:
1. 不同服务之间希望系统级的环境独立构造和维护
2. 充分利用物理机器资源,将大机器分割为若干小机器给不同业务使用
3. 服务之间通过做物理隔离保证互相之间不抢占资源,以前隔离能力做不到硬隔离,只能逻辑隔离,现在通过 CGroup 等内核能力,可以做到资源硬限了
4. 更快的、更安全的创建、销毁、扩缩容节点,支持热拔插、热加载等能力
所以作为一个经验丰富、有多年开发功底的你,很自然的就发现了,这几方面的能力,或者说这几点优势,综合起来特别像我们在阿里云、腾讯云等国内外云厂商上买到手的最终服务器产品(ECS、EC2等)。
阿里云 ECS 16vC 64G 2T * 2 SSD 8台 包年示例
那在经验更丰富的电商巨头亚马逊大神们眼中,早在十几年前,就发现了这一点可以带来的巨大商业价值,往后随着这项技术的蓬勃发展和 AWS 的成立及推广,有了现在我们耳熟能详的一个技术名词:云原生。
云原生坦白来讲,就是通过强大而牛逼的服务器裸机管理技术,将大规模物理机资源进行池化(就是把多节点资源看成一个大池子),然后用的时候快速的构建虚机对外提供服务,从客户角度基本不会感知到底用的是单台物理机还是池化以后的一部分机器资源,反正到手的就是你买的那么多资源。
那这里靠什么赚钱呢?
1. 相较于私有化交付硬件和操作系统,SaaS化服务大幅度降低了人力部署成本
2. 虚拟机的资源超售,比如1物理核虚拟为3逻辑核,一份物理资源卖三份收两份半的钱
3. 大规模购买物理机器带来的规模效应,平均单位持有成本较于零售机器大幅度下降
4. ……
这里就不展开讲了,反正大家有个基本概念了解就行,等以后有时间了跟各位看官老爷们唠这个磕。
虚拟化的几种构建方案
前面我们讲到大家或多或少都用过或者享受过虚拟化技术带来的成果,那常见的有几种形态,从轻量到重量简单划分三个常见的级别:
1. 容器化(Docker、WSL2、Containerd 等)
2. 桌面级虚拟化(VM Workstation、Vmware Fusion、VirtualBox等)
3. 服务器级虚拟化(KVM、PVE、ESXi、FreeVM、StarVCenter等)
第一种容器化技术,最早见于 Docker 技术的兴盛和应用,后来又有基于容器的编排工具 K8S 火了很多年(就是喊着云原生基座这个 Title)。
这项技术发展的时间比较长,所以无论是主流个人 PC 图形系统(Windows、Mac),还是服务器系统(RedHat、CentOS、Ubuntu 等),都有很好的生态适配性,且针对个人 PC 图形操作系统,还贴心的有 Desktop 可视化管控软件,所以一般的开发同学会使用 Docker 快速构建一个开发环境,用于代码调试或开发验证等。
同时容器化技术作为轻量级的虚拟化方案,往往不像重量级的虚拟化方案那样具备非常完备的隔离形态和稳定性,所以 K8S 的出现,将业务开发进行了一次大改革:将容器视为应用程序进程级的资源构建方案,将过往庞大的应用端项目拆解成微服务(即逻辑和代码解耦以后一个小模块一个小模块的拼接,每个小模块有独立的、单一的服务能力),然后把每个微服务模块装进容器里,比如下单支付模块、会员秒杀模块等,借助这种细粒度的服务管理能力,实现不同能力模块的资源动态调配,也实现了最小化服务故障的效果。
但是这种技术很难搞定比如一个可持续稳定运行的 Windows 系统,所以它的适用范围就是服务层应用程序的虚拟化场景。
第二种桌面级虚拟化技术,我们在学习阶段更常见,尤其是学习大数据技术栈的时候,过往组件极多,一个 Hadoop 就得需要多个节点来完成部署学习,但是大家都还是学生,如果学校没有配有机房或者可应用的环境,那也就只能听听理论,无法实操去感受和调试了。
这时候聪明和敏锐的你,肯定想到了打开百度或者谷歌:如何在 Windows 电脑上运行多个子系统?
经过一番摸索,使用 VM 桌面级技术搞好了4台虚拟机,随即进一步探索在 VM-Windows 上装 Windows、在 VM-Linux 上装 Docker 等各种套娃骚操作,事已至此,神功大成~
这类技术适用于学习和开发环境做模拟,尤其是在个人PC服务器上玩的技术,稳定性和可靠性很难达到应用服务生产级的要求,所以玩过的你也肯定经常遇到:一段时间没用,或者断电重启了以后,虚机坏了,打不开了等各种令人沮丧的时候。
不过不用担心,那一定还有能解决这些问题的技术方案——服务器级虚拟化方案。
第三种服务器级虚拟化能力,就是上一小节咱们聊到的,云商赚钱用的主要生产力工具。
该技术绝大部分都是基于 Unix 系统完成的虚拟化,而每一个虚拟的子系统,都可以视为一个独立的进程服务,再配有 KVM、CGroup 等内核级物理资源限制技术,就可以比较彻底的将虚拟化进行到底。
那上述相对比较技术化的语言转为大白话来讲,就是在物理服务器上装一个 Linux 系统,然后再在这个系统上做手脚,通过创建进程级资源虚拟化为虚拟系统,从而实现一台机器分割虚拟为多台虚机的能力,这上面还得配有一套可视化的管理 Web 界面,方便运维和监控。
当然大厂用的跟咱牛马用的大概率不是同一个玩意,他们一套软件管控的节点可达上万台,咱可能就一台,但由于这种技术现在相对成熟,所以方案也比较多,而且稳定性不是桌面级虚拟化可比拟的,对资源虚拟化以后损失性能比例也低很多,综合而言,是当下比较好的一套解决方案。
主流服务器级虚拟化方案
既然确定是用服务器级的虚拟化方案,那就是在 PVE、ESXi、FreeVM、StarVCenter 等成熟方案中选择一个,这里用一个简单的表格对比一下这几个方案的优劣,便于后续选用。
以上这四种方案,都是我实际操作测试过的,后两者主打国产化产品的亮点,但在社区版中对虚拟化的限制还是有的,那就来讲讲几种方案在实操过程中带来的困难和各自的优劣。
FreeVM
首先讲讲我觉得安装最简单无脑的 FreeVM 吧。
首先从安装的流程和顺利程度而言,非常棒,十分钟搞定。
因为我这个主板集成的网卡是瑞昱的 RTL 8125 型号,这个型号在部分虚拟化方案的官方ISO镜像中并未集成。从使用者角度而言,门槛非常低,而且包的大小也比较小。
唯一让我放弃它的点就是社区版限制了 vCore 数量,其中FreeVM在集群都装好了,创建都感觉没啥问题的情况下,死活创建不出来16C的机器(没有报错,日志也没有信息),最后问了社区的同学,才得知有限制,所以只能就此作罢,不过国产不易,各位有能力的可以支持一波(我太穷了,花了很多个月的零花钱,财政赤字有点严重 - -|| )。
如果各位虚拟的机器在8C16G及以内,可以使用 FreeVM,简单易用,稳定性还没测过,不过应该差不多。
StarVCenter
其次是 StarVCenter,这个方案是 PowerData-追风者 好哥哥给我推荐的,说十分钟搞定它!
好嘛,我太菜了,花了四个班后的晚上,也没搞定它,甚至有一天搞到了晚上三点。
那遇到了啥问题呢?
网卡驱动。
是的,这个磨人的事啊,太让我痛苦了,想了很多法子,都没能成功把 R8125 的驱动给弄进去,在 StarVCenter 社区垂询了各位大佬,没能得到解决答案,只能最后悻悻然拔下 U 盘,躺床上睡了。
如果你的板载网卡或者加装的独立网卡在它的适配范围内,那根据追风者的描述,安装简单、使用顺手、稳定性好,但劝退我的还有一点,就是官网上描述的:性能会限制 70% 的 CPUs Num,本身咱就穷,一限制岂不是更穷了……
PVE
在尝试前两种方案都失败后,选择了应用范围比较广,且是开源的 PVE 项目。
先从易用性角度和解决问题的角度来看,PVE 的确成熟度比较高,内部集成了 R8125 的网卡驱动,在安装方面也没有什么卡点,一次性安装成功,使用大概用了两天左右,感觉挺顺手的。
那最后为啥没有继续选择它呢?
1. PVE 8 系列版本,在 LVM 等磁盘虚拟化时候有一些异常表现,具体如下:
• 创建资源时无法找到已挂载的磁盘
• 无法根据已挂载的磁盘创建 LVM,只能通过挂载目录的方式创建目录存储资源
2. 在网络通讯设置里,不是特别友好,想通过 FRP 做内网穿透实现远端服务器,各种姿势试了一遍,没成功,主要是桥接网络和NAT网络的设置,通过桥接转发时候出了问题,在这方面研究不深,遂作罢
这里也有可能是我自己菜的原因,不能怪产品,毕竟我又没能力修复……
不过如果仅是常规玩,PVE 应该没什么问题,也有可能是选定的版本过高导致的,大家有兴趣可以试试。
ESXi
最后轮到了虚拟化产品的一个重磅大佬 —— ESXi。
ESXi 其实是我第一个测试的方案,也是好兄弟 PowerData-小狼 强力推荐的方案,先用百度百科介绍一下这个哥们:
ESXi专为运行虚拟机、最大限度降低配置要求和简化部署而设计。只需几分钟时间,客户便可完成从安装到运行虚拟机的全过程,特别是在下载并安装预配置虚拟设备的时候。
ESXi 是 VMware 的子产品之一,对,就和桌面级大家经常用的 VMware Workstation 是一个全家桶内的产品,不过 ESXi 是服务器级的虚拟化技术,稳定性要远胜于 Worksation。
那为啥第一次没选 ESXi 呢?
对,你没看错,也是没有网卡驱动,我真是对这个问题深深鞠了一躬……
我从 8.0 一路降级试到了 6.7,最后在狼总的推荐下,去恩山论坛找到了这个问题的解决方案,此处消费了我三个班后时间(那几天没能带我的投资人坐飞机跳N港钢枪我是真的难过)
最后从实践的角度来看,ESXi 无论是稳定性、网络配置便捷程度、磁盘划分能力等各方面,都是 TOP 级的存在,当然如果你去找 GPT 给你讲关于 ESXi Key 的睡前故事的话,那或许你会解除 60 天试用的烦恼和限制 ^_^
小结
如上所述,最后我选定的技术方案就是 ESXi 了,给大家看看管控界面。
现在已经持续运行了 13 天了,随时随地可以通过 FRP 内网穿透连上自己的大服务器的感觉是真的很爽,比如随手做个 SSB 或者 TPC-H 的测试,比如开发代码或者编译二进制包,整体的响应和延迟不是我那 4C4G 轻量级服务器所能比拟的。
最近出差太多了,没有时间开启系列课程事宜,等我稍微松口气,我就抓紧开干。
这篇是在出差路上没网没法工作了码的,图是后来补的,大家不要介意。
看到这了来个点赞和在看吧,这就是我持续更新最大的动力了~
下一篇给大家看看在这拼凑的机器上跑 TPC-H 和 SSB 标准测试集能不能有一个令人满意的效果~
See you~