虚拟化是IT服务的基础设施,我们使用的大部分在线业务都跑在虚拟机上。这是因为,相比于实体机来说,虚拟机的可控性更高,备份,恢复,迁移,扩容这些对于实体机来说很困难的操作,对于虚拟机来说只是常规操作。
大公司采用的虚拟机集群,或者说公有云,私有云等,因为要考虑网络,存储,迁移,容灾等因素,所以架构非常复杂,比如openstack, vmware vsphere等。搭建起来可能要好久,并且为了性能,需要昂贵的交换机设备,与光纤网卡。
对于小的公司来说,公司内的业务系统因为规模小,用不到多服务器的集群,云服务对于非公网业务来说,又过于昂贵了。单机虚拟化更加经济,也更易于管理,是小公司的不二之选。
常见的单机Linux虚拟化解决方案VMware ESXi, VirtualBox, KVM+Libvirtd等。(说到底esxi与vbox也都是基于KVM的)
ESXI
ESXi的安装方式是需要裸机安装,因为是自带操作系统。安装完成后,有一个网页可以操作。esxi的优点是大厂出品,稳定性很好,并且有Web UI可以操作。缺点是只支持从ISO安装系统,一个虚拟机操作系统的安装可能需要十几分钟。而如何是付费用户,可以使用VCenter来管理ESXi,这样就可以使用OVF模板快速创建虚拟机了。
VirtualBox
VirtualBox是一个应用程序,可以在支持的Linux服务器上安装,安装好以后就可以通用GUI操作。但是显然,这种方式对服务器用户来说非常不友好。另外,Vbox与ESXi一样,没有原生支持Cloud-Init云镜像,没有办法快速创建虚拟机。
KVM+Libvirtd
KVM+Libvirtd理论上来说更加远始,因为你需要从命令行开始操作。但是这对于一个熟练的运维人员来说,却是最合适的。
管理虚拟机可以用virsh console
创建虚拟机用virsh install
对于Cloud-init云镜像,更是只要几行命令就可以搞定。
Cloud-init的原理是在虚拟机模板中安装cloud-init这个软件,该软件会在虚拟机启动时,根据传入的参数对虚拟机进行配置。参数传入一般是使用iso镜像挂载,ISO镜像中需要包含两个文件user-data和meta-data。具体可以参考cloud-init的官方网站
最优选择:OpenNebula
但凡用过CloudInit以后,就回不去了。没人愿意花十几分钟只是装一台虚拟机,我们要的是跟云平台类似的体验,一键点击就可以快速创建虚拟机。这里推荐OpenNebula。
这个软件是对标OpenStack,但是提供了单机版本可供一台机器运行。该软件可以完美支持云镜像,又有Web界面提供,可以说是运维的好帮手。
最后
当接触虚拟化的时候,因为还不知道OpenNebula,所以自己手撸了一个工具https://github.com/seahurt/nocloud-cloudy,用来快速创建虚拟机。技术栈是flask+vue, 后端用python生成iso然后调用virsh install创建虚拟机。实现了密码,SSH key, IP等信息的方便设置。到现在IT部门还在用我这个工具。只能说能实现客户功能的工具,不管多简陋,都会有客户用的。