用Archipel实现与虚拟机管理程序对话(1)
【51CTO 11月15日外电】开源社区已经推出了世界上最出色的一些虚拟化技术,包括Xen和KVM虚拟机管理程序,各种功能强大的应用编程接口(API),以及Libvirt等接口。但是到目前为止,还没有哪个开源项目为虚拟化环境开发出真正精心设计的跨虚拟机管理程序管理工具。只有少数几个项目要么局限于某一种特定的接口,比如Virt-manager X11应用软件;要么是致力于云计算的工具,比如Xen的Enomalism,对于平常的虚拟机管理程序管理工作来说它又太过了。
管理员们日益寻求的是一种直观的Web图形用户界面(GUI),能够提供这样的功能:集中又全面地管理来自Xen、KVM和VMware等可用系统的成千上万个虚拟机,这时Archipel应运而生,它采用了全新的方法:一小队法国开发人员声称,希望比Enomalism或Proxmox做得更出色,于是深入钻研开源工具箱,开发出了Archipel。
这个Web GUI依靠Cappuccino JavaScript框架,提供了类似桌面应用程序的体验。究其核心,Archipel依靠Libvirt API,以便能够支持所有的主流虚拟机管理程序,比如KVM、Xen、OpenVZ和VMware。就在不久前,Archipel的第二个测试版已发布。
与虚拟机管理程序对话
Archipel采取了一种新方法,它选择扩展消息与出席协议(XMPP)作为与虚拟机管理程序对话的协议。这种即时消息传递协议因Jabber而广为人知,它支持内部消息实时传递,以实现控制和提供信息的目的。这意味着,你甚至可以使用Jabber客户端来查询虚拟机的状态信息,或者发送命令。究其核心,Archipel包括三个部分(见图1):
图1:Archipel架构,包括虚拟机管理程序、虚拟机、Archipel代理和冗余的XMPP服务器。
•Archipel客户端提供了吸引人的Web GUI,这个GUI很像iTunes,可以在大多数浏览器中运行,这归功于JavaScript。(测试客户端可供使用)
•Archipel代理在服务器上用来联系虚拟机管理程序实例。代理用Python编写,采用了模块化结构。管理员可以使用外壳命令,安装和更新代理。
•XMPP服务器架构必不可少,因为代理使用以Libvirt作为基础的XMPP,与虚拟机进行对话。
Archipel建议使用Ejabberd Jabber/XMPP服务器,不过据说实施的其他服务器也行。启动虚拟机的命令通过Archipel客户端上的Jabber XMPP,传送到XMPP服务器;然后,它传送到Libvirt(Libvirt-create),最后传送到虚拟机管理程序(如KVM-create)。