用proxmox做服务器虚拟化已经很长一段时间了,不过全玩的是单服务器,最多也就弄三台整个集群,因为没有共享存储,无法实现高可用(雇主舍不得投入,还欠俺很多工钱呢)。近期给人出了一个方案,计划用proxmox高可用的方案,虚拟出n多虚拟机,然后把业务系统部署上去。方案讨论了很多次,发现共享存储的方式,费钱又费磁盘。考虑性能的话,得用15000转的sas盘,但这种规格sas盘的容量最大是600G,而且单盘价格很高。用容量的sata盘吧,解决了容量问题,但性能又会成为瓶颈。回来对方说,有人用ceph做存储,挂接之,再创建做服务器虚拟化。
以前做过分布式存储moosefs、Hadoop dfs等,都有一个软肋,即存在控制节点(或者叫命名节点一类),控制节点是关键,一死全死。最近查看moosefs官网,新版的商业版本,整出两个master来,死掉一个,其他节点选举剩下的那个节点做master。这样整出来,光存储就是好大一堆服务器了。当然,有钱的可以买商业存储,解决性能和可用性问题。既然有人推荐,那就去了解一下ceph,嘿嘿,是去中心化的架构,这一点有优势了。
虽然有人用ceph做存储,但与服务器虚拟化是单独使用,我的意图是能不能整合到proxmox里?官网一看,好家伙,proxmox5.x 集成了ceph啊,天意!
本来就有很长时间的proxmox使用和维护经验,花点时间看看官网英文文档,大概就明白怎么一个情况。弄台式机来虚拟三个节点的proxmox,谁知配置不行,卡的要死无法往下进行测试。正好北京有人要做虚拟化,让我过去做个咨询,哈哈,有了物理机,测试有着落了。
建议的方案是,用四台物理服务器,配置完全相同,划分两个网段,一个是网段用于存储,另一个用于虚拟机等。存储分配上,ssd安装proxmox,大概200G的ssd。剩下的盘位,插3块以上的10000转的sas大容量盘(单盘1.2T-1.8T)。我只在电话里大致说了一下建议,等我到现场的时候,他们已经配置得差不多了。在ha那步卡住了,我给点拨了一下,暴力关机,运行其上的虚拟机状态显示正常,本打算用手工方式迁移到其他节点,没想到片刻自动漂移了,大喜过望!
看到管理界面有那个spice协议,实验了一把。关闭某个虚拟机,编辑其硬件属性,显示器一项改成spice,然后启动此虚拟机,真的可以呢!
遗憾的是,只能通过浏览器,点控制台下拉菜单spice才可以。
而我希望用virt-viewer客户端访问,这样如果能成功,就可以采购云终端盒子进行连接。把服务器虚拟化与桌面虚拟化集成在一个proxmox上边,远胜于其它商业解决方案。
查看宿主服务器的进程及网络,只发现spice代理进程spiceproxy。
监听tcp 3128端口,试着telnet 该端口,可以连接。如果虚拟机显示器选定了spice,启动后,附带启动一个61000端口的服务,进程名为kvm。再启动一个选择spice显示的虚拟机,宿主机就再起一个tcp 60001的端口。监听地址是127.0.0.1,进程名还是那个kvm。由此可以判断,以浏览器操作管理界面的下拉菜单spice,代理程序把这个请求传递给127.0.0.1:61000端口,于是可以弹出窗口。
直接用客户端连3128端口,不灵;换61000端口,还是不灵。查了很多资料,也问了一些人,无果。这段时间,甚至走路都在想这个怎么突破。后来,查到一种方法,用qm showcmd vmid 查指定虚拟机的整个kvm 指令所带的全部参数和选项,这些参数和选项,到现在还不知道藏哪个配置文件里?当我们用web管理界面创建虚拟机的时候,应该会去读某个文件,但肯定不是虚拟机那个配置文件,配置文件我查了,参数值很少的。比如我的某个虚拟机的id是100,我就执行 qm shoucmd 100>/root/vm100.sh,执行完毕,就去修改这个文件,找到spice那行,改“127.0.0.1”为本地网卡实际地址,注意这个文件就是一整行,不要回车换行哟。不能确定会不会有作用,执行一把再说,如果不对,也不会有什么影响(再次重启虚拟机后,这些配置是不会不保存和加载的)。执行此脚本无报错,看管理界面,虚拟机是启动起来了。到宿主机看看网络监听,61000端口绑定到实际网络接口,而不是先迁的127.0.0.1.看来有戏。远程telnet这个61000,嘿嘿,能连呢。现在,可以试试客户端,小心翼翼输入"spice://172.16.35.99:61000",等待中....,哇塞!真出windows登录界面了呢!
化缘网购的盒子到了好几天,客户端连接正常,那么拿盒子也是不在话下了。
设置好盒子的值,猛戳连接。
到这里,总算有前进了一步。不过有问题,如果把这个交付给别人,不能让人编辑脚本,再执行这个脚本吧?并且,虚拟机每次重启以后,这些设置就没有了。这个问题需要解决,继续查资料,问人。有开发虚拟平台的兄弟说可能有类似xml这样的文件存在,宿主机搜吧,没有。差不多把目录都翻遍了,没找到有用的信息。暂且搁置吧,后边再搞。
这远程windows用spice协议连上以后,鼠标有两个,点击起来特别费劲。用盒子连或者用客户端连,都是这个尿性,直接问卖盒子那个杰云厂家售后,答复说需要在虚拟机里边安装vgaent,可以从spice-space.org官网下载。这好办,进去点download,真有这玩意,仔细看发现一个spice-guest-tools包,包含了vgaent等,就是你了,下载到虚拟机并安装,还真可以,鼠标只有一个指针,完全正常。
后边还有问题,没有声卡、u盘识别。继续回去折腾spice,今天骑摩托到山上,突然想到,能不能直接改虚拟机配置文件呢?咋老司机,改之前备份一下。回来后,立马动手,查看官方文档,可以在配置文件里写参数.
改完,重启虚拟机,还真有效。下一步,怎么给加个界面,在web界面创建虚拟机的时候,把监听地址、监听端口、用户密码等,通过某种方式传递到虚拟机配置文件就完美了。
基本思路:弄个脚本,等创建好虚拟机配合文件后执行,取得其id,以610 id号做端口,并接受密码输入。交互后,输出文本文件,记录监听ip、端口、密码,交给用户使用。
具体如何修改虚拟机配置文件?能调试出spice连接、声卡、usb等,请订阅俺的专栏,猛戳此处直达。
最后,来总结一下私有云通杀神器proxmox的强大之处:
1、去中心化,死掉哪个节点都无大碍。vmware有vcenter,这个死翘翘以后,有些功能不能用了,一比见高低。
2、超融合。虚拟化平台、存储融合;服务器虚拟化、桌面虚拟化融合。据了解,大部分的商业方案,服务器虚拟化与桌面虚拟化各干各的,管理成本和采购成本,那是杠杠的高。
3、超低成本。不需外挂共享存储,光这个就省老鼻子了。商业解决方案,动不动一个cpu core报价就以万为单位,不过是openstack改改,价格壳壳嘛。
4、部署简单快捷。proxmox本身就是iso文件,烧录到u盘,引导后一路回车,分分钟搞定一台;建立集群,每节点仅仅执行一条命令行指令,后边的配置都在浏览器进行了。试问其它方案,不管商业的还是开源的,谁能这么便捷?别的不说,试试openstack,老司机都得犹豫。
来几张图,看看土豪公司的资源。
六个节点物理服务器组成的小集群。
176个线程,除以2就是88个核心,舍得投入啊。