有没有共享服务器的“最佳做法”?

目前,我负责运行Ubuntu 12.04的两台真正的大型服务器(每台128GB Ram和32个8位Xeon CPU)。 学生们可以使用它们进行大数据分析。 我们希望每个用户都能够使用所有的资源,但是,事情变得有点麻烦。 用户可以在他们的主目录(例如Tomcat)上安装他们喜欢的任何东西,但是他们开始抱怨端口被别人占用的问题。

有人build议我们做一些虚拟化(例如LXC),让用户访问容器。 其他人说,我们做了像AWS一样的东西,并让用户创造他们工作所需的资源。

有什么build议么?

虚拟化是给每个人自己的“沙箱”的好方法。 LXC绝对是一个select,但您也可以使用VMWare ESXi或Citrix XenServer。 两者都有商业上的差异,但他们也有单服务器免费许可证。

使用ESXi或XenServer的原因可能更好,因为可以轻松获取快照或克隆系统。 所以如果有人想尝试一些东西,你可以拍一个快照,让他们安装任何东西(在打破所有东西之后),回滚。

如果您select虚拟化,我build议您坚持使用KVM和virt-manager,以便轻松创build/pipe理您的虚拟机。 KVM是Ubuntu上的一等公民,性能很好(phoronix基准testing显示KVM在Ubuntu 12.04上performance比Xen更好),支持非常好,它工作正常,非常可靠。

OpenStack是一个伟大的软件,但增加了许多现在你可能不想处理的复杂性。

如果遵循这条路线,一些技巧可以帮助我:1.在虚拟机上使用virtio设备作为networking和磁盘; 2.好好规划你的networking,我会说维护主机作为所有虚拟机的网关,DHCP服务器和防火墙,使用Shorewall来处理任务; 3.使用虚拟内核(apt-get install linux-virtual),用ubuntu服务器构build和configuration一个基本虚拟机,并保持不变。 每次你需要为学生设置一个新的虚拟机时,你需要做的就是克隆这个基本的安装,修改/ etc / hostname和/ etc / hosts,给虚拟机一个唯一的名字,然后离开。

我build议你在开始VMWare,XenServer的全新安装或任何需要几个小时的工作之前,先给KVM和virt-manager一个快速的尝试。 你可以在几分钟内testingKVM + virt-manager,在当前的ubuntu设置上几乎没有任何变化,这是尝试虚拟化的最简单方法,如果你不喜欢它,你仍然可以像往常一样运行你的服务器。

听起来你可能想考虑看看OpenStack。 我知道在http://www.ubuntu.com/cloud/tools/openstack有一个Ubuntu的实现

我不太了解Ubuntu的版本,但是rhel产品肯定会允许你让学生启动他们自己需要的应用程序的实例,所有这些应用程序都被轻易地监禁了,并且由cgroups控制它们的资源使用情况等等。也允许学生通过浏览器与服务交互,并强迫他们从预定的服务中select服务,而不是让他们自己修改服务。

希望这有助于,画了

LXC或Docker将是一个很好的起点。 与OpenStack,VMware或Xen / KVM不同,你不需要在它周围build立大量的基础设施,也就是说它不是一个庞大的项目。

它将实现为每个用户分配一个TCP / IP协议栈的目标,这样他们就不会造成冲突。

您可以对Docker机器进行模板化,以便其他答案中的某些注释是错误的。

AWS也是一个呐喊,但也有成本的影响,你会有两个冗余的硬件,所以我会先覆盖。