我想构建一个用于托管虚拟机的服务器。这些虚拟机将扮演不同的角色,例如:
- 数据库服务器
- JBoss 应用程序服务器
- Eclipse 开发实例(Java EE、Scala 等)
每次访问服务器的用户数量约为 5 人。操作系统可以是 Windows 或 Linux,无论哪种方式更适合。用户需要图形/桌面访问 Eclipse 开发实例。
- 如何确定需要哪些硬件规格才能充分支持给定数量的用户和虚拟机?是否有关于每个用户最低资源的指导原则等?
- 假设开发人员实际位于服务器附近,是否可以设置一个带有多个显示器/键盘/鼠标组的多座位盒,并为每个用户分配一个访客、键盘、鼠标和显示器头?此设置的软件和硬件将如何构建?
答案1
如何确定需要哪些硬件规格才能充分支持给定数量的用户和虚拟机?是否有关于每个用户最低资源的指导原则等?
让我们看一下您要运行的软件的各种情况:
- 数据库服务器
如果您有一台数据库服务器供所有开发人员共享,则应让数据库服务器能够访问许多 CPU 核心和尽可能多的 RAM。快速(但不一定很大)的磁盘很重要。磁盘大小取决于您是计划存储完整的生产规模数据以供开发使用,还是仅需几 GB 即可。数据库瓶颈可能是一件坏事,但请记住,开发数据库工作负载与生产数据库工作负载可能大不相同。前者规模可能较小,涉及更多低效查询(查询仍在开发中,数据正在通过即席查询探索),而生产数据库可能会针对其运行优化查询,并对大量数据集进行操作,这些数据集(希望)大部分缓存在 RAM 中。
- JBoss 应用程序服务器
JBoss 主要会使用 CPU 时间(执行 servlet 时)、大量 RAM(因为它是 Java)和网络带宽。与数据库一样,高级应用服务器可以从多个核心中受益。确定要分配的虚拟核心数的最佳方法是在不同核心数下进行测试。但一般来说,分配的虚拟核心数永远不要超过物理核心数。
- Eclipse 开发桌面环境
这很棘手。Eclipse 本身会占用几百兆的 RAM,但是一旦所有插件都加载完毕,这个数字应该保持相当稳定和稳定。因此,您可能需要根据运行的插件数量来检查需要多少 RAM。最简单的 Eclipse RCP 应用程序可以使用少至 10 或 20 MB 的 RAM,但带有 GEF 工具、版本控制工具和数据库工具的成熟 JavaEE 环境可能会占用超过一千兆字节的内存。Java 源文件的编译不像本机代码那样依赖 CPU,但仍可从多核中受益。但一般而言,您的 Eclipse 实例可能比数据库或 JBoss 实例使用相对较少的资源(CPU、RAM、磁盘)。
总体而言,如果拥有 5 个用户,再加上一些以资源消耗大著称的服务器端应用程序,您的电脑应该看起来比较高端。不说品牌,比如:四核处理器、24 GB 或更大的 RAM、SSD 或快速硬件 RAID 硬盘阵列。
假设开发人员实际位于服务器附近,是否可以设置一个带有多个显示器/键盘/鼠标组的多座位盒,并为每个用户分配一个访客、键盘、鼠标和显示器头?此设置的软件和硬件将如何构建?
你很快就会了解到有很多选择并且这个领域没有强大的领导者。没有一种显而易见的方法可以让 99.9% 的人使用。有些人根本不使用虚拟化。有些人使用 Xorg 的多个实例。有些人使用 Windows Multipoint Server。有些人使用...你明白了。这绝对是一种可行的配置,尤其是对于只有五个用户的用户...优点是您不必为每个人配备台式电脑,只需配备显示器/键盘/鼠标即可。缺点是您必须拥有更强大的中央服务器来支持所有用户,并且软件配置更复杂。
对于多座位配置,您需要足够的显卡,以便拥有足够的端口来连接所有需要的显示器。您还需要一个 USB 集线器来连接所有键盘和鼠标。
请注意,一旦您决定采用多席位配置,您将在显卡(可能还有多席位软件)上进行投资,这将使您的开发人员必须实际位于服务器上。因此,如果您稍后决定引入另一位在世界其他地方工作的开发人员,他们将无法(轻松地)通过拉把椅子并带上键盘/鼠标/显示器加入您现有的设置。一旦达到视频卡端口限制,扩展您的设置以容纳更多开发人员也会很困难。