亮网络解锁器,解锁网络数据的无限可能 了解详情
写点什么

超越整合:使用 VMware 搭建更好的开发环境

  • 2009-04-29
  • 本文字数:3780 字

    阅读完需:约 12 分钟

Mak King 的这篇文章描述了服务器整合之外的高级虚拟化应用,证实了虚拟化背后的技术和好处不仅仅局限于老生常谈的服务器整合。此外(绝对不是凑热闹),Mark 的文章描述的方法显然是“绿色计算”。

如果你在实现这个或者类似的开发环境时需要 Mark 的建议或者帮助,请联系 info@ShiftMETHOD.com

引言

近年在 IT 界工作的人肯定对虚拟化多少都有些了解。业界诸多关于虚拟技术多么无可比拟的宣传,让人开始不耐烦起来。众多粉丝甚至将其追捧为 IT 界过去十几年里的至宝。可以肯定,虚拟技术的应用节省了设备,节省了资金,基本上实现了它众所周知的功能。然而,虚拟技术的应用难道仅此而已? 实现虚拟化以后究竟能得到怎样的好处?直到我所在的 NYCE Payments Network,LCC——Metavante 子公司——的开发部门实现虚拟化时,我才真正体会到虚拟在现实开发中的意义。我们开发的电子付费网络连接了国内 8900 多万银行卡、200 多万台 ATM 机和出售点,消费者因此可以在任何时候任何地点安全、实时地访问自己的帐户。因此,系统的可用时间、依赖性和扩展性都是我们在实施基础构架时必须考虑的核心问题。

作者背景

在 IT 界工作的 12 年里,我觉得自己在应用新技术解决业务问题方面有相当丰富的经验。当然,一直尽量采用最新的技术来开发充满了挑战,应用虚拟化也不例外。尽管 NYCE 在 2001 年就安装了虚拟系统,但我个人在虚拟技术方面的经验仍然局限于在自己电脑上尝试安装几个不同的 Linux 系统,直到去年的一个目录服务整合项目,我才开始采用 VMWare ESX 结合本地存储介质(基本上是以一个服务器和大量硬盘为基础提供 VM 存储,而不采用 SAN)把 3 个陈旧的物理服务器整合到单个硬件设备上。这样的手法实在好极了!不仅节省了大量磁盘空间,还摆脱了旧设备,也不再需要很多数据线连接各个设备。在整合项目中采用 VMware,证明了虚拟机在小范围内的高效。

项目概述

在目录服务整合项目之后,我把注意转移到了下一个 VMware 实现上——开发。

在开发环境中工作或者支持开发环境的工作都有很多挑战,这些挑战在产品数据中心很少遇到。首先,一起工作的都是一些对技术了如指掌的技术人员,所以如果环境上有什么不对劲,那就是真的不对劲了,不是什么小事。其次,开发中会修改很多地方,这些修改都应当对项目起推动作用。我工作的大部分内容就是支持开发人员,满足他们的开发环境的需求,包括维护研发实验室、一些产品设备和 LAN。实验室当然是最难维护的一个。其中涉及到包括从 PC 类设备到 workstation,再到连接了大量硬件的服务器等各种设备。这些设备都有不同的内存大小,处理能力及磁盘空间,还各自有各自的可避免电源功率波动的 UPS。除此之外,它们所连接的硬件也都各不相同,驱动器兼容性的先后次序问题、BIOS 升级问题,还有对应用兼容性提供支持的要求更是增加了保证开发环境的一致、可依赖和易管理的难度。另外,每次测试某个特定应用,我们往往会被要求采办新硬件(当然这些硬件往往跟什么都不匹配),或者是增补已有设备,但升级 BIOS 来支持新 OS 使得这些举措非常麻烦。

将一个原本建立在独立服务器设备基础上的实验室重新设计为采用 VMware Infrastructure 和 SAN 的构架,这要求一个完全不同的思维方式。转移到这个新构架上来可以避免独立服务器的各种限制。实验室因此成为一个联合资源池,我们可以动态使用这些资源,可以通过对资源池定义一系列的规则来重新按需部署资源和大量设备。高度访问性和分布式资源调度器贯彻于整个设计过程,而不是单独的、空头支票似的特性。这样的解决方案学起来都相当容易!事实证明,前面提到的顾虑仍然阻碍了很多虚拟服务器的部署(我最近看到一个名为高级虚拟管理的视频,作者是 VP and Service Director Data Center Strategies,Burton Group 的 Richard Jones,他在这个视频中说虚拟服务器的实现,在环境中部署了高度访问性的案例不到 10%)。大部分实现都局限于服务器整合,往往是一个物理服务器对应移植到一个虚拟服务器,在同一台机器上寄宿多个虚拟服务器。这样做无疑可以清理数据中心的老机器,但同时又引进了一个单点失败的隐患,一旦宿主机器当掉,会丢失所有虚拟服务器数据。

VMware 的部署

在开启三个 VMware 主机服务器(预载 ESX3.5)、SAN,插上 fiber cable 之后,我们就可以开始部署了。安装、配置设备很直接,这中间我只用了一个 APC Symmetra 中央处理器。我发现 fiber cable 比 CAT 5 线缆麻烦。设备运行起来以后,就可以开始配置环境了。

虚拟设施客户(Virtual Infrastructure Client - VIC)用来管理、配置 VM 环境。在安静明亮的小隔间里,用我台式机上的客户端工作,比起之前要在嗡嗡作响的实验室里呆上很多天来要舒适得多。可能你不相信,在嘈杂的实验室里最好的耳机也只能过滤掉风扇的噪声。VIC 非常直观,能够构建集群、模板、服务器、虚拟交换机以及 HA、DRS 参数的配置。我在桌面上保留了几个 VIC 的快捷图标。我倾向于把 3 个 VMware 主机配置到同一个集群里,把所有资源放到根资源池中,而不是由应用或其它准则来分配。整个设施构架修改起来很轻松,不费吹灰之力。这样一来,我们可以随意尝试多种配置,直到找到最适合的为止。一旦确定新环境配置,就该动手把物理服务器移植到虚拟服务器上。我在更新现有环境的过程中结合了 Converter(P2V)和服务器模板。当然,在移植到虚拟环境之前,我对所有机器都做了备份,总共占了满满一磁带,以防万一。这只是一些小绊脚石,尤其是在 Windows 2000 Server 设备上使用 Converter,但这些都不难处理。有时候还需要从头创建全新的 VM,然后复制数据和应用,虽然有点麻烦,但好处是可以在创建和复制过程中清理服务器上的内容。

系统构架的进化

在实现 VMware 之前,我们研发实验室的部分构架如下图所示。显然,用来连接所有设备的线缆就需要很多管理,很多 workstation 也没有足够的存储介质。

我们在某些部分安装了 VMware、把物理服务器转换到虚拟服务器(P2V),又在某些情况下用 VM 来替代物理服务器,之后,实验室现有构架如下图所示。

现在实验室有了更多的冗余能力,配置了高可用性,每个服务器的资源都不再是硬性绑定到物理硬件资源上。通过将三个主机服务器的资源组成池,虚拟机可以动态更新各自所需资源。另外,由于通过远程客户端来访问虚拟机,我甚至可以同时开着 4 个 LCD 显示屏监控。总体上,这一实现将实验室设备削减了 85%。实验室也没有以前那么热,都不需要开什么空调。

高度可行性测试

在集群配置了高可用性之后,让我们来好看看它是不是真有传闻说的那么好。

整个环境中,一个集群下有 3 个主机(A、B、C),运行有 12 个 VM。有 11 个 VM 通过 VMotion 迁移到了主机 B 和 C, 而主机 A 上单运行一个 Windows 2003 Server。然后我做了件通常情况下极为糟糕的事情 —— 拔掉主机 A 的电源。按计划,VMotion HA 应该可以检测到主机 A 当机了,然后在其它运行的主机上重启受影响的 VM。这究竟行不行呢?事实证明,两分钟后,主机 A 上的 VM 在主机 B 上重启运行了。接着,我重复了实验,在主机 A 上运行 Windows 2000 Server。结果也一样,不到两分钟的时间,VM 就在另一个主机上重启了。在确认了 HA 的这个功能之后,我才把主机 A 的电源重新插上,恢复集群原先的冗余,再通过 VMotion 把 VM 恢复到早先的主机上。测试结果更加巩固了我在开发环境中采用 VMware 的信心。

优点

实验室安装运行 VMware 已经有几个月了,VMware 的优点逐渐明显起来。以下是比较明显的几点:

  1. 实验室更容易管理。原先 13 台各不相同的机器,现在只要 3 台同样的机器,更为简单。KVMs、LCDs、小型中央处理器以及连接这些设备的线缆都不再需要,因此实验室空间得以节省了 85%。
  2. 增加了灵活度。比如,通过调节分配到 VM 上的资源数,我们可以决定特定的数据库查询所需要的最恰当的资源(包括 RAM 和处理器的数目)数量;我们还能重复测试任务,直到到达收益递减的转折点。在物理硬件上做这些简直就是噩梦,又耗硬件资源又花时间。
  3. 提高了网络吞吐量。之前,每个设备的网络吞吐量都局限于它的 nic 端口数——大部分情况都只有一个端口。现在,每个 ESX 主机都有好几个 nic,有多个端口,这些都将带宽扩大了两倍,而且在 nic 失败的情况下都能提供足够的带宽。这样的配置,还节省了我很多备份的时间。
  4. HA、DRS 和 VMotion 的使用极大地提高了冗余性和系统可用时间。

现状

NYCE 的开发环境现在已经迁移到 VMware,我很高兴,因为这个开发环境很灵活。我们可以很快部署资源服务器,本来需要好几个星期,现在就几分钟就能搞定。VMotion 配合 HA 和 DRS 的使用,在保证环境全天候运行的前提下提高了可用时间和可信度。商务方面对此也很高兴,因为这一方案削减了现场维护和支持开销,从原先多台机器的使用减少到目前的三台。总之,这对我来说是个非常积极、有益的经验。我很期待在公司其他环境下使用 VMware。

作者简介

Mak King 是 NYCE Payments Network,LLC 的高级商业系统工程师,他期待着你的评价。他的 Email 地址是:akamak at gmail dot com。

申明

本文中的信息、观点仅属于作者,不代表 NYCE Payments Network,LLC 公司的研发、观点。该公司对本文内容不承担任何责任,作者对本文负全责。


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2009-04-29 00:318126
用户头像

发布了 71 篇内容, 共 19.3 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

如何拆分大型单体系统为微服务

Zhang

微服务

《原则》(十一)

Changing Lin

6月日更

MySQL 中的反斜杠 \\,真是太坑了!!

xcbeyond

MySQL 6月日更

【译】是时候了解 CSS 逻辑属性了

KooFE

6月日更

Windows 使用 PowerShell 来管理另外一台 Windows 机器

HoneyMoose

又一个重量级的分布式链路分析的轮子

代码先生

elasticsearch ELK 分布式链路 OpenTelemetry Data Prepper

kubelet分析-pvc扩容源码分析

良凯尔

Kubernetes 源码分析 kubelet Ceph CSI

记一次差点跑路的 RabbitMQ 运维经历

看山

运维 RabbitMQ 删库 6月日更

读深入ES6记[五]

蛋先生DX

ES6 6月日更

Python——列表元素的排序

在即

6月日更

沿着“云云协同”的桥梁,奔赴全面云化的产业之海

脑极体

JavaScript学习(一)——简介

空城机

JavaScript 大前端 6月日更

道可道,非常道:vue生命周期的智慧之光

法医

Vue 大前端 6月日更

明晚Django组队学习就要开始了

IT蜗壳-Tango

6月日更

【LeetCode】完全平方数Java题解

Albert

算法 LeetCode 6月日更

22 图 |M1 和 Docker 谈了个恋爱

悟空聊架构

Mac M M1 Dock 6月日更 dokcer

区块链赋能新能源汽车新业态——车电分离

CECBC

被勒索一月后比特币赎金被追回,现在价值几何?

CECBC

Kubernetes手记(8)- Service 配置清单

雪雷

k8s 6月日更

Go http 包详解

Rayjun

Go 语言

【21-3】Zabbix 重置 Admin 密码

耳东@Erdong

zabbix 6月日更

Java 并发编程——volatile 关键字解析

Antway

6月日更

本来无一物,何处惹尘埃|靠谱点评

无量靠谱

MySQL基础之九:子查询

打工人!

myslq 6月日更

面试系列-4 hash应用场景分析实践

李阿柯

php 面试 Redis 核心技术与实战

动态规划电路布线问题(Java代码实现)

若尘

数据结构 6月日更

并发王者课-黄金1:两败俱伤-互不相让的线程如何导致了死锁僵局

MetaThoughts

Java 多线程 并发

周小川:一些加密货币已经不太可能再回到支付领域

CECBC

【Vue2.x 源码学习】第十一篇 - Vue的数据渲染流程

Brave

源码 vue2 6月日更

Windows PowerShell ISE 是什么和 PowerShell 有什么区别

HoneyMoose

JAVA对象直接输出的打印结果是什么?

加百利

Java 后端 字符串 6月日更

超越整合:使用VMware搭建更好的开发环境_架构_Mak King_InfoQ精选文章