1998 年,我在明尼苏达大学为新的网络团队管理服务器管理小组。明尼苏达大学是一个非常庞大的机构,在所有校区拥有超过 60,000 名学生。在此之前,大学在老化的主机系统上管理其学生记录。但这一切即将改变。
主机系统不符合 Y2K 标准,因此我们正在努力建立由 PeopleSoft 交付的新学生记录系统。新系统对大学来说意义重大,不仅因为它使我们的记录系统现代化,还因为它提供了新功能。然而,它缺少一个关键功能:你无法通过网络浏览器注册课程。
按照今天的标准,这可能看起来是一个重大的疏忽,但在 1990 年代后期,万维网仍然非常新。亚马逊成立才几年。eBay 刚刚迎来它的第一个生日。谷歌最近才上线。维基百科那时还不存在。在当时的情况下,1998 年 PeopleSoft 不支持通过网络注册课程并不令人惊讶。但是,作为一所开创性的大学,它起源了 Gopher 网络,并为以前的主机系统创建了功能性的网络界面,我们认为网络注册是新学生记录系统的一项关键功能。
我们网络团队的工作是为 PeopleSoft 构建缺失的网络注册前端。
幸运的是,我们不必孤军奋战。我们与 IBM 签订了合同,在接下来的一年里,我们共同构建了新的网络注册系统。IBM 捐赠了硬件和软件来运行新的网络系统:三台 SP 计算机节点,运行最新版本的 AIX、IBM Java 和 IBM WebSphere,以及一个独立的 IBM 负载均衡器,用于在三个节点之间分配流量。
经过一年多的开发和测试,我们终于上线了!不幸的是,这是一个即时的失败。
负载过重
在整个开发过程中,我们无法真实地模拟许多学生同时访问新系统的负载。但这并不是因为我们没有尝试。大学有一个定制的网络负载测试软件包,IBM 也用自己的工具对其进行了补充。但网络仍然非常新,我们没有意识到网络负载测试工具还没有达到要求。
经过数月的两种工具的负载测试,我们已将新的网络注册系统调整到预期的 240 个并发用户负载。
不幸的是,我们的实际使用量几乎是这个数字的两倍。第一天,系统一上线,就有超过 400 名学生同时登录到新的网络注册系统。由于意想不到的负载过重,三台网络服务器崩溃了。我们发现自己不断地重启网络服务器,因为高网络流量持续压垮它们。我们刚重启一台网络服务器,下一台就会宕机。整个为期一个月的注册期都是如此。
由于没有可靠的网络注册课程方式,学生们不得不以老式的方式注册课程:去注册办公室。注册队伍排满了走廊,一直延伸到门外。不久之后,坏消息就登上了当地新闻,标题如“计算机故障迫使学生亲自注册”。
在遭遇了一次非常公开的失败之后,我们尽最大努力改进了下一个注册周期(仅在六个月后)的情况。我们疯狂地工作,以提高网络系统的容量。尽管进行了许多代码修复和配置调整,我们仍然无法将系统提升到足以支持更多用户的水平。尽管我们尽了最大努力,但我们肯定会在下一个注册周期面临失败。
正如担心的那样,网络系统在我们的下一次注册中再次惨败。服务器在巨大的负载下一次又一次地崩溃。这一次,新闻标题包括诸如:“网络注册系统毫无价值。”
距离我们的下一次上线还有六个月的时间,我们感到束手无策。没有人能弄清楚为什么系统会在负载下不断崩溃。我们知道它会在下一个注册期再次失败。我们必须做些什么,任何事情,来改进系统。但是该怎么做呢?每一种选择都摆在桌面上。
如果我们更换平台呢?
IBM 最近拥抱了 Linux,发布了 Linux 版本的 Java 和 WebSphere 产品。所有产品都通过了 RHEL(红帽企业 Linux)认证,我们中的几个人已经在我们的桌面系统上运行了 RHEL。我们意识到我们现在拥有在 Linux 上运行网络注册系统的生态系统,作为一个受支持的平台。但是,它在 Linux 上的性能会比在 AIX 上更好吗?
在设置测试服务器并运行初步负载测试后,我们震惊地看到一台 Linux 服务器可以轻松支持三台 AIX 服务器无法支持的工作负载。一台 Linux 服务器运行相同的网络注册代码,使用相同的 IBM Java 和 IBM WebSphere,可以维持 200 多个用户。
我们与注册主任和首席信息官分享了我们的发现,他们批准了我们将网络注册系统迁移到 Linux 的计划。这是我们第一次在明尼苏达大学企业中使用 Linux,但我们没有什么可损失的。AIX 系统反正会再次失败。Linux 是一个孤注一掷的选择,但它是我们唯一的希望。
我们立即加速生产新的 Linux 服务器。另一个团队的同事将几台英特尔服务器转移到我们的工作中,我们在这些服务器上安装了 RHEL 和 IBM 组件。我们在新系统上进行了无数次负载测试,寻找薄弱环节,结果却发现 Linux 服务器运行平稳。
经过两个月不安的等待,我们终于上线了。这是一个巨大的成功!网络注册系统在 Linux 上完美运行,尽管使用量很大。在注册期间的峰值时段,Linux 服务器管理了超过 600 个并发用户,几乎没有出现任何问题。Linux 拯救了明尼苏达大学的网络注册。
成功的经验教训
当我回顾那次大规模的救援行动时,我发现了一些主题,你可以用它们在自己的组织中介绍 Linux
- 解决问题,而不是满足虚荣心。
当我们提议在企业中运行 Linux 时,我们这样做并不是因为我们认为 Linux 很酷。当然,我们是 Linux 粉丝,我们已经在桌面和家庭上运行 Linux,但我们是为了解决问题。我们的注册主任和其他利益相关者赞赏 Linux 是一个问题的解决方案,而不仅仅是我们想做的事情,因为 Linux 很酷。
- 尽可能少地改变。
我们的成功取决于 IBM 最终发布了 Linux 版本的 Java 和 WebSphere 产品这一事实。这使我们能够在从 AIX 迁移到 Linux 时最大限度地减少对系统的更改。将 AIX 配置与 Linux 配置进行比较,只有硬件和操作系统发生了变化。系统上的每个其他组件都保持不变。正是这种“已知”的数量增强了进行更改的信心。
- 诚实地说明风险和收益。
我们的问题是显而易见的:网络注册在我们之前的两个注册周期中都失败了,并且很可能会再次失败。当我们向我们的利益相关者提出我们的想法,建议我们将 AIX 网络服务器替换为 Linux 时,我们公开了预期的风险和收益。底线是,如果我们什么都不改变,我们就会失败。如果我们尝试 Linux,我们可能会失败,也可能不会失败。我们分享了我们从初步负载测试中获得的发现,这些发现表明 Linux 比失败更有可能成功。
但即使 Linux 失败了,我们也可以轻松地将旧的 AIX 服务器重新投入生产。“后备”准备让注册主任放心,我们已经适当地衡量了收益和风险,并为意外情况做好了准备。
- 广泛沟通。
在向 Linux 迁移的提案中,我们撒了一张大网。我们撰写了一份执行概要白皮书,清楚地传达了我们计划做什么以及为什么我们认为它会奏效。这份白皮书成功的关键在于其简洁性。高管们不想阅读关于技术想法的“小说”,也不想陷入技术细节。我们有意为高管级别撰写了白皮书,用概括的方式描述了我们的提案。
当我们用 Linux 替换系统时,我们提供定期更新,告知我们的利益相关者我们构建新 Linux 系统的进展情况。在我们最终上线 Linux 网络注册系统后,我们每天发布更新,报告有多少学生在新系统上注册了课程,以及我们是否发现了任何问题。
尽管距离我们早期使用 AIX 的失败以及非常成功的 Linux 实验已经过去了近二十年,但所有这些经验教训仍然适用。当然,Linux 在这里做了繁重的工作,但我们的总体成功归功于将人们聚集在一起,本着解决共同问题的精神。而且我认为这是一个你可以应用于几乎任何你面临的情况的教训。
4 条评论