在 Linux 或 Android 上安装一个应用是非常简单的,大部分应用只需要把应用相关文件复制到系统中的一个目录下就可以运行了,纯绿色安装;要删除应用也很简单,只要把这个应用目录整个儿删掉就可以了。
在 Windows 桌面上安装一个应用就复杂多了,除了把应用文件复制到系统中以外,还需要写一堆注册表,建立应用和文件类型之间的关联,在应用目录中加入应用图标,以及在桌面上建立快捷项等。这些都是 Windows 规定的动作,虽然目的是为了提供更好的用户体验,但是也造成桌面系统维护的复杂度,应用安装、升级等都是很费时的操作。在虚拟桌面环境下,所有的虚拟桌面都是由管理员统一管理的,一旦要安装或升级应用,管理员就要花费大量时间来更新所有的桌面。
应用管理容器化
App Volumes 提出了一种应用安装的新思路,不再把应用安装到每一个桌面系统中去,而是把应用安装到一些可共享的应用容器(AppStack)里,再把这些应用容器装配(Mount)到每一个桌面成为桌面系统的一部分。App Volumes 专门提供了两个工具 AppCapture 和 AppMerge 来实现这种容器化的安装。
- AppCapture:安装应用之前启动 AppCapture,它就会把应用安装所要复制的文件、改动的注册表等所有动作记录下来,并复制到应用容器中去。
- AppMerge:用于把 AppCapture 记录的应用数据合并到现有的应用容器中去。
这可是个技术活儿,文件复制很容易理解,注册表的写操作怎么隔离出来? 反正 App Volumes 能做到,这是它的独门绝招啊,很牛!
1. 应用快速交付
每个桌面虚拟机安装有 App Volumes Agent,当应用容器装配到虚拟桌面后,Agent 可以快速识别容器中的应用,并把应用调配(Provision)到虚拟桌面。这一过程是非常快速的,几乎接近于实时。当一批应用分配给某个用户时,他只需要退出当前桌面会话,重新登录虚拟桌面就可以马上看到所有分配给他的应用了。
2.节省存储空间
使用 App Volumes 管理应用的另一个好处是可以大大节省存储空间的占用。如下图所示,所有用户需要的应用安装在几个应用容器中,这些容器是所有的桌面所共享的,所以不需要在每个桌面上重复安装应用,每个桌面所占用的存储空间就大大减少了,可以节省至少30%以上的存储空间。
另外所有的虚拟桌面可以共享同一个标准虚机镜像(Master Image),每个用户仍然可以根据需要来选择应用,并且每个用户都有自己专属的用户容器,它是一个可写卷(Writable Volume,普通的应用容器对用户都是只读的),在上面可以安装个性化的应用或存储个人数据。从而做到在非持久虚拟桌面上提供持久虚拟桌面同样的效果,大大节省存储和管理成本。
在虚拟桌面环境中,所有的桌面和应用容器都是在后台的服务器上运行的,它们位于同一组高速互联的服务器集群(Cluster)中,所以桌面对于容器中应用的访问是高速的,不用担心通过网络访问应用容器而造成性能下降。
3. 降低管理复杂度
在 App Volumes 的管理下,可以在容器中对现有应用进行升级,这是独立于桌面操作系统的,可以实现应用的快速升级。这种升级操作只需要做一次,不需要在每个虚机中升级应用,不受虚拟数量影响。
管理员只需要对常用应用进行分类,把通用的公共应用如 Office 软件安装在核心应用容器中,把各个业务条线要用的应用安装在业务部门的容器中,这样就能够对应用进行快速有效的管理,大大减少管理工作量。
App Volumes 3.0 新功能
VMware 于2016年2月发布了 App Volumes 3.0,进一步增强了应用管理功能,下面介绍其中三个主要功能:AppToggle、AppScaling、AppIsolation。
1. AppToggle
在上面的例子中大家看到不同分类的应用安装在不同的容器中,这可能给大家造成一种印象:应用只能按照容器来分配给用户。App Volumes 3.0 中提出的 AppToggle 技术突破了这一限制,它允许把所有的应用安装在一个容器里,然后为任意用户分配任意指定的应用。
AppToggle 技术意味着更少的容器,这样管理起来会更加简便;同时更少的容器也意味着更少的升级操作,这样也简化了应用生命周期的管理。
2. AppScaling
在以前的版本中,如果要跨多个集群部署 App Volumes 的话,管理员必须在不同的集群中维护多个同样的应用容器,因为应用容器只能在集群内部访问。3.0 中提出了 AppScaling 技术,vCenter 服务器会自动在多个集群(甚至是跨多个数据中心的集群)里自动复制指定的应用容器,这样可以让 App Volumes 更加方便地支持大规模部署。
3. AppIsolation
App Volumes 3.0 中也整合了 ThinApp 的应用隔离技术 AppIsolation,能够把应用打包在一个独立的容器环境中运行,以避免应用之间因为 DLL、共享库或 Java 版本不同而造成的冲突。
有些单位可能还存在一些遗留应用需要老版本的 IE6 来支持,AppIsolation 可以做到在同一应用容器中安装不同版本的 IE 浏览器,IE6 可以跟 IE11 在同一个桌面里面同时运行而不发生冲突。这种隔离技术对于某些测试场景也非常有用,可以测试新发布的 Web 应用能否兼容不同版本的浏览器。
完整的应用生命周期管理
综上所述,App Volumes 是一种非常优秀的应用管理技术,它可以支持从应用交付到应用升级、直到应用退休的全生命周期管理。在帮助你轻松应对应用交付挑战的同时,大大降低存储资源的消耗,同时提高桌面管理的效率。
小知识:App Volumes 来自于 VMware 2014 年初收购的 Cloud Volumes,收购后 App Volumes 一直以单点产品的形式存在,直到 2016 年初发布 3.0,App Volumes 变成了一个套件产品,包括原 App Volumes、User Environment Manager 等组件。