查看原文
其他

民生银行:桌面云自动化交付实践

民生运维 云技术 2019-05-18

1

前言

本文从民生桌面云面临的问题和挑战出发,详细阐述了桌面自动化交付能力的建设实践,通过结合流程系统的优化,实现资源交付时间由数日缩短至数分钟的过程。并进一步探究了如何实现对云桌面的系统化管理,与行内各外沿系统的对接和信息联动,达到综合提升管理效能,降低管理成本的目的。

此外,本文还将分享我们在自动化实践部分的相关示例代码以及遇到并解决的各类问题,包括如何提升自动化实施的性能、支持桌面网络VLAN的动态切换、支持桌面规格的自适应调整等。


2

背景

桌面云在民生银行有着广泛的应用,民生银行的桌面云提供两种模式服务,基于PaaS模式、具备完整操作系统的个人桌面环境和基于SaaS模式、按需供给应用程序的应用交付环境。个人桌面环境分为开发桌面云和生产桌面云,前者为全行提供便捷、安全的开发桌面环境(即虚拟桌面),满足科技人员应用开发、测试、培训等需求;后者为日常业务处理、数据挖掘提供安全可控的用户操作环境。应用交付环境分为测试应用交付环境和生产应用交付环境,由于大部分测试、培训、业务处理场景只需使用少量应用程序,且不要求完整的操作系统权限,使用应用交付模式可大幅降低桌面云的资源开销,适用于轻量级使用场景。

民生银行桌面云起步早,其个人桌面环境部分已经较为成熟,并在长期维护、优化过程中积累了一定经验,本文将就桌面云的自动化交付实践进行介绍,主要关注点在个人桌面环境部分。本文将从以下几个维度展开:

  • 桌面云的技术架构

  • 面临的问题与挑战

  • 实施方案及路径

  • 实践的效益及成果

  • 未来展望


3

桌面云的技术架构

民生桌面云的技术架构将从功能组件、部署架构、以及桌面供给方式几个部分给予介绍。

3.1 功能组件

民生银行目前选用思杰XenApp and XenDesktop作为桌面云产品,使用XenApp and XenDesktop 7.15 LSTR版本作为桌面虚拟化软件,桌面云底层虚拟化为XenServer和集中式存储,个人桌面环境的功能组件包括如下几个部分:

1. Citrix XenDesktop管理组件集合: 包括DDC(Desktop Delivery Controller)、VDA、StoreFront、许可证服务器、数据库服务器、Citrix Studio、Citrix Director等。具体各组件功能介绍可参考思杰XenApp and XenDesktop产品文档。

各管理组件如图一所示,其中最为关键的是Delivery Controller和StoreFront组件,前者是桌面中心管理组件,负责管理用户访问、代理连接以及提供创建桌面的 Machine Creation Services服务。后者可被认为是一个Web站点,提供可对桌面用户进行身份验证,并可管理用户访问的桌面和应用程序的存储。NetScaler为可选组件,在需要进行安全强化的环境使用,例如在生产环境实现更为严格的安全控制。

图1:思杰XenDesktop主要组件(引用自思杰官网产品文档)

2. 桌面认证组件:Windows Active Directory服务器,桌面用户从AD服务器进行认证。

3. 镜像激活服务器:KMS服务器,提供对Windows桌面操作系统激活服务。

4. 操作系统补丁服务器:WSUS(Windows Server Update Services)服务器。Windows 桌面通过WSUS服务器来得到补丁更新。

5. 防病毒控制服务器:提供对病毒库管理及扫描策略的管理等。

6. 文件服务器:存放用户常用的软件介质。

3.2 部署架构

桌面功能组件的部署架构如图2所示,其中重要管理组件均为高可用部署。其中StoreFront(1-3)同时配置绑定至Windows负载均衡VIP,DDC(1-3)同时均衡负载全部桌面连接会话,AD(1-2) 采用Windows AD高可用配置,SQL Server(1-3)采用Microsoft SQLServer高可用配置等。

图2:桌面管理组件部署结构

3.3 物理及网络架构

桌面云的物理集群及网络架构如下图所示:

图3:桌面资源池物理及网络架构

  • 集群:一个桌面环境称之为一个集群,例如开发桌面云、生产桌面云都是一个独立的集群,一个集群使用一套管理组件对资源进行统一管理。

  • 站点:每个集群包括几十甚至上百台物理服务器,多个站点构成一个集群,不同站点均通过集群统一管理,使用站点方式可以将位于不同地理位置、组织机构的桌面资源进行统一管理。

  • 资源池:一个站点内的物理服务器可分为多个资源池,资源池即XenServer Pool, 包含数台XenServer服务器,资源池内共享所有的集中式存储的LUN(即XenServer的存储库)以及逻辑网络配置,管理桌面维度为资源池(Pool),桌面可以在资源池内进行动态迁移、弹性伸缩。图3即为一个资源池,其中包括了四台桌面服务器,每台服务配置4个网卡,其中管理网为网卡0+2 配置Bond,采用主备模式连接两个网络交换机,而业务网为网卡1+3作Bond连接网络交换机。在一个资源池中,依承载桌面的数目,可以配置一至多个VLAN业务逻辑网络,在物理交换机配置为Trunk接入。

3.4 桌面供给方式

思杰Xendesktop桌面支持随机非永久性桌面、静态非永久性桌面以及静态永久性桌面三种桌面。所谓非永久性桌面,是指桌面计算机重新启动,对桌面所做的更改将全部丢失。所谓静态桌面,是指用户首次登录使用其中一个桌面时,用户的后续登录会连接到首次使用时分配的相同桌面。而随机桌面,是指每次用户登录连接时均随机从桌面池中动态选择桌面。

因为开发桌面主要是给科技人员使用,需要有较强的个性化软件安装需求,且分配后即为专属,故使用的桌面类型为静态永久性桌面桌面(具有个人虚拟磁盘的VDI)。专属桌面可以认为是一台专有分配给指定用户的虚拟机。故在使用XenDesktop+XenServer底层时,使用MCS方式来置备桌面。在XenDesktop 7.15中,已经支持两种的MCS磁盘置备方式,链式克隆(LinkedClone)以及全量克隆(FullClone),为满足专有桌面最大的故障独立性,目前我们采用的是全量克隆的方式置备的桌面虚拟机。


4

面临的问题与挑战

通过云技术管理中心、安全规划中心、生产调度中心、项目管理中心等多方的深入沟通讨论,以及对桌面运维人员日常工作痛点剖析,将开发桌面环境面临的问题总结为如下几个部分:

1. 桌面全周期管理均为运维人员通管理控制台手工操作(桌面的创建、回收、变更等),运维工作重复性高,效率不高。举例来说,一个完整的人工创建桌面的过程如图4所示,需要完成十个步骤,操作时间较长,多步骤、重复性操作也容易出现失误。

图4:人工创建桌面过程详解

2. 开发桌面需求量大,开发项目具有周期性、阶段性、突发性等特点,使用、回收较为频繁。开发桌面新建及变更的需求较多,因资源交付的周期较长,对开发项目的进度造成影响;尤其当某些业务系统需要大批量桌面做系统上线测试时,交付周期紧,维护人员任务繁重。

3. 现有开发桌面的申请工单未能覆盖全生命周期管理的各种不同需求(只有桌面创建申请),故其他服务类请求均通过邮件、电话驱动,无法进行有效管理;且工单流程设计略为复杂,审批、实施环节串行且步骤较多。

4. 桌面资源的生命周期管理主要通过人工跟踪、没有系统工具支持,桌面账号采用独立的命名方式,未与身份管理系统对接。例如人员离场后,其身份状态未能及时修订,无法触发桌面回收操作,导致项目组其他人员可使用离场人员的桌面等情况。

5. 缺乏检测闲置桌面的有效方法,导致资源占用率高、使用率低。

6. 桌面云与传统个人设备的使用方式存在差异,需要为新用户提供支持服务,原有支持模式以电话沟通为主,维护人员的支持任务繁重,需丰富支持方式,尤其是提高用户的自服务能力。

针对上述问题的解决方案包括:

  • 利用自动化提升桌面资源交付能力。

  • 与行内统一流程平台(ITOMS)做深度整合,优化流程,提升交付效率。

  • 新建桌面管理系统,全面纳管开发测试环境所有桌面资源(采用行内的云管平台)。

  • 实现项目管理系统(PPM)与桌面资源联动,解决信息不同步问题。

  • 对接统一身份管理平台,实现身份及身份状态管理。

  • 添加桌面使用相关指南至工单及行内知识库系统,提升用户自服务能力。

  • 支持与运维机器人平台对接,实现便捷方式生成桌面工单。


5

实施方案及路径

桌面自动化的实施路径如图5所示,分为如下五个步骤:

图5: 自动化交付实施路径

5.1 自动化脚本实现资源交付

桌面资源的自动化交付实现,既需要从桌面软件产品的SDK入手,掌握其用法,亦需要跳出这个范围,从虚拟化软件及周边系统管理组件出发,调用相关的接口配合实现统一处理过程的自动化。

1. 首先要深入了解Citrix XenDesktop的SDK,实现对Citrix重要组件的功能对接操作。其中Citrix桌面自动化实现主要用到的后台服务为如下四个部分,每个部分都有相应Windows PowerShell 模块,全部的Citrix PowerShell SDK 可以参阅思杰开发中心。。需要注意的是,运行Citrix PowerShell的机器可以不是Citrix Delivery Controller, 但运行的帐户需要是Citrix域管理员帐户。

  • Citrix AD IdentityService: 管理Citrix桌面的计算机帐号。

  • Citrix Broker Service: 代理终端至桌面及应用的连接。

  • Citrix Host Service: 管理主机及虚拟化连接。

  • Citrix Machine Creation Service: 管理创建新的虚拟机。

图6介绍了桌面自动化脚本创建的详细过程,其中包括了AD用户的检查与创建、计算机目录配置的获取、AD计算机的创建、以及调用MCS服务创建虚拟机以及分配桌面至用户的全过程。

图6:桌面自动化创建过程详解

部分示例代码如下:

2. 掌握XenServer API相关接口。因通过XenDesktop SDK只能支持标准模板的方式做镜像的克隆以及虚拟机的创建。无法实现对自定义桌面虚拟机规格的创建。需要通过在Citrix管理控制台创建虚拟机后,再通过调用XenServer的API,以实现对标准虚拟机规格的自调整。相关的部分示例代码如下:

3. 掌握Windows 相关模块的SDK, 例如若对用户的帐号及密码做管理,就需要和AD的SDK做对接,相关的示例代码如下:

5.2 实现资源的统一纳管

为实现云桌面桌面的统一纳管,需要完成两个步骤:

1. 在管理平面(云管平台)中建立Citrix数据模型。数据模型包括如下几类:

  • a. 桌面资源集群: 对应于一个指定物理区域的Citrix桌面集群。

  • b. 桌面计算机目录: 对应于Citrix的计算机目录。桌面是从计算机目录中创建。

  • c. 桌面交付组: 对应于Citrix的用户交付组。桌面是从交付组分配给指定用户。

  • d. 桌面用户: 对应Windows Active Directory的用户,包含登录帐户及联系方式等。

  • e. 桌面: 对应Citrix桌面,包含桌面的规格,关联桌面的用户,创建日期,回收日期,工单的相关属性等。

2. 通过调用Citrix SDK实现对桌面及其用户数据的发现并更新同步至云管平台。这里面涉及到两种类型的数据更新:

  • a. 全量数据的同步: 支持首次桌面资源池数据的全量同步并更新至数据库。

  • b. 增量数据处理: 在全量桌面资源被云管平台纳管后,后续所有的资源类请求均通过云管平台, 同时需保证即便在使用Citrix原生控制台运维操作桌面后,其桌面信息同步至云管平台的数据亦是准确的。

5.3 桌面标准化定义及流程优化

1. 桌面标准化,是指桌面的规格标准化,CPU是几核,内存是几G,磁盘是多少G等。从历史的桌面供给情况来看,由于桌面的规格没有标准化,用户在工单中,以文字描述的方式,说明桌面的配置要求,由人工识别再行实施。在人工实施过程中,除了在桌面管理控制台(Citrix Studio)创建桌面,还需要操作Windows AD做帐号的创建,以及登录XenCenter控制台做虚拟机规格的更新,并进入桌面操作系统内完成对文件系统的扩容。规格标准化,是指的是在行内统一流程系统中定义桌面的标准化规格,其是桌面自动化实施的前提,在开发环境,我们定义了标准开发、标准测试以及自定义类型桌面(支持表单选择自定义规格)。便于工单系统后续与桌面管理平台做集成。

2. 流程优化,是指在行内流程管理系统中,针对桌面的部分需求,对用户开放自服务的能力,例如对桌面的帐户密码重设,用户通过工单即可实现自服务,无须审批,密码重设自动化实施完毕后,即发送至用户邮箱。对于新用户的标准化桌面的新建需求,可以配置为无需审批,直接自动化实施并通知。对于已有多个桌面的用户的新桌面申请,或是项目组大批量的桌面申请,需要经过审批组审批后,再行自动化实施。通过流程的优化,既减少了审批者的工作量,也提升了用户的体验。

3. 多维通知的定义,是指在桌面的交付过程中,不同的参与方将收到不同的维度的信息通知。例如审批组成员从邮件通知中可以快速得知新工单是否是自动化工单,项目经理代项目成员申请桌面时,经理可以知道桌面的实施状态,以及桌面创建完成后每个桌面的密码等,项目成员也将收到桌面的密码通知。当工单自动化实施故障时,或外沿系统对接异常时,桌面运维组以及外沿系统负责人也将收到通知。当实施故障被后台修复后,用户也将同时收到更新后的桌面信息通知。

5.4 系统对接实现及流程自动化实施

此部分的实施需要考虑如下几个部分:

  1. 接口的规范化定义:桌面管理系统(即云管平台)与流程系统间需事先定义好明确的接口规范以作并行开发。

  2. 异常处理:在云管平台处理遇到故障时,即便首次工单自动化实施失败,云管平台还可以针对故障的工单实施手动修复并更新最新的成功状态给工单系统。

  3. 状态前置:云管平台需要提供相关的数据接口,返回给工单系统,供其在工单审批(自动化实施前)做参考。例如当前用户拥有的桌面的数目。

5.5 外沿系统的多渠道接入

将桌面云与行内各系统作信息联动,主要包括:

  1. 与行内的项目管理系统(PPM)联动:通过与项目管理中心讨论,将人员的入场、离场自动对接至工单系统,生成自动化的桌面创建及回收工单。

  2. 与运维机器人系统联动:通过与运行管理中心讨论,将运维机器人系统对接桌面工单,以实现便捷的桌面创建。后续考虑将运维的操作规范化定义并作系统对接。

5.6 遇到的问题

在自动化的实践过程中,我们遇到并解决了一些实际问题,例如:

1. 如何实现批量桌面部署时性能的优化

当针对同一资源池,有数十个并发的桌面创建请求时,我们发现单个桌面的创建所需要的时间是呈线性增加的。我们分析其瓶颈为新桌面部署过程中的原始镜像同时拷贝至某一个存储LUN所致。我们采用了两种方法解决:

  • a) 在云管平台,新增一个桌面部署的调度层,即依据资源使用量情况,动态选择一个计算机目录与交付组做新桌面的分配。这样镜像的拷贝将会分配至不同的资源池,大大减少了同一存储LUN并发数据拷贝带来延迟。

  • b) 实现桌面先批量创建后分配模式。在Citrix计算机目录的计算机创建过程中,可以支持批量创建,再对创建后的桌面作用户绑定。当在自动化对接过程,可以在云管平台预留一个可用的桌面资源池,在创建的过程中,只是完成一次用户分配及规格适配的过程,这样会大大缩短资源交付时间(缺点是事先创了一批闲置桌面)。

2. 保障失败场景下自动化功能的持续可用性

  • a) 兼容计算机帐号的创建失败。在高并发过程中,首先遇到的一个瓶颈,是Windows AD 创建计算机帐号失败(生成计算机名称冲突),需要支持失败后的重试。

  • b) 保障在XenServer资源池主备管理节点的切换的情况下,桌面自动化正常运行。在XenServer的虚拟化池中,主备节点是可能在某些故障场景中做自动切换,自动化程序需要检测到这种异常,并从异常中解析出正确的主节点继续完成接口调用。

  • c) 支持桌面虚拟机创建失败后的重试。创建失败的一个主要原因是Xenserver资源池对接多个集中式存储的Lun, 由于Citrix MCS可能会将桌面创建请求调度到存储不足的LUN中,从而导致桌面的创建失败,这里需要引入失败重试机制并有效修正XenDesktop虚拟化连接中绑定的StorageRepository配置,让创建请求调度到有空余空间的LUN。

3. 支持桌面VLAN的动态切换

云桌面在一个资源池中是一个固定的模板,模板中已经绑定了特定的网络,因底层部分物理服务器可承载的桌面数量较高,一些桌面资源池,可承载400-500个桌面,从网络层面来看,要求分配多于一个VLAN的逻辑网络,故需要在原模板的VLAN的IP地址段分配耗尽时,主动检测并动态切换桌面部署过程中的网卡配置。部分示例代码如下:


6

实践的效益及成果

  1. 民生银行云技术管理中心在与安全规划中心、生产调度中心、项目管理中心、运行管理中心的一致努力下,历时不到半年在2018年实现了将云桌面的资源池类需求全部自动化,包括桌面的创建、回收、规格变更、密码重设、归属变更等,通过让用户以自服务的方式实现其桌面需求,将单个桌面的实施周期降为分钟级,提升了资源交付效率,大幅减少了人工工作量。从2018.04月底至2018.12月,累计已自动化实施云桌面工单总数1860个。交付桌面总数2376个,平均交付时间为5至7分钟(重设密码工单为1分钟)。单个桌面申请工单实施效果如图7所示。

  2. 民生桌面云实现了与PPM系统、统一身份认证系统、工单系统、运维机器人平台的集成和信息联动。在人员入场时,PPM自动生成身份信息、ITOMS工单,工单系统驱动云管平台完成桌面自动化发布。在人员离场时,PPM更新身份状态、触发ITOMS桌面回收工单,驱动云管平台回收桌面资源。通过运维微机器人交互的方式也实现了与工单的快速对接及桌面实施。

  3. 民生桌面云通过云管平台统一纳管了所有的开发云桌面,总数超过3000个。实现了桌面的系统化、自动化管理。

图7:新建桌面工单示例


7

未来展望

实现桌面环境的自动化交付只是桌面云建设的一个缩影,后续我们还将在桌面云的自动化运维、桌面资源的分析优化等方面作进一步的探索和研究。同时现阶段,民生银行的桌面云是以个人桌面环境模式为主,应用交付环境尚处于试用阶段,而个人桌面对资源的占用远超过应用交付模式,为进一步提高资源投入产出效能,我们将加快应用交付模式的研究、完善应用场景和部署推广。桌面云将在业务移动化、终端与业务系统解耦合等方面提供助力,提高业务部署、推广的效率;同时在统一访问入口、简化访问策略、实现高效精确的权限管理等方面具有很大潜力,是一种提升企业信息安全防控水平的有效措施。


作者信息

  • 朱珠:就职于民生银行云技术管理中心,2010年硕士毕业,先后在IBM从事数据中心管理软件开发、IBM OpenStack私有云产品设计与研发、IBM Cloud Bluemix PaaS服务设计与研发, 于2017年加入民生银行,负责云计算技术研究与落地工作。


  • 张维华:就职于民生银行安全规划中心,民生银行信息科技部高级安全工程师,具有十四年网络专业工作经验和五年网络安全专业工作经验,曾负责我行新一代数据中心网络规划、建设工作,具备CCIE、CISSP、CISP、PMP、COBIT、ITIL等相关专业高级资质认证。目前,在我行从事网络及云安全相关工作,负责网络安全管理、网络安全技术研究和云安全规划设计等相关工作。在内外部安全检查及安全方案设计,运用新技术解决网络安全问题,建立健全民生银行网络安全体系,提升信息安全防护能力,推进信息安全工作落实方面成绩显著。


  • 刘伟:就职于民生银行生产调度中心,有近7年金融IT从业经验,加入民生银行负责IT运维管理系统,牵头完成IT运维管理系统运维精细化提升项目的研发设计工作,打通系统间流程实现流程对接自动化高效实施,达到跨中心、跨专业团队高效协作的工作目标,大幅提升用户体验。


  • 国杰: 就职于民生银行开发部项目管理中心,先后在中国金融电子化公司、北京银行、光大银行、民生银行从事科技开发、项目管理、产品管理,主要从事资源管理方面的研究。



↓↓ 点击"阅读原文" 【加入云技术社区】

相关阅读:

民生银行:OpenStack Ironic实现X86裸机自动化装机实践与优化

边缘计算、物联网,最全的应用场景介绍!

2019年云计算的10个重大预测

多云平台管理,你必须知道的6个好处!

RightScale 2019年云状况调查报告:35% 的云支出被浪费「附50页PDF下载」

2018年云计算九大趋势热词:Serverless、混合云、多云、中台、边缘计算等「附下载」

企业级PAAS云平台:不容忽视的几个关键问题和挑战

更多文章请关注


文章好看点这里[在看]👇

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存