我目前负责管理大学里运行 Ubuntu 12.04 的 2 台大型服务器(每台 128GB 内存和 32 个 8 码 Xeon CPU)。学生们应该用它们进行大数据分析。我们希望每个用户都能使用所有资源,但事情变得有点混乱。用户可以在主目录中安装任何他们喜欢的东西(例如 Tomcat),但他们开始抱怨端口被其他人占用等问题。
有人建议我们做某种虚拟化(例如 LXC)并让用户访问容器。其他人说我们做类似 AWS 的事情并让用户创建他们工作所需的资源。
有什么建议么?
答案1
虚拟化是让每个人都拥有自己的“沙箱”的好方法。LXC 绝对是一种选择,但您也可以使用 VMWare ESXi 或 Citrix XenServer。两者都有商业版本,但它们也有单服务器免费许可证。
使用 ESXi 或 XenServer 可能效果更好的原因是可以轻松拍摄快照或克隆系统。因此,如果有人想尝试某件事,您可以拍摄快照,让他们安装任何东西,然后(在破坏一切之后)回滚。
答案2
如果您选择进行虚拟化,我建议您坚持使用 KVM 和 virt-manager,以便轻松创建/管理您的虚拟机。KVM 是 Ubuntu 上的一等公民,性能很好(phoronix 基准测试显示 KVM 在 Ubuntu 12.04 上的表现优于 Xen),支持很好,它工作正常并且非常可靠。
OpenStack 是一款很棒的软件,但是它增加了很多您现在可能不想处理的复杂性。
如果您遵循此路线,以下几个技巧对我很有用:1. 在虚拟机上使用 virtio 设备作为网络和磁盘;2. 规划好您的网络,我会说将主机作为网关,为所有虚拟机提供 DHCP 服务器和防火墙,使用 Shorewall 来处理任务;3. 使用虚拟内核 (apt-get install linux-virtual) 构建和配置带有 ubuntu 服务器的基本虚拟机,并保持其不变。每次您需要为学生设置新虚拟机时,您所要做的就是克隆此基本安装,更改 /etc/hostname 和 /etc/hosts 以给虚拟机一个唯一的名称,然后就可以开始了。
我建议您在开始全新安装 VMWare、XenServer 或其他需要数小时工作的东西之前,先快速试用一下 KVM 和 virt-manager。您可以在几分钟内测试 KVM+virt-manager,几乎不需要更改您当前的 ubuntu 设置,这是尝试虚拟化的最简单方法,如果您不喜欢它,您的服务器仍然可以像往常一样运行。
答案3
LXC 或 Docker 是一个很好的起点。与 OpenStack、VMware 或 Xen/KVM 不同,您不需要围绕它构建大量基础设施,也就是说,它不是一个庞大的项目。
并且它将实现每个用户拥有单独的 TCP/IP 堆栈的目标,这样他们就不会发生端口冲突。
您可以模板化 Docker 机器,因此其他答案中的某些评论是错误的。
AWS 也是一个很好的选择,但是它有成本影响,而且你会有两块冗余的硬件,所以我首先要介绍一下这一点。
答案4
听起来你可能想考虑看看 Openstack。我知道那里有一个 Ubuntu 实现Ubuntu | Openstack
我对 Ubuntu 版本了解不多,但 RHEL 产品肯定允许你让学生启动他们所需的应用程序实例,所有这些都被方便地监禁,并且它们的资源使用由 cgroups 等控制。它还允许学生通过浏览器与服务进行交互,并迫使他们从一组预定的产品中选择服务,而不是让他们破解自己的版本。
希望这能有所帮助,