有没有好的做法分配/部署Linux的KVM图像?

我有一个Web应用程序,需要相当多的依赖。 我目前正在评估使用kvm图像来帮助我们的用户在他们的服务器上安装这个应用程序。

然而,我们有一些关于定制这些图像的可能性,主要是networking和存储。

潜在的networking问题:

许多站点有多个networking(例如,一个用于公共Web界面的networking和一个用于数据的专用networking),并且虚拟来宾有时需要访问他们两个。 这应该很容易处理使用两个(或更多)虚拟networking接口。 然而:

  • 有些站点使用DHCP,而其他站点需要静态IP
  • 某些networking上存在MAC地址限制
  • 如果我们在命令行更改MAC地址,虚拟客户端可能会分配一个新的接口(即eth2 / eth3而不是eth0 / eth1)。 由于udev规则,我们的debian客人会发生这种情况。
  • 当这样的networking问题发生时,通常客户在尝试加载某些networking服务(例如MTA)时会在启动时花费时间。

我必须确定,目前访客通过桥接访问networking。

你用什么技术来解决这些问题? 有没有办法configuration一次虚拟客人,并在最小的configuration下运行它? libvirt能为这个过程提供一些帮助吗?

谢谢 !

编辑:

感谢您的第一个答案。 现在我意识到我应该更精确一些:

首先,我们的应用程序当然可以安装在任何types的虚拟机(XEN,VMWare等)中,我们将为用户提供select。 我只关注KVM,因为有些网站提出了预先configuration的KVM映像的请求,并且不像现在使用Xen那样适合使用虚拟化技术。

其次,前面描述的networking问题他们可以面对的问题或多或less是我在工作中面临的同样的问题:我通常在我的台式计算机上创build一个虚拟机,然后将存档移动到群集中进行生产。 但是,我的台式电脑和集群之间的环境差别很大。 Linux版本是不同的,我们使用不同的专用networking等等。 所以,我们只想简化从计算机到集群移动虚拟KVM机器的过程。

实际上,我正在寻找一些强大的解决scheme,为虚拟客户提供一些关于他们的环境的提示。 例如在libvirt XML文件中添加一些信息,比如eth0和eth1的mac地址以及这些接口的IP地址,以及其他类似的东西(NFS等)。 由于我们使用networking桥接,我不认为主机上的本地DHCP服务器可能是一个很好的解决scheme,只能解决问题的一部分。 那么真正的酷就是将主机的configuration信息传递给来宾。 也许这已经存在,或者可以通过某种方式来实现。

所以我重新提出的问题是:是否有一个好的 (强大的,标准的,优雅的,无论) 从主机到客人 (理想情况下直接使用libvirt XML)的信息,如果它不存在或这个想法完全愚蠢(然后请给出为什么这是一个愚蠢的想法的论据)。

再次感谢) !

你可能会更好地将它作为一个完整的堆栈安装,包括操作系统和所有的依赖关系,在一个你知道它运行良好的操作系统上。 然后,让最终用户决定是要将其独立安装,还是将其安装在KVM,VMWare,Xen或其他虚拟机上。 用KVM映像获得的唯一的东西是一些硬件不可知论的东西,但是在你指出的时候,仍然存在潜在的缺陷,而且该网站必须愿意且能够维护KVM主机除了你的应用程序和操作系统。

编辑:为了回应你重新提出的问题,我想你还是要把这些东西留给网站 – devise上,虚拟机客户端无法控制主机上的networking设置。 您当然可以以最简单或最有效的方式提供相关文档和说明,但这可能因地点而异。 不pipe您做什么,如果您将其作为VM映像或设备进行分发,则该站点将不得不有效设置和维护专门configuration为在其networking上运行的VM主机。

这并不是说有人真的做到了,但是这正是DMTF开放式虚拟化格式所要解决的问题。 对不起,我没有更好的build议。

您正在考虑简单的技术细节,而不考虑大局。 一个图像的问题是,它不能很好地融入网站的基础设施。 它可能是一个不同的操作系统。 它可能不遵循网站的configuration/安全标准。 它可能不与站点的修补和configurationpipe理系统,其备份系统,HA /负载平衡系统或DR系统集成。 基本上,这将是一个痛苦的拇指,会给系统pipe理员的悲伤。