为多个用户共享一个 Linux 桌面服务器:远程桌面还是虚拟化?

为多个用户共享一个 Linux 桌面服务器:远程桌面还是虚拟化?

我们是一家小型网络软件公司(约 10 名员工)。目前,每位开发人员都在本地机器(一些是 Windows,一些是 Ubuntu)上使用本地 Apache 工作。我们有一个用于共享文件的 Samba 共享和中央 SVN 存储库。

我希望将来能将我们的基础设施集中化,让每个人都在中央服务器上工作。有两种选择:

  • 虚拟化:每个人都在中央胖服务器上拥有自己的虚拟盒。
    优点:快速设置,隔离用户,快速添加新盒子。
    缺点:因为每个用户都有自己的操作系统,对硬件的要求都比较高。更新软件(新版 Eclipse 等)不会影响每个人,除非他们开始使用新的虚拟机,这会导致碎片化或再次浪费工作时间。由于缺少安全更新和用户以 root 身份使用该框,可能会出现安全问题。
  • 远程桌面:每个人都连接到中央 ubuntu 服务器,从那里使用远程桌面。选项包括真正的 X 客户端、xrdp、VNC 等。
    优点:易于使用,中央数据存储,软件更新立即生效,中央控制简单。不需要太多硬件。用户不是 root。SVN 存储库可能是本地的,这意味着速度加快。
    缺点:用户没有被隔离(团队内部存在潜在的安全问题),Apache 重启等会影响到每个人。

这两种解决方案都需要快速网络和大型服务器。目前,我倾向于使用 xrdp 作为远程桌面访问。您有什么经验?一种方法相对于另一种方法有什么缺点?我错过了哪些选项?这里有没有人成功虚拟化了软件开发团队?

答案1

在现代 IT 世界中,您描述的缺点并不实际。硬件非常便宜,使用虚拟化时的投资回报率很高且很快。使用 chef 或 puppet 可以轻松管理软件更新和管理。安全问题局限于单个 VM,而不是整个终端机,如果您选择了正确的解决方案,更新级别的安全性将由供应商处理。顺便说一句,要加快存储库访问速度,请使用 git - 一旦开发人员克服了最初的震惊,他们就会爱上它

对于终端机来说,资源管理可能变得相当困难,而对于虚拟机来说,您不仅可以获得更好的资源分配,还可以获得更好的理由来获得更好的硬件。

答案2

让每个人都拥有自己的虚拟机的方法在内存方面远不如共享系统高效 - 但它确实使允许人们同时运行不同的 Apache 配置变得更容易。管理可扩展性也更简单 - 您可以根据需要将虚拟机迁移到新硬件上。虽然您可能不希望突然雇用更多员工,但这两种方法都意味着您无法轻松地对应用程序进行性能可扩展性测试(因此,能够将用户迁移到专用机器上几天听起来是个好主意)。

有一些很棒的工具可以管理“集群”,其中大多数适用于维护多台台式机,因为你已经在运行 Ubuntu,Canonical 的前景是一个显而易见的选择。但是如果是我,我会选择标准构建,然后将用户主目录移出虚拟机,放到 NFS 共享上。并对 /etc/sudoers 进行一些巧妙的计划,以便用户可以在他们“自己的”机器上获得 root 访问权限。

答案3

尝试无机器(NX)。它既有免费产品,也有商业解决方案。它轻量级、快速,拥有一套非常通用的客户端应用程序,并使用 ssh 作为传输。如果需要,您还可以将 NoMachine 与虚拟系统结合使用,以实现不同级别的隔离。您可以在以文本模式运行的服务器上运行 NX。只要安装了 GUI 元素,用户就会获得全屏 X 会话(也可以跨显示器)。

答案4

我们有 3 名开发人员,我们使用远程桌面(但我们实际上不使用 RD,因为我们正在开发一个网站,所以我们使用 Eclipse 或 Notepad++ 或 Coda 上的“远程文件浏览”开发代码,并通过互联网查看网站)。我认为它效果很好,同时更新的优势非常棒。我们不太关心团队内部的安全性,所以我不能谈论这个担忧。Apache 重新启动需要 2.5 秒,所以谁在乎呢?

编辑 我使用 Windows,而其他两个人使用 Mac。它对每个人都很好用。

相关内容