如何从服务器A到B进行远程调用来创建虚拟机

如何从服务器A到B进行远程调用来创建虚拟机

这是我在 serverfault 上的第一个问题,所以我希望我做对了,因为我通常在 Stackoverflow 上:-)

我有两台 Ubuntu 14.04 LTS 服务器,服务器 A 和 B。

服务器 A 运行 Web 服务器,我的客户门户在该服务器上运行,客户可以在该服务器上订购虚拟机。

服务器 B 是带有 KVM 的虚拟机管理程序,在其中创建映像并最终创建虚拟机。


我最近在服务器 A 上创建了一个 bash 脚本:

  • 从 mysql 表中获取仍需创建的虚拟机的信息并循环遍历它们;
  • 检查服务器 B 的可用磁盘空间,如果空间足够,则
  • 使用服务器 B 上的 fallocate 程序创建图像;
  • 使用之前创建的映像在服务器 B 上使用 vert-install 创建虚拟机。

所有这些命令都是使用 SSH 执行的。这意味着对于每个虚拟机,我都需要执行 3 个 SSH 命令。如果虚拟机管理程序没有足够的磁盘空间来创建映像,则需要执行更多命令。


当只有 1 个客户订购虚拟机并且只有 1 个虚拟机管理程序时,此脚本工作正常。如果有多个客户订购虚拟机并且有多个虚拟机管理程序,则可能会破坏脚本。然后我想到了以下解决方案:

每当客户点击“订购虚拟机”按钮时,就会对虚拟机管理程序 + 端口进行 telnet 调用,并且监听该端口的守护进程会运行一个脚本,例如:

  • 端口 7000:创建镜像
  • 端口7001:创建虚拟机

但问题是我对这类东西缺乏了解。例如:

  • 我应该用什么语言来编写守护进程?PHP 是我的主要语言,但是由于它是“即将消亡的语言”,因此可能不适合编写守护进程。
  • 这个守护进程如何监听多个端口,并根据进入的端口采取正确的操作?
  • 对于这种过程,telnet 是合适的协议吗?守护进程只会监听我们自己网络中的私有地址,这意味着这里的安全性没有问题。是否有更适合的其他技术?

我没有尝试太多,因为我不知道从哪里开始。有很多事情要考虑,但我只需要在正确的方向上稍微推动一下就可以开始。我不一定需要示例代码(当然它可能有帮助)。如果需要,我可以提供我创建的 bash 脚本。

答案1

不要重新发明轮子。只需使用 libvirt 和语言绑定你的选择。

相关内容