CN104937546B - 用于根据重启调度执行机器重启的方法和装置 - Google Patents

用于根据重启调度执行机器重启的方法和装置 Download PDF

Info

Publication number
CN104937546B
CN104937546B CN201380063115.9A CN201380063115A CN104937546B CN 104937546 B CN104937546 B CN 104937546B CN 201380063115 A CN201380063115 A CN 201380063115A CN 104937546 B CN104937546 B CN 104937546B
Authority
CN
China
Prior art keywords
machine
circulation
restart
restarting
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201380063115.9A
Other languages
English (en)
Other versions
CN104937546A (zh
Inventor
托马斯·M·克鲁迪
阿希什·古亚拉蒂
里卡多·费尔南多·费霍
费利佩·利昂
朱利安诺·麦丹尔
安德鲁·奥格尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN104937546A publication Critical patent/CN104937546A/zh
Application granted granted Critical
Publication of CN104937546B publication Critical patent/CN104937546B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

本公开的一个或多个方面可涉及针对应用程序、桌面或其他托管资源使用可配置的服务器群优选项。另外的方面可涉及基于可配置的服务器群优选项,转移服务器群工作负荷。其他方面可涉及执行重启循环、重启调度和按需重启。另外的一些方面可涉及在指定的时间段内交错单个机器的重启操作,并执行重启操作使得一些机器可在重启循环期间用于用户会话。

Description

用于根据重启调度执行机器重启的方法和装置
相关申请的交叉引用
本专利申请要求2013年10月11日提交的序列号为14/051,664且具有相同标题的美国非临时性专利申请的优先权,该美国非临时性专利申请要求2012年10月12日提交的序列号为61/713,034且标题为“用户的无缝转换(SEAMLESS TRANSITION OF USERS)”的美国临时专利申请的优先权。
上述专利申请中的每个的整体以引用方式并入本文。
技术领域
本申请所描述的方面涉及用于根据重启调度执行机器重启的方法和装置。
背景
本公开的方面涉及计算机硬件和软件。
为将托管的应用程序、桌面和其他资源传送给用户,运营商往往部署许多为用户托管和提供资源的服务器或机器。这些服务器可被分配在一个或多个服务器群或站点中。当寻求访问托管资源时,用户可使用诸如个人计算机、笔记本电脑或移动设备的用户设备等连接到服务器群或机器。
当部署了机器或服务器群时,可期望执行各种维护操作。何时需要维护操作的一些示例包括:当数据库已经损坏时;当机器中的一个或多个已被选择进行更新或替换时;当机器中的一个或多个将被重启时;以及当服务器群的工作负荷将被转变为不同的工作负荷时。但是,执行维护操作可导致不利影响,诸如导致连接中断或服务中断。例如,为执行维护操作,可能需要断开或以其他方式禁用服务器群或机器。由于连接中断或服务中断,试图接入由受影响服务器群或机器托管的资源中的一个的任何用户可能都无法访问期望的托管资源。运营商可能希望避免或最小化维护操作对用户访问托管的应用程序、桌面或其他资源的能力所造成的影响。
发明概述
本公开的一个或多个方面可涉及针对应用程序、桌面或其他托管资源使用可配置的服务器群优选项。
例如,根据各个方面,可针对托管的资源配置服务器群优选项。服务器群优选项可包括主服务器群的指示和一个或多个辅助服务器群的指示。针对托管资源的请求可被接收。根据所述请求,可确定托管资源是否配置有服务器群优选项;响应于确定托管资源配置有服务器群优选项,可确定一个或多个辅助服务器群是否具有用于用户的有效或断开的会话;以及响应于确定一个或多个辅助服务器群具有用于用户的有效或断开的会话,可选择一个或多个辅助服务器群以托管所述托管资源。
作为一个示例,可促进用户设备与所述辅助服务器群之间的通信,使得所述资源可供使用。
作为一个示例,所述托管资源可包括应用程序或桌面,并且其中,可使得所述辅助服务器群托管所述托管资源包括在所述辅助服务器群上发起用于所述应用程序或桌面的用户会话。
作为一个示例,可响应于确定所述托管资源未配置有所述服务器群优选项,基于与所述服务器群优选项不同的默认规则集,选取将要托管用于所述用户的所述托管资源的服务器群。
作为一个示例,可响应于确定所述一个或多个辅助服务器群不具有用于所述用户的任何有效或断开的会话,使得所述主服务器群托管用于所述用户的所述托管资源。
作为一个示例,可使得所述辅助服务器群托管用于所述用户的所述托管资源包括经由虚拟机托管所述托管资源。
本公开的各个方面可涉及基于可配置的服务器群优选项,转移服务器群工作负荷。
例如,根据一些方面,将被从服务器群转移的工作负荷可被确定;目标服务器群可被选取;以及在目标服务器群中的新的工作负荷可被创建。当新的工作负荷可用于接收针对托管资源的请求时,新工作负荷内的一个或多个资源可被发布;针对一个或多个资源中的每个,对应的服务器群优选项可被配置;工作负荷可被监控,以便停止使用该工作负荷中不具有有效或断开会话的任何机器,并在确定该工作负荷中所有机器均被停止使用时删除该工作负荷;以及针对一个或多个资源中的每个,服务器群可被从对应的服务器群优选项中移除。
作为一个示例,所述工作负荷可包括一个或多个虚拟机,并且其中,所述新的工作负荷可包括一个或多个虚拟机。
本公开另外的方面涉及用于执行重启循环、重启调度和按需重启的方法。
例如,根据与重启循环相关的一些方面,用于执行自动机器重启的重启循环可被启动;用于重启循环的合格机器组可被确定;每个机器重启之间的间隔可被确定;以及基于所述间隔,用于重启循环的机器专有处理可被执行。这种机器专有处理可包括试图重启合格机器组中的每个机器。
作为一个示例,可确定重启循环状态,并且可基于所述重启循环状态继续处理所述重启循环;可初始化所述合格机器组中的每台机器并为其存储数据;以及可更新所述重启循环的所述重启循环状态。
作为另一个示例,根据与重启调度相关的一些方面,经配置的重启调度可被处理,该经配置的调度包括将被重启的桌面组;根据经配置的调度可确定是否要启动重启循环;响应于确定要启动重启循环,可确定是否另一个重启调度启动的重启循环针对桌面组有效或断开;响应于确定不存在针对桌面组有效或断开的另一个重启调度启动的重启循环,重启循环可被启动。
作为又一个示例,根据与目录(catalog)重启相关的一些方面,目录重启配置数据可被接收;目录机器组可被确定;可根据桌面组将目录机器组划分成一组或多组;以及针对一组或多组中的每个,对应的重启循环可被启动,从而导致多个重启循环被启动。
作为一个示例,多个重启循环彼此可同时运行。
作为一个示例,执行用于所述重启循环的机器专有处理可包括对所述合格机器组中的每台机器执行镜像更新。
作为一个示例,所述合格机器组可包括共享虚拟桌面基础架构(VDI)机器、共享远程桌面服务(RDS)机器、专用VDI机器、或实际机器。
作为一个示例,执行用于所述重启循环的机器专有处理可包括试图在至少第一阶段和第二阶段中重启所述合格机器组中的机器;其中,在所述第一阶段期间,来自所述合格机器组的机器子组可处于重启维护模式,并且来自所述合格机器组的剩余机器能够用于会话;并且其中,所述重启维护模式可禁止新会话的代理但允许重新连接到现有会话。
本发明的又一方面涉及用于执行重启循环、重启调度和按需重启的装置,其可包括:一个或多个处理器;以及存储可执行指令的存储器,所述可执行指令被配置成在被所述一个或多个处理器执行时使所述装置执行:启动用于执行自动机器重启的重启循环;确定用于所述重启循环的合格机器组;确定每个机器重启之间的间隔;以及基于所述间隔,执行用于所述重启循环的机器专有处理,其中,试图重启所述合格机器组中的每台机器。
作为一个示例,所述可执行指令还可被配置成当被所述一个或多个处理器执行时使得所述装置执行:处理经配置的重启调度,所述经配置的重启调度包括待重启的桌面组;根据所述经配置的重启调度确定是否要启动所述重启循环;响应于确定要启动所述重启循环,确定是否另一个重启调度启动的重启循环针对所述桌面组有效或断开;响应于确定不存在针对所述桌面组有效或断开的另一个重启调度启动的重启循环,启动所述重启循环。
作为一个示例,所述可执行指令还可被配置成当被所述一个或多个处理器执行时使得所述装置执行:接收目录重启配置数据;确定目录机器组;据桌面组,将所述目录机器组划分为一组或多组;以及针对所述一组或多组中的每个组,启动对应的重启循环,从而导致多个重启循环被启动,其中,所述重启循环是所述多个重启循环中的一个。
作为一个示例,执行用于所述重启循环的机器专有处理可包括试图在至少第一阶段和第二阶段中重启所述合格机器组中的机器;其中,在所述第一阶段期间,来自所述合格机器组的机器子组可处于重启维护模式,并且来自所述合格机器组的剩余机器能够用于会话;并且其中,所述重启维护模式可禁止新会话的代理但允许重新连接到现有会话。
作为另一个示例,根据一些方面,单独机器重启操作可被错开,并且重启操作可被执行,使得一些机器可在重启循环期间用于用户会话。
在下文更详细地论述这些特征以及许多其他特征。
附图简述
本公开以示例的方式说明并且并非限制于附图,在附图中,相似的参考编号表示类似的元件,并且其中:
图1示出可根据本公开的一个或多个方面使用的示例性计算机系统结构。
图2示出可根据本公开的各个方面使用的示例性远程访问系统结构。
图3示出可根据本公开的一个或多个方面使用的示例性虚拟化(超级管理器)系统结构。
图4示出可根据本公开的各个方面使用的示例性的基于云的系统结构。
图5示出根据本文所述的一个或多个方面的用于提供可配置服务器群优选项的示例方法。
图6示出根据本文所述的一个或多个方面的用于根据可配置服务器群优选项转移服务器群工作负荷的示例方法。
图7示出根据本文所述的各个方面的用于执行重启循环的示例方法。
图8示出根据本公开的各个方面的用于执行重启调度的示例方法。
图9示出根据本公开的一个或多个方面的用于执行目录重启的示例方法。
图10示出根据本文所述的各个方面的由重启循环发出的电源操作与来自其他来源的待执行操作(pending operation)之间的示例优先级交互。
图11示出被划分成两组并且完成重启循环的合格机器组的图解。
图12示出来自可用于在用户创建重启调度或目录重启时指导用户的用户界面的示例屏幕截图。
发明详述
在下面各种实施例的描述中,参考由上文确定且构成本文一部分的附图,并且其中附图以例证各种实施例的方式示出,其中本文所述的方面可被实践。应当理解,可使用其他实施例,并且在不脱离本文所述范围的情况下,可做出结构上和功能上的修改。各个方面可具有其他实施例,并且可以各种不同的方式实践或实施。
应当理解,本文所用措辞和术语是出于描述的目的,并且不应将其视作限制性的。相反,本文所用措辞和术语旨在被给定其最广义的解释和意义。“包括”和“包含”以及它们的变型的使用旨在涵盖在其后列出的项目和它们的等同项以及它们的附加项目和等同项。术语“安装”、“连接”、“耦合”、“定位”、“接合”和类似术语的使用旨在同时包括直接和间接的安装、连接、耦合、定位和接合。
计算结构
计算机软件、硬件和网络可用于多用不同的系统环境,包括独立式、网络化、远程访问(又称,远程桌面)、虚拟化和/或基于云的环境等。图1示出在独立式和/或网络化环境中可用于实施本文所述的一个或多个例示性方面的系统结构和数据处理设备的一个示例。各种网络节点103、105、107、和109可经由诸如因特网的广域网(WAN)101互连。其他网络也可使用或者另选地使用,其他网络包括私有内部网、企业网、局域网、城域网(MAN)无线网络、个人网(PAN)等。网络101用于例证的目的,并且可被替换为更少的或更多的计算机网络。局域网(LAN)可具有任何已知LAN拓扑结构中的一种或多种,并且可使用诸如以太网的多种不同协议中的一种或多种。设备103、105、107、109和其他设备(未示出)可经由双绞线、同轴电缆、光纤、无线电波或其他通信介质连接到所述网络中的一个或多个。
如本文所使用和在附图中所示的术语“网络”不仅指其中远程储存器设备经由一个或多个通信路径耦合在一起的系统,还指可以不时地耦合到具有存储能力的此类系统的独立式设备。因此,术语“网络”不仅包括“物理网络”,还包括“内容网络”,该“内容网络”包括驻留在全部物理网络中的可归属于单个实体的数据。
组件可包括数据服务器103、网络服务器105和客户端计算机107、109。数据服务器103提供对数据库和控制软件的整体访问、控制和管理,数据库和控制软件用于执行本文所述的一个或多个示例性方面。数据服务器103可连接到网络服务器105,藉此,用户依照请求与数据交互并获得数据。另选地,数据服务器103自身可充当网络服务器,并且可直接连接到因特网。数据服务器103可通过网络101(例如,因特网)、经由直接或间接连接、或经由一些其他网络,连接到网络服务器105。用户可使用远程计算机107、109与数据服务器103交互,例如,使用网络浏览器经由网络服务器105所托管的一个或多个对外公开的网站连接到数据服务器103。客户端计算机107、109可与数据服务器103配合使用来访问存储于其中的数据,或者可用作其他用途。例如,用户可使用因特网浏览器(如本领域已知的),或者通过执行经由计算机网络(诸如因特网)与网络服务器105和/或数据服务器103通信的软件应用程序,从客户端设备107访问网络服务器105。
服务器和应用程序可以在同一实际机器上组合,并且保留独立的虚拟或逻辑地址,或者可驻留在单独的实际机器上。图1仅示出了可使用的网络结构的一个示例,并且本领域的技术人员应当理解,所使用的具体网络结构和数据处理设备可改变,并且相对于它们所提供的功能是辅助性的,本文将对其进行进一步描述。例如,网络服务器105和数据服务器103提供的服务可以在单个服务器上组合。
每个组件103、105、107、109可为任何类型的已知计算机、服务器或数据处理设备。例如,数据服务器103可包括控制速率服务器103的总体操作的处理器111。数据服务器103还可包括RAM 113、ROM 115、网络接口117、输入/输出接口119(例如,键盘、鼠标、显示器、打印机等)和存储器121。I/O 119可包括用于读取、写入、显示和/或打印数据或文件的多种接口单元和驱动器。存储器121还可存储:用于控制数据处理设备103的总体操作的操作系统软件123;用于指示数据服务器103来执行本文所述的方面的控制逻辑125;以及提供可以或可以不与本文所述的方面结合使用的辅助功能、支持功能和/或其他功能的其他应用软件127。控制逻辑在本文中也可称作数据服务器软件125。数据服务器软件的功能可指基于被编写到控制逻辑中的规则而自动做出的操作或决定、通过向系统提供输入由用户手动做出的操作或决定、和/或基于用户输入的自动处理的组合(例如,查询、数据更新等)。
存储器121还可存储用于执行本文所述的一个或多个方面的数据,包括第一数据库129和第二数据库131。在一些实施例中,第一数据库可包括第二数据库(例如,作为独立的表、报表等)。也就是说,根据系统设计,信息可被存储在单个数据库中,或者被划分到不同的逻辑数据库、虚拟数据库、或物理数据库中。设备105、107、109可具有如相对于设备103描述的类似或不同的结构。本领域的技术人员应当理解,如本文所述的数据处理设备103(或设备105、107、109)的功能可以分布于多个数据处理设备,例如,以便在多个计算机中分配处理负荷,以便基于地理位置、用户访问级别、服务质量(QoS)等将处理事务分开。
一个或多个方面可以实现为计算机可使用的或可读取的数据和/或计算机可执行指令,诸如以一个或多个程序模块的形式,通过如本文所述的一个或多个计算机或其他设备执行。一般来讲,程序模块包括当被计算机的处理器或其他设备执行时执行特定任务或实现特定抽象数据类型的例行程序、程序、对象、组件、数据结构等。所述模块可被以源码编程语言编写然后被编译执行,或者可以用诸如(但不限于)HTML或XML的脚本语言编写。计算机可执行指令可被存储在诸如非易失性储存器设备的计算机可读介质上。可使用任何合适的计算机可读存储介质,包括硬盘、CD-ROM、光学储存器设备、磁储存器设备和/或它们的任何组合。另外,表示如本文所述数据或事件的各种传输(非存储)介质可以电磁波的形式通过信号传导介质,诸如金属线、光纤和/或无线传输介质(例如,空气和/或空间)传播,在源和目的地之间传输。本文所述的各个方面可以实现为方法、数据处理系统或计算机程序产品。因此,可在软件、固件和/或硬件或诸如集成电路、现场可编程门阵列(FPGA)等的硬件等同物中整体实现或部分实现各种功能。可用特定的数据结构,以更有效地实现本文所述的一个或多个方面,并且此类数据结构被认为是在本文所述的计算机可执行指令和计算机可使用数据的范围之内。
进一步参考图2,可在远程访问环境中执行本文所述的一个或多个方面。图2示出示例系统结构,其包括可根据本文所述的一个或多个示例性方面使用的在示例性计算环境200中的通用计算设备201。通用计算设备201可用作单服务器或多服务器桌面虚拟化系统(例如,远程访问或云系统)中的服务器206a,其中所述桌面虚拟化系统被配置用于为客户端访问设备提供虚拟机。通用计算设备201可具有用于控制服务器及其关联组件的总体操作的处理器203,其关联组件包括随机存取存储器(RAM)205、只读存储器(ROM)207、输入/输出(I/O)模块209和存储器215。
I/O模块209可包括鼠标、键盘、触摸屏、扫描仪、光读取器和/或触控笔(或其他输入设备),其中通用计算设备201的用户可通过上述输入设备提供输入,并且还可包括用于提供音频输出的扬声器和用于提供文本、视听和/或图形输出的视频显示设备中的一个或多个。软件可被存储在存储器215和/或其他储存器中,以便向处理器203提供指令以将通用计算设备201配置成专用计算设备,从而执行如本文所述的各种功能。例如,存储器215可存储被计算设备201使用的软件,诸如操作系统217、应用程序219和关联数据库221。
计算设备201可在支持连接至一个或多个诸如终端240(也称作客户端设备)的远程计算机的网络化环境中操作。终端240可为个人计算机、移动设备、笔记本电脑、平板电脑或包括上文关于通用计算设备103或201描述的许多或全部元件的服务器。在图2中所示的网络连接包括局域网(LAN)225和广域网(WAN)229,但是还可包括其他网络。当在LAN网络环境中使用时,可将计算设备201通过网络接口或适配器223连接到LAN 225。当在WAN网络环境中使用时,计算设备201可包括用于在诸如计算机网络230(例如,因特网)的WAN 229上建立通信的调制解调器227或其他广域网接口。应当理解,所示网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他方式。计算设备201和/或终端240还可为移动终端(例如,移动电话、智能手机、PDA、笔记本等等),移动终端包括各种其他组件,诸如电池、扬声器和天线(未示出)。
本文所述方面也可在许多其他通用或专用计算系统环境或配置中操作。可适用于本文所述方面的其他计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持式或笔记本电脑设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费性电子产品、网络PC、微型计算机、大型计算机、包括上述系统或设备中的任一个的分布式计算环境等。
如图2所示,一个或多个客户端设备240可与一个或多个服务器206a-206n(在本文中统称为“服务器206”)通信。在一个实施例中,计算环境200可包括安装在服务器206和客户机240之间的网络装置。该网络装置可管理客户端/服务器的连接,并且在一些情况下,可在多个后端服务器206之间对客户端连接进行负载平衡。
在一些实施例中,客户机240可指单个客户机240或单组客户机240,而服务器206可指单个服务器206或单组服务器206。在一个实施例中,单个客户机240与多于一个服务器206通信,而在另一个实施例中,单个服务器206与多于一个客户机240通信。在又一个实施例中,单个客户机240与单个服务器206通信。
在一些实施例中,客户机240可通过以下非穷举术语中的任一个引用:用户设备;客户机;客户端;客户端计算机;客户端设备;客户端计算设备;本地机器;远程机器;客户端节点;端点;或端点节点。在一些实施例中,服务器206可通过以下非穷举术语中的任一个引用:服务器、本地机器;远程机器;服务器群、或主机计算设备。
在一个实施例中,客户机240可为虚拟机。虚拟机可为任何虚拟机,而在一些实施例中,虚拟机可为例如由思杰系统(Citrix Systems)、IBM、Vmware开发的管理程序或任何其他管理程序的类型1或类型2超级管理器管理的任何虚拟机。在一些方面,虚拟机可被超级管理器管理,而在一些方面,虚拟机可被在服务器206上执行的管理程序或在客户端240上执行的管理程序管理。
一些实施例包括客户端设备240,该客户端设备240显示由在服务器206或其他远程机器上远程执行的应用程序生成的应用程序输出。在这些实施例中,客户端设备240可执行虚拟机接收器程序或应用程序,以在应用程序窗口、浏览器或其他输出窗口中显示输出。在一个示例中,应用程序为桌面,而在其他示例中,应用程序为生成或显示桌面的应用程序。桌面可包括提供用于操作系统实例的用户接口的图形壳,其中在所述操作系统实例中可整合本地和/或远程应用程序。如本文所用的应用程序是在操作系统实例(以及,可选地,还有桌面)已被加载之后执行的程序。
在一些实施例中,服务器206使用远程呈现协议或其他程序,将数据发送到在瘦客户端或在客户端上执行的远程显示应用程序,以呈现通过在服务器206上执行的应用程序所生成的显示输出。瘦客户端或远程显示协议可为以下非穷举协议列表中的任一个:由美国佛罗里达洲劳德代尔堡市的思杰系统公司开发的独立计算结构(ICA)协议;或由美国华盛顿州雷德蒙德市的微软公司制作的远程桌面协议(RDP)。
远程计算环境可包括多于一个服务器206a-206n,从而使得服务器206a-206n例如在云计算环境中在逻辑上组合成服务器群206。服务器群206可包括在地理上分散同时在逻辑上组合在一起的服务器206,或位于靠近彼此处同时在逻辑上组合在一起的服务器206。在一些实施例中,服务器群206内的在地理上分散的服务器206a-206n可利用WAN(广域)、MAN(城域)或LAN(局域)进行通信,其中不同的地理区域被表征为:不同大陆;大陆的不同区域;不同国家;不同州;不同城市;不同校园;不同房屋;或前述地理位置的任何组合。在一些实施例中,服务器群206可被实施为单个实体,而在其他实施例中,服务器群206可包括多个服务器群。
在一些实施例中,服务器群可包括服务器206,该服务器206执行基本上相似类型的操作系统平台(例如,WINDOWS、UNIX、LINUX、iOS、ANDROID、SYMBIAN等)。在其他实施例中,服务器群206可包括执行第一类型的操作系统平台的一个或多个服务器的第一组和执行第二类型的操作系统平台的一个或多个服务器的第二组。
服务器206可按需被配置为任何类型的服务器,例如,文件服务器、应用程序服务器、网络服务器、代理服务器、装置、网络装置、网关、应用网关、网关服务器、应用存储服务器(例如,Citrix存储前端(StoreFront))、虚拟化服务器、部署服务器、SSL VPN服务器、防火墙、网络服务器、应用服务器或作为主应用服务器;执行活动目录的服务器;或执行应用加速程序的服务器,其中所述应用加速程序提供防火墙功能、应用功能、或负载平衡功能。其他服务器类型也可被使用。
一些实施例包括第一服务器106a,该第一服务器106a接收来自客户机240的请求,将请求转发到第二服务器106b,并且用来自第二服务器106b的响应对由客户机240生成的请求做出响应。第一服务器106a可获取可用于客户机240的应用程序的列表以及与应用服务器206相关联的地址信息,其中所述应用服务器206托管在所述应用程序列表内识别的应用程序。第一服务器106a然后可使用网络接口呈现对于客户端的请求的响应,并且与客户端240直接通信以向客户端240提供对于被识别应用程序的访问。一个或多个客户端240和/或一个或多个服务器206可通过例如网络101的网络230传输数据。
图2示出示例性桌面虚拟化系统的高层体系结构。如图所示,桌面虚拟化系统可为单服务器或多服务器系统、或云系统,包括至少一个虚拟化服务器206,该虚拟化服务器206被配置成向一个或多个客户端访问设备240提供虚拟桌面和/或虚拟应用程序。如本文所使用的,桌面指可在其中托管和/或执行一个或多个应用程序的图形环境或空间。桌面可包括提供用于操作系统实例的用户接口的图形壳,其中在所述操作系统实例中可整合本地和/或远程应用程序。应用程序可包括在操作系统实例(以及,可选地,还有桌面)被加载之后执行的程序。每个操作系统实例可以为实际操作系统(例如,每台设备一个操作系统)或虚拟操作系统(例如,多个OS实例在单个设备上运行)。每个应用程序可以在本地设备上执行,或在远程设置的设备(例如,远程设备)上执行。
进一步参考图3,计算机设备301可被配置为虚拟化环境中的虚拟化服务器,例如,单服务器、多服务器或云计算环境。图3所示的虚拟化服务器301可被部署为图2所示服务器206的一个或多个实施例或其他已知计算设备和/或通过图2所示服务器206的一个或多个实施例或其他已知计算设备实现。包括在虚拟化服务器301中的是硬件层,该硬件层可包括一个或多个物理磁盘304、一个或多个物理设备306、一个或多个物理处理器308和一个或多个物理存储器316。在一些实施例中,固件312可被存储在物理存储器316中的存储单元内,并且可被物理处理器308中的一个或多个执行。虚拟化服务器301还可包括操作系统314,该操作系统314可被存储在物理存储器316中的存储器单元内并且可被物理处理器308中的一个或多个执行。进一步地,超级管理器302可被存储在物理存储器316中的存储器单元中,并且可被物理处理器308中的一个或多个执行。
在物理处理器308中的一个或多个上执行的可以是一个或多个虚拟机332A-C(统称为332)。每个虚拟机332可具有虚拟磁盘326A-C和虚拟处理器328A-C。在一些实施例中,第一虚拟机332可使用虚拟处理器328A执行控制程序320,该控制程序320包括工具栈324。控制程序320可被称作控制虚拟机、Dom0、域0或用于系统管理和/或控制的其他虚拟机。在一些实施例中,一个或多个虚拟机332B-C可使用虚拟处理器328B-C执行客户操作系统(guest operating system)330A-B。
虚拟化服务器301可包括硬件层310,该硬件层310具有与虚拟服务器301通信的一个或多个硬件。在一些实施例中,硬件层310可包括一个或多个物理磁盘304、一个或多个物理设备306、一个或多个物理处理器308和一个或多个存储器216。物理组件304、306、308和316可包括例如上述组件中的任一个。物理设备306可包括例如网络接口卡、视频卡、键盘、鼠标、输入设备、监视器、显示设备、扬声器、光驱、储存器设备、通用串行总线连接、打印机、扫描仪、网络元件(例如,路由器、防火墙、网络地址转换器、负载平衡器、虚拟私人网(VPN)网关、动态主机配置协议(DHCP)路由器等)或连接于虚拟化服务器301或与虚拟化服务器301通信的任何设备。在硬件层310中的物理存储器316可包括任何类型的存储器。物理存储器316可存储数据,并且在一些实施例中可存储一个或多个程序或可执行指令集。图3示出一个实施例,其中固件312被存储在虚拟化服务器301的物理存储器316中。存储在物理存储器316中的程序或可执行指令可被虚拟化服务器301的一个或多个处理器308执行。
虚拟化服务器301还可包括超级管理器302。在一些实施例中,超级管理器302可为由处理器308在虚拟化服务器301上执行以创建或管理任何数量的虚拟机332的程序。超级管理器302可被称作虚拟机监视器或平台虚拟化软件。在一些实施例中,超级管理器302可为监控在计算机器上执行的虚拟机的可执行指令和硬件的任何组合。超级管理器302可为类型2的超级管理器,其中该超级管理器是在执行于虚拟化服务器301上的操作系统314内执行。虚拟机然后可以在高于超级管理器的层上执行。在一些实施例中,类型2的超级管理器在用户的操作系统环境内执行,使得类型2的超级管理器与用户的操作系统交互。在其他实施例中,在虚拟化环境中的一个或多个虚拟化服务器201可以替代地包括类型1的超级管理器(未示出)。类型1的超级管理器可通过直接访问硬件层310内的硬件和资源在虚拟化服务器301上执行。也就是说,当类型2的超级管理器302通过主机操作系统314访问系统资源时,如图所示,类型1的超级管理器可直接访问所有系统资源而无需主机操作系统314。类型1的超级管理器可直接在虚拟服务器301的一个或多个物理处理器308上执行,并且可包括存储于物理存储器316中的程序数据。
在一些实施例中,超级管理器302可通过模拟具有对系统资源的直接访问的操作系统330或控制程序320的任何方式,向在虚拟机332上执行的操作系统330或控制程序320提供虚拟资源。系统资源可包括但不限于物理设备306、物理磁盘304、物理处理器308、物理存储器316和包括在虚拟化服务器301的硬件层310中的任何其他组件。超级管理器302可被用于模拟虚拟硬件、对物理硬件分区、使物理硬件虚拟化和/或执行提供对计算环境的访问的虚拟机。在又一些其他实施例中,超级管理器302控制针对在虚拟化服务器301上执行的虚拟机332的处理器调度和存储器分区。超级管理器302可包括:由美国加利福尼亚州帕罗奥图市的VMWare公司制造的那些;XEN管理程序,一款由开源Xen.org社区(Xen.orgcommunity)监督其开发的开源产品;由微软提供的HyperV、VirtualServer或虚拟PC管理程序及其他产品。在一些实施例中,虚拟化服务器301执行创建虚拟机平台的超级管理器302,其中客户操作系统可在所述虚拟机平台上执行。在这些实施例中,虚拟化服务器301可被称作主机服务器。这种虚拟化服务器的示例为由美国佛罗里达洲劳德代尔堡市的思杰系统公司提供的XEN SERVER。
超级管理器302可创建一个或多个虚拟机332B-C(统称为332),客户操作系统330可在该一个或多个虚拟机332B-C中执行。在一些实施例中,超级管理器302可加载虚拟机镜像来创建虚拟机332。在其他实施例中,超级管理器302可以在虚拟机332内执行客户操作系统330。在又一些其他实施例中,虚拟机332可执行客户操作系统330。
除了创建虚拟机332之外,超级管理器302还可控制至少一个虚拟机332的执行。在其他实施例中,超级管理器302可向至少一个虚拟机332呈现由虚拟化服务器301提供的至少一个硬件资源(例如,在硬件层310内可用的任何硬件资源)的抽象。在其他实施例中,超级管理器302可控制虚拟机332访问在虚拟化服务器301中可用的物理处理器308的方式。控制对物理处理器308的访问可包括确定虚拟机332是否应当具有对处理器308的访问权限,以及呈现给虚拟机332什么样的物理处理器能力。
如图3所示,虚拟服务器301可托管或执行一个或多个虚拟机332。虚拟机332为可执行指令集,该可执行指令集在被处理器308执行时模仿实际计算机的操作,使得虚拟机332可非常类似于实际计算设备来执行程序和进程。尽管图3示出其中虚拟化服务器301托管三个虚拟机332的实施例,但在其他实施例中,虚拟化服务器301可托管任何数量的虚拟机332。在一些实施例中,超级管理器302为每个虚拟机332提供物理硬件、存储器、处理器以及可用于该虚拟机332的其他系统资源的不同虚拟视图。在一些实施例中,不同虚拟视图可基于:一个或多个虚拟机权限;对一个或多个虚拟机标识符的协议引擎的使用;访问虚拟机的用户;执行于虚拟机上的应用程序;由虚拟机访问的网络;或其他任何期望标准。例如,超级管理器302可创建一个或多个非安全虚拟机332和一个或多个安全虚拟机332。可阻止非安全虚拟机332访问可允许安全虚拟机332访问的资源、硬件、存储器位置和程序。在其他实施例中,超级管理器302可为每个虚拟机332提供物理硬件、存储器、处理器和可用于虚拟机332的其他系统资源的基本上类似的虚拟视图。
每个虚拟机332可包括虚拟磁盘326A-C(统称为326)和虚拟处理器328A-C(统称为328)。在一些实施例中,虚拟磁盘326为虚拟化服务器301的一个或多个物理磁盘304或虚拟化服务器301的一个或多个物理磁盘304的一部分的虚拟化视图。物理磁盘304的虚拟化视图可由超级管理器302生成、提供和管理。在一些实施例中,超级管理器302为每个虚拟机332提供物理磁盘304的不同视图。因此,在这些实施例中,相比于其他虚拟磁盘326,包括在每个虚拟机332中的特定虚拟磁盘326可以是不同的。
虚拟处理器328可为虚拟化服务器301的一个或多个物理处理器308的虚拟化视图。在一些实施例中,物理处理器308的虚拟化视图可由超级管理器302生成、提供和管理。在一些实施例中,虚拟处理器328具有至少一个物理处理器308的基本上全部的相同特性。在其他实施例中,虚拟处理器308提供物理处理器308的修改视图,使得虚拟处理器328的至少一些特性与对应物理处理器308的特性不同。
进一步参考图4,本文所述的一些方面可在基于云的环境中实现。图4示出云计算环境(或云系统)400的示例。如在图4中所看到的,客户端计算机411-414可与云管理服务器410通信,以访问云系统的计算资源(例如,主机服务器403、储存器资源404和网络资源405)。
管理服务器410可以在一个或多个物理服务器上被实现。例如,管理服务器410可运行由美国佛罗里达洲劳德代尔堡市的思杰系统公司开发的CLOUDSTACK或OPENSTACK等。管理服务器410可管理各种计算资源,包括云硬件和软件资源,例如,主机计算机403、数据储存器设备404和网络设备405。云硬件和软件资源可包括私有和/或公有组件。例如,云可被配置为供一个或多个特定客户或客户端计算机411-414使用和/或通过私有网络使用的私有云。在其他实施例中,公有云或公有私有混合云可被其他客户在开放或混合网络上使用。
管理服务器410可被配置成提供用户接口,云操作员和云客户可通过该用户接口与云系统交互。例如,管理服务器410可以为用户接口提供API集合和/或一个或多个云操作员控制台应用程序(例如,基于网页的独立应用程序),以允许云操作员管理云资源、配置虚拟化层、管理客户账户以及执行其他云管理任务。管理服务器410还可包括API集合和/或一个或多个客户控制台应用程序,其使所述用户接口被配置成经由客户端计算机411-414接收来自终端用户的云计算请求,例如,创建、修改、或销毁云内的虚拟机的请求。客户端计算机411-414可经由因特网或其他通信网络连接到管理服务器410,并且可请求访问由管理服务器410管理的计算资源中的一个或多个资源。为响应客户端请求,管理服务器410可包括资源管理器,该资源管理器被配置成基于客户端请求选择和提供云系统的硬件层中的物理资源。例如,管理服务器410和云系统的其他组件可经配置经由网络(例如,因特网)在客户端计算机411-414处为客户提供、创建和管理虚拟机及其操作环境(例如,超级管理器、储存器资源、由网络元件提供的服务等),从而为客户提供计算资源、数据存储服务、网络能力和计算机平台及应用程序支持。云系统还可经配置提供各种特定服务,包括安全系统、研发环境、用户接口等。
某些客户端411-414可能是相关的,例如,创建虚拟机的不同客户端计算机代表相同终端用户、或者代表隶属于相同公司或机构的不同用户。在其他示例中,某些客户端411-414可能是不相关的,诸如隶属于不同公司或机构的用户。对于不相关的客户端,在虚拟机或储存器上的任一用户的信息可以对其他用户隐藏。
现在参考云计算环境的物理硬件层,可用区域(availablity zone)401-401(或区域)可以指物理计算资源的并置集。在计算资源的整个云中区域可与其他区域地理上分离。例如,区域401可为位于加利福尼亚的第一云数据中心,而区域402可为位于弗罗里达的第二云数据中心。管理服务器410可位于可用区域中的其中一个,或位于独立的位置。每个区域可包括通过网关与该区域外部的设备(诸如管理服务器410)连接的内部网络。云的终端用户(例如,客户端411-414)可以意识到或未意识到各区域之间的差异。例如,终端用户可请求创建具有指定存储量、处理能力和网络容量的虚拟机。管理服务器410可对用户的请求做出响应并且可分配资源来创建虚拟机,而无需用户知晓是利用来自区域401还是利用来自区域402的资源创建了虚拟机。在其他示例中,云系统可允许终端用户请求将虚拟机(或其他云资源)分配在特定区域中或分配在区域内的特定资源403-405上。
在本例中,每个区域401-402可包括各种物理硬件组件(或计算资源)403-405(例如,物理托管资源(或处理资源)、物理网络资源、物理储存器资源、交换机和可用于向客户提供云计算服务的附加硬件资源)的布置。在云区域401-402中的物理托管资源可包括一个或多个计算机服务器403,诸如上述虚拟化服务器301,其可被配置以创建或托管虚拟机实例。在云区域401或402中的物理网络资源可包括一个或多个网络元件405(例如,网络服务提供商),网络元件包括被配置以向云客户提供诸如防火墙、网络地址转换器、负载平衡器、虚拟私人网(VPN)网关、动态主机配置协议(DHCP)路由器等的网络服务的硬件和/或软件。在云区域401-402中的储存器资源可包括存储磁盘(例如,固态硬盘(SSD)、磁硬盘等)和其他储存器设备。
在图4中示出的示例云计算环境还可包括虚拟化层(例如,如图1-3所示),该虚拟化层具有被配置以使用云中的物理资源来创建和管理虚拟机并向客户提供其他服务的附加硬件和/或软件资源。虚拟化层可包括如上述图3中的超级管理器和其他组件,从而一起提供网络虚拟化、存储虚拟化等。虚拟化层可为独立于物理资源层的层,或者可与物理资源层共享一些或全部相同的硬件和/或软件资源。例如,虚拟化层可包括安装在具有物理计算资源的每个虚拟化服务器403中的超级管理器。可另选地使用已知的云系统,例如WINDOWSAZURE(美国华盛顿州雷德蒙德市的微软公司)、AMAZON EC2(美国华盛顿州西雅图市的Amazon.com公司)、IBM BLUE CLOUD(美国纽约阿曼克的IBM公司)或其他。
示例性实施例
为将托管的应用程序、桌面或其他资源传送给终端用户,机构或服务提供商(例如,信息技术(IT)提供商或云服务提供商(CSP))可部署许多机器来托管用户会话。所述机器可被划分在许多服务器群或站点中,以便处理任意大的数量的机器和用户,或者以便向用户提供附加的隔离级别。另外,每台机器可安装不同版本的软件或操作系统。
应当注意,概括性术语“机器”可指虚拟机或实际机器。
一旦群集已被部署或正在托管会话,则可能需要执行维护操作。但是执行维护操作而不影响用户连接性(诸如通过引起连接或服务中断)是困难的。虽然贯穿本公开将论述维护操作的许多示例,但可能需要维护操作的一些示例包括:当数据库已经损坏时;当机器中的一个或多个已被选择进行更新或替换时;当设备或机器将被重启时;以及当服务器群的工作负荷将被转变为不同的工作负荷时。
作为更具体的示例,工作负荷(例如,托管特定应用程序和桌面的服务器群内的一组或多组机器,并且在一些实施例中,这一组或多组机器执行它们自身之间的负载平衡)可需要被转移到其他群,而不撤销对整个群的访问,并且不破坏对托管在工作负荷上的应用程序和桌面的用户连接。会发生该情况的示例是,如果服务器群已达到其用于用户和机器的最大容量但必须扩展工作负荷以处理增加的用户需求。在这种情况下,管理员可选择将一个或多个工作负荷从负荷过重的群移动到负荷轻的或新的群。这种移动可需要至少最小长度的中断。在大规模部署中,诸如云或企业,如果实现工作负荷的全部机器均被断开或禁用(例如,通过被设置成维护模式),则执行机器更新可导致极具破坏性的服务中断。另外,当机器跨越多个域、站点或网络时,可需要对每个范围启动人工处理。
其他情况也可需要至少最小长度的中断,包括,例如,当将用户从一个服务器转移到另一个服务器时、当从一个应用程序版本改变到另一个应用程序版本时等等。
用于执行维护操作的一个现有解决方案包括调度中断时间段,中断时间段需要终止会话(例如,终止/停止使用现有的和/或断开的会话)和阻止创建任何新的会话。这样可以潜在地导致终端用户造成数据损失,并且存在终端用户不能发起新会话的时间段,从而导致服务中断。
另一种现有解决方案是,例如,首先添加新机器并且然后断开或以其他方式禁用旧机器。只在新机器被成功添加且准备向用户提供资源之后旧机器才可被停止使用。但是该方法需要额外容量来执行此类维护操作,诸如对现有工作负荷进行更新。另外,由于新机器被分配并且旧机器被解除分配,该方法导致活动目录中的更多操作,因为机器必须驻留在特定组织单元(OU)中。在该方法中不支持原位更新(in-place update),而原位更新对于支持一旦用户第一次连接后就不能被更换的静态分配机器是所期望的且必要的。
用于执行维护操作的另一种现有解决方案包括调度机器重启,以便例如在用户登录或退出时处理失常的应用程序、修复未能清理的系统操作,或作为正常维护例行程序(例如,在镜像更新之后)的一部分。这样可潜在地导致启动风暴(boot storm),该启动风暴使底层基础设施过载并且影响用户连接到托管资源的能力。
贯穿本公开论述的示例实施例提供了用于执行维护操作的附加的或另选的解决方案,包括减少或最少化连接或服务中断的特征、允许原位更新的特征,以及降低或最小化启动风暴的可能性。
工作负荷可托管各种资源。例如,工作负荷可托管用于不同用户的资源、专用于托管特定资源(或资源版本)的资源。在一些实施例中,诸如应用程序和桌面的资源不横跨多个工作负荷。例如,即使两个用户安装或订阅了相同的应用程序,但每个用户的应用程序是在不同的工作负荷上,则以相同性质发布的两个应用程序可被创建(例如,每个工作负荷一个、每个用户一个)。将贯穿本文所述示例论述与可包括在工作负荷中的资源的类型或者如何配置工作负荷相关的各个方面。
本公开的一个或多个方面可能涉及针对应用程序、桌面或其他托管资源使用可配置服务器群优选项,以及基于可配置服务器群优选项来转移服务器群工作负荷。图5和图6示出涉及针对应用程序、桌面或其他托管资源使用可配置服务器群优选项以及基于可配置服务器群优选项来转移服务器群工作负荷的不同方面。具体来讲,图5示出用于提供可配置服务器群优选项的示例方法。图6示出用于基于可配置服务器群优选项来转移服务器群工作负荷的示例方法。
在一些实施例中,图5的方法可以具体实施为第一软件服务,并且图6的方法可以具体实施为第二软件服务。在一些情况下,第一和第二软件服务可以在不同的计算设备或服务器上执行。例如,第一软件服务可以在诸如管理服务器(例如,图4的管理服务器410)、网关、应用存储服务器、用户连接门户(portal)等的计算设备上执行;并且第二软件服务可以在诸如不同的管理服务器的不同的计算设备上执行。然而应当注意的是,在一些实施例中,第一和第二软件服务可以在相同的计算设备上被执行。
与结合图5和图6的示例方法描述的一些方面相结合,现有的用户会话在服务器群转换期内可不受影响;在源工作负荷上的断开的用户会话可以在转换期内重新被连接;新的用户会话可针对新的群;用于用户会话的总容量在转换期间内可以不减小,这提供在整个转换期内的相似或相同级别的用户连接性。
相对于图5,在步骤501中,计算设备可为一个或多个托管资源配置服务器群优选项。在一些实施例中,可为每个托管资源配置服务器群优选项。另外,在一些变型中,服务器群优选项可经配置使其为资源特定的或基于每个资源(例如,仅为第一应用程序配置第一服务器群资源,仅为第二应用程序配置第二服务器群资源等)。在此类变型中,服务器群优选项可被认为是基于应用程序或应用程序特定的服务器群优选项。尽管图5和图6中的全部示例将使用术语“服务器群优选项”,但可以类似地使用基于应用程序或应用程序特定的服务器群优选项。服务器群优选项可包括(或指定)主要群的指示和一个或多个辅助群的指示。在一些布置中,辅助群可被视为仅重连服务器群。
在一些实施例中,托管资源可被计算设备配置,以包括服务器群优选项,并且当用户启动应用程序时,用户的设备可将服务器群优选项发送到当试图启动应用程序时与用户的设备连接的门户。在其他实施例中,配置托管资源包括将数据存储在表格中或一些其他类型的数据库中。所存储的数据可包括服务器群优选项和将服务器群优选项与托管资源相关联的附加数据。当用户发起或试图访问托管资源(例如,启动应用程序、启动桌面等)时,所存储的数据可被访问,以定位相关托管资源的服务器群优选项。
在步骤503中,计算设备可确定由每个服务器群托管的资源。这可包括查询每个服务器群和枚举由该服务器群托管的应用程序。
可选地,基于所接收的由每个服务器群所托管的应用程序的列表,计算设备可执行各种操作。例如,计算设备可使得副本被删除、禁用、或以其他方式从服务器群消除。在一个实例中,如果是与另一个资源相同的资源版本并且与相同的用户相关联,则资源可为副本。列表可被更新,使得将重复的资源从列表中移除。作为各种操作的另一个示例,计算设备可基于列表进行各种操作,计算设备可显示或以其他方式提供(例如,存储在日志中)所接收的由每个服务器群托管的应用程序的列表,使得管理员或其他用户可查看或访问该列表。
在步骤505中,计算设备可接收针对托管资源的请求(例如,接收与用户或用户设备相关联的会话发起请求)。例如,针对托管资源的请求可以请求或以其他方式指示发起会话,并且还指示用于会话的应用程序、桌面或其他托管资源。在一些变型中,针对托管资源的请求可包括:为与请求相关联的资源配置的服务器群优选项;资源的标识符;用户或用户设备的标识符;或其他数据。在一些布置中,可执行图5中的步骤507-517来响应请求的接收。
在步骤507中,计算设备可确定托管资源是否配置有服务器群优选项。在一些实施例中,可针对托管资源来访问或搜索所存储的数据(例如,表或其他数据库)(例如,使用托管资源的标识符识别表中的条目)。当托管资源被找到并且与服务器群优选项相关联时,计算设备可确定该托管资源配置有服务器群优选项。在其他实施例中,计算设备可接收到为托管资源配置的服务器群优选项(例如,当启动应用程序时,用户的设备可将服务器群优选项发送到计算设备)和其他数据。基于所接收的服务器群优选项,计算设备可确定该托管资源配置有服务器群优选项。
当确定托管资源配置有服务器群优选项时,方法可转到步骤511。否则,方法可转到步骤509。
在步骤509中,计算设备,可基于与服务器群优选项不同的默认规则集或配置信息,来选择将托管用于用户的资源的服务器群(例如,根据在步骤505中接收的请求),并使所选择的群托管用于用户的资源。在一些变型中,默认规则集或配置信息可例如包括用于根据选择标准(诸如负载平衡标准或被分配到服务器群的工作负荷)来选择服务器群的现有逻辑。
在步骤511中,计算设备可(例如,响应于确定资源与服务器群相关联或配置有服务器群)确定辅助服务器群是否具有一个或多个用于用户的有效或断开的会话。这种确定可包括查询包括(或指定)在服务器群优选项中的每个辅助或仅重连服务器群,以确定第二服务器群是否具有任何用于用户的有效或断开的会话。如果至少一个辅助服务器群具有至少一个用于用户的有效或断开的会话,则计算设备可确定辅助服务器群具有一个或多个用于用户的有效或断开的会话,从而方法可转到步骤513。否则,方法可转到步骤515。
在步骤513中,计算设备可(例如,响应于确定辅助服务器群具有用于用户的一个或多个有效或断开的会话)选择具有用于用户的有效或断开的会话的辅助服务器群,并且可使得该辅助服务器群托管用于用户的资源(例如,使辅助服务器群启动应用程序或桌面)。在一些变型中,步骤511的确定可通过一个辅助服务器群进行到核心辅助服务器群(bone secondary server farm)(例如,以服务器群优选项指定的顺序查询)。一旦发现辅助服务器群具有至少一个用于用户的有效或断开会话,计算设备就可选择该辅助服务器群作为托管用于用户的资源的服务器群。在其他变型中,步骤511的确定可通过查询全部辅助服务器群进行,这可导致多个辅助服务器群具有至少一个用于用户的有效或断开会话。在此类变型中,计算设备可选择该多个辅助服务器群中的一个(例如,基于负载平衡标准、或一些其他标准)来托管用于用户的资源。
在步骤515中,计算设备可(例如,响应于确定辅助服务器群不具有一个或多个用于用户的有效或断开会话)使主服务器群托管用于用户的资源(例如,使主服务器群启动应用程序或桌面)。
在一些变型中,步骤513和步骤515中的一个或两个可包括发送资源已被托管的确认。
在步骤517中,计算设备可促进用户设备与服务器群之间的通信,使得资源是可用的。例如,在一些变型中,应用程序可能已经为用户启动,并且用户会话在服务器群上可以是有效的。计算设备可以向服务器群和用户设备发送数据/从其接收数据,使得用户可根据需要使用应用程序。步骤517在一些步骤中可被认为是可选的(例如,当计算设备作为驻留在用户设备和服务器群之间的网关或管理服务器操作时,步骤517可被执行,但在计算设备作为存储前端(store front)或应用程序存储操作的一些变型中,步骤517可以不被执行)。
图6的所示过程可单独执行或与图5的过程并行执行。例如,图5的过程可被存储前端、用户连接门户和/或其他网关执行,而图6的过程可被不同计算设备上的应用程序编配服务(或其他多产品自动化服务)执行。
相对于图6,在步骤601中,计算设备可确定将从服务器群转走的工作负荷(例如,源工作负荷)。在一些实例中,该确定可以是自动进行的,包括例如当服务器群容量过剩时(例如,基于服务器群容量标准)、当服务器群进行负载平衡时(例如,基于负载平衡标准)、或当服务器群的分配改变时(例如,基于服务器群分配标准)。该确定也可以是手动的,诸如当管理员或其他用户命令计算设备转移特定工作负荷时、等等。例如,可提供允许指定转移操作、源服务器群、和目标服务器群的输入的用户接口或命令壳。
在一些实施例中,确定源工作负荷可包括监控一个或多个服务器群,以确定是否超过总容量。当或如果超过群的总容量时,可确定将被转移的一个或多个工作负荷,直到容量过剩的服务器群不再容量过剩。
在步骤603中,计算设备可选择目标服务器群。在一些变型中,这可包括转移服务器群中的最小工作负荷。选择的条件可以是使用具有充足剩余容量的目标服务器群托管被转移的工作负荷。因此,计算设备可查询每个分配的服务器群,以确定每个群的当前剩余容量并基于所接收的剩余容量选择一个群。如果没有具有充足剩余容量的分配的服务器群,则计算设备可分配新的服务器群并将其用作目标服务器群。
在步骤605中,计算设备可在目标服务器群中创建新的工作负荷。在目标服务器群上的新工作负荷可被配置成与源工作负荷相同或相似。例如,新工作负荷可被创建成包括与源工作负荷相同数量的会话托管机器。
在步骤607中,计算设备可等待,直到新工作负荷可用于接受针对托管资源的请求(例如,会话发起请求等等)。在一些实例中,计算设备可另外必须例如等待正确数量的会话托管机器已被成功分配在目标服务器群和工作负荷中,使得新工作负荷中用于用户会话的总容量等于源工作负荷中用于用户会话的总容量。
在步骤609中,计算设备可发布新工作负荷内的一个或多个资源。在一些实施例中,所发布的资源对应于源工作负荷中的那些资源。例如,对于源工作负荷中的每个应用程序和桌面,类似或相同的应用程序或桌面可在新工作负荷中发布。
在步骤611中,计算设备可引起对一个或多个服务器群优选项的配置。配置一个或多个服务器群优选项可包括,将一个或多个服务器群优选项中每个的主服务器群的指示设置成与目标服务器群相同。配置一个或多个服务器群优选项还可包括,将一个或多个服务器群优选项中每个的一个或多个辅助服务器群的指示设置成包括源工作负荷的服务器群。作为一个示例,对于在新工作负荷中发布的应用程序,计算设备可与软件服务(例如,存储前端、用户连接门户或网关)配合,其中所述软件服务可配置应用程序专用的服务器群优选项。接口可以经由一个或多个使用应用程序编程接口(API)的调用,并且调用中的至少一个可包括目标服务器群的标识符。
在步骤613中,计算设备可监控源工作负荷,以停止使用源工作负荷中不具有有效或断开会话的任何机器,并在确定工作负荷中的全部机器均被停止使用时删除(或以其他方式禁用)源工作负荷。
在步骤615中,计算设备可引起对一个或多个服务器群优选项的配置,以便从一个或多个辅助服务器群的每个服务器群优选项的指示中移除源工作负荷的服务器群。
如上文论述的,可能需要执行的维护操作可包括重启操作。下面的示例将论述与用于执行重启调度和按需重启的方法相关的特征。
在全部这些示例中,将使用诸如桌面组和目录的术语。目录可被视为可作为单个实体被管理的虚拟机器或实际机器的集合。目录的示例包括机器创建服务(MCS)目录和供应服务(PVS)目录。在目录被创建之后,机器可被分配到桌面组中,然后桌面组可用于将托管资源传送给用户。机器可以是多种类型的,包括电源管理的或非电源管理的(也可互换地称作非受管的)。将结合下面的示例论述与所涉及各种类型的机器和所述类型的机器被处理的不同方式相关的附加细节。
与用于执行重启调度和按需重启的方法相关的方面可,例如,允许桌面组中的机器(包括非电源管理的机器)的有规律的、定期的重启,使得在一些实例中,错误或暂停应用程序或损坏资源状态可被清除。与用于执行重启调度和按需重启的方法相关的附加方面可,例如,允许目录(诸如MCS或PVS目录)中的机器在下一次启动或提出请求时运行用于该目录的最新镜像;从而允许,例如,目录中机器的镜像更新的受控实施。
一般来讲,为避免重启风暴使超级管理器过载或避免使组中全部机器在同一时间不可用,单独的机器重启操作可以在指定时间段内错开(在一些实施例中,管理员或其他用户可指定时间段)。包括共享的资源处,可能的是,确保在桌面组或目录重启期间一些资源总是有效。
如将在下面进一步论述,桌面组或目录重启可经由命令壳和/或用户接口被启动或其以他方式被配置。
在论述重启调度和按需重启的细节之前,将简要介绍一些概念。
应当注意,尽管贯穿示例使用术语“重启”,可执行关机,而不是重启。还应当注意,在一些情况下,可能需要执行单个机器的多次重启(例如,以执行个人虚拟磁盘(PvD)镜像更新)。为简单起见,本公开使用术语“重启”,但是不包括例如当详细处理基于重启、关闭等改变时。因此,术语“重启”在正常情况下应被理解为是指单次重启、关闭或多次重启。
目录重启和重启调度可包括类似的特征。执行目录重启或重启调度中的任何一个包括执行一个或多个重启循环。用于目录重启的重启循环(例如,目录重启启动的重启循环)可类似于用于重启调度的重启循环(例如,重启调度启动的重启循环)来执行。
用于重启调度的重启循环和用于目录重启的重启循环可同时运行。当同时运行时,一些实施例可努力确保给定机器只被处理一次(然而,当涉及基于PvD的目录重启启动的重启循环时,相同的机器可被处理多次)。
多个不同的目录重启启动的重启循环可在相同桌面组上同时运行(并且与表示相同桌面组的重启调度同时发生)。然而,在一些实施例中,如果包括在新目录的上次启动中的任何机器仍在处理中,则新目录重启启动的重启循环不能启动。
当改变重启调度或启动目录重启时,当所采取的方式为用于桌面组的另一个重启循环存在或者正在进行,则新的循环可以直到正在进行的循环结束才开始。换言之,一些实施例可在任何给定时间允许一组中只有一个调度循环有效。
图7示出用于执行重启循环的示例方法。在一些实施例中,图7的步骤可被重启循环管理服务执行。该服务可以在由服务器群的提供商运营的计算设备上被执行。在一些变型中,服务可被配置成诸如基于周期性(例如,30秒)间隔的服务操作回调(callback)等周期性地执行。重启循环管理服务可处理每个操作回调过程内的全部当前有效的重启循环。图7示出用于在单个操作回调期间处理单次重启循环的示例方法。
在步骤701中,计算设备可分析重启循环表以确定其状态,并基于该状态继续对重启循环的处理。在一些实施例中,重启循环可被视为自动过程,在该过程中,机器可被重启(或关闭、重新启动等)。如将结合图8和图9论述的,重启调度或目录重启可启动、激活或创建重启循环。例如,重启调度或目录重启可将条目添加(或使条目被添加)到包括重启循环配置数据的重启循环表中。当重启循环管理服务开始进行操作回调过程时,可分析重启循环表的条目,以确定重启循环是否已被启动或是否处于有效状态。
重启循环表可包括用于每个有效循环和一部分历史数据的条目(例如,用于已完成、已取消、或已废弃的循环的条目)。另外,重启循环表的每个条目可包括跟踪或管理重启循环的行为所需的数据。例如,用于重启循环(无论是有效的还是历史的)的条目可包括以下中的一些或全部:
●重启循环标识符:用于条目的重启循环的唯一标识符。当条目的重启循环被创建时,该标识符可被确定(并且之后不被改变)。
●桌面组标识符:如果可用的话,是用于重启循环的桌面组的唯一标识符。当重启循环为重启调度启动的重启循环时,该标识符可具有值。
●目录标识符:如果可用的话,是用于重启循环的目录的唯一标识符。当重启循环为目录重启启动的重启循环时,该标识符具有值。如果重启循环为重启调度启动的重启循环,则该标识符可为空值(null)。
●持续时间:指重启循环的最大持续时间。
●开始时间:条目被创建时的时间。
●结束时间:在完成、取消或废弃该条目的重启循环时的时间(例如,在其后不执行重启循环的进一步处理的时间)。如果重启循环仍然有效,则结束时间可被设置成空值。
●阶段一时间:对该条目的重启循环开始阶段一处理的时间。在一些实例中,该时间接近开始时间。
●阶段开始时间:对该条目的重启循环开始当前阶段(例如,阶段一或阶段二)处理的时间。
●重启循环状态:该重启循环的当前状态。该状态可具有取决于重启循环的处理的进行程度的值,包括,例如,当重启循环为需要初始化的新循环时的一个或多个值、当重启循环为有效时的一个或多个值、以及当重启循环已经完成时的一个或多个值。对于本公开的示例,将使用以下的状态列表(但其他列表也是可以的):待处理、阶段一、检测点、阶段二、完成、被取消、被废弃。
■“待处理”状态表示需要初始化的新循环。当条目已被创建但重启循环还未开始处理(例如,合格机器组未被创建)时,重启循环状态可被设置成“待处理”状态。
■“阶段一”状态、“检测点”状态和“阶段二”状态各自表示重启循环是有效的。当阶段一处理有效时(在可用的情况下),重启循环状态可被设置成“阶段一”状态。当重启循环在检测点等待时(在可用的情况下),重启循环状态可被设置成“检测点”状态。当阶段二处理有效时(在可用的情况下),重启循环状态可被设置成“阶段二”状态。在阶段一和/或检测点处理不适用的情况下,阶段二状态可指正常处理。
■“完成”状态、“取消”状态和“废弃”状态各自表示重启已完成。当重启循环完成时(例如,已对重启循环的每个合格机器尝试重启循环处理),重启循环状态可被设置成“完成”状态。当重启循环已超时时(例如,在超时条件内未对重启循环的每个合格机器尝试重启循环处理),重启循环状态可被设置成“废弃”状态。
●待处理取消数据字段:指已对该条目的重启循环发出停止请求(例如,经由命令壳、用户接口或软件开发包(SDK))。在一些布置中,重启循环处理可直到重启循环管理服务的下一次轮询才停止,此时重启循环状态可转换为“取消”。
●检测点时间:该条目的重启循环将进入检测点等待状态时的时间。该时间可被初始化为重启循环的开始时间。当基于重启间隔和总体重启循环持续时间使一批机器进入重启循环的等待状态时,该时间可被设置或其值被重写。
●检测点时限:指在其之前在阶段一处理期间重新启动的至少一个机器必须进入“重启”状态的时限。如果没有机器在该时限之前进入该状态,则重启循环可被废弃。时限可基于机器专有规则和其他配置数据(例如,指定机器在其被认为失效之前必须重启的最长时间的一个或多个注册表条目)被设置。如果重启循环不要求检测点,或在由于重启循环使得机器已成功重启的情况下,检测点时限可被设置成空值。
●待处理重启计数:提供将在该条目的重启循环期间重启/关闭但未对其开始进行处理的未完成机器(outstanding machine)的计数。一旦重启循环完成,该计数可被设置成零。在重启循环期间,该计数的值可被动态维持。
●进行中的重启计数:提供被发出重启/关闭请求但还未完成操作的机器的计数。在重启循环期间,该计数的值可被动态维持。
●完成的重启计数:在该条目的重启循环期间成功重启的机器的计数。在重启循环期间,该计数的值可被动态维持。
●失败的重启计数:被发出重启请求且在允许时间内请求失败或操作未完成的机器的计数。在重启循环期间,该计数的值可被动态维持。
●跳过的重启计数:在该循环期间被调度进行重启但由于重启循环被取消或废弃而未被处理的机器的计数。在重启循环期间,该计数的值可被动态维持。
●消息数据字段:包括用于在待重启机器上的用户会话中显示的文本。文本可在重启操作自身之前被显示。消息可在重启之前以宽限期参数中指定的分钟数显示(例如,在重启请求将被发送到机器的时间之前)。
●标题数据字段:包括用于窗口标题的文本,在所述窗口中,消息数据字段的文本在用户会话中显示。如果未指定,则窗口标题可为空白。
●宽限期参数:在重启之前显示消息数据字段的任何文本的时间(以分钟计)。
为确定重启循环的状态,计算设备可以,例如,对重启循环状态参数进行分析。执行的重启循环处理可取决于重启循环状态参数的值。例如,如果重启循环状态参数显示重启循环处于“待处理”状态,则方法可转到步骤703。如果重启循环状态参数处于“阶段一”状态、“阶段二”状态、或“检测点”状态,则方法可转到步骤705。如果重启循环状态参数处于“完成”状态、“被取消”状态、或“被废弃”状态,则方法可结束。
在一些布置中,重启循环的每个条目的数据可被SDK对象实例进行封装,使得SDK可创建条目、访问或操纵条目的数据。
在步骤703中,计算设备可确定用于重启循环的合格机器组。合格机器组可以仅被确定一次(例如,仅仅在响应于重启循环处于“待处理”状态时),并且因此,一旦重启循环处理为有效之后(例如,在“阶段一”状态、“检测点”状态、和“阶段二”状态),被添加到桌面组或目录中的任何机器都可以不被重启循环处理。
确定合格机器组可取决于重启循环是桌面组启动的重启循环还是目录重启启动的重启循环。在一些实施例中,确定合格机器组还可取决于在重启循环或目录中的机器的类型。但是,一般来讲,合格机器组可包括桌面组内的全部机器或机器子组。在一些变型中,确定合格机器组可包括确定重启循环是桌面组启动的重启循环还是目录重启启动的重启循环,继而通过应用适当的桌面组专用的规则、目录专用的规则和/或机器类型专用的规则来确定桌面组中的每个机器是否应当被添加到合格机器组中,并基于每个机器是否包括在合格机器组中而更新用于重启循环的计数参数(例如,如果机器被添加到合格机器组中,则增加待处理重启计数参数,并且如果机器未被添加到合格机器组中,则增加跳过的重启计数参数)。
在已完成步骤703之后,用于重启循环的计数参数(例如,如上面论述的待处理重启计数参数、在进行中的重启计数参数、完成的重启计数参数、失败的重启计数参数、和跳过的重启计数参数)可合计为在重启循环的桌面组中的机器的总数量。
对于桌面组启动的重启循环,合格机器组可包括被视为“开”的指定桌面组(例如,由重启循环的桌面组标识符指定的组)的机器。例如,对于电源管理的机器,不处于电源状态“关”或“关闭”的任何机器可被视为“开”,并且因此可被添加到合格机器组中。对于非受管机器,注册到桌面组中的任何机器可被视为“开”,并且因此被添加到合格机器组中。
对于目录重启启动的重启循环,合格机器组可包括目录中不处于电源状态“关”并且同时是桌面组的成员的任何或全部机器。
一旦合格机器组被确定,则方法可转到步骤704。
在步骤704中,计算设备可以初始化并存储用于合格机器组中的每个机器的数据。在一些布置中,这可包括将条目添加到一个或多个机器数据表中。例如,在一些变型中,可存在两个机器专有的数据表:重启循环机器表,其包括用于每个重启循环中的每个机器的条目,所述每个机器当前是所述每个重启循环的一部分;以及机器状态表,其对每个机器仅包括一个条目(例如,如果机器包括在两个重启循环中,则机器状态表可仅包括用于该机器的一个条目,而重启循环机器表可包括:第一重启循环专用的机器的第一条目,诸如重启调度启动的循环;和第二重启循环专用的机器的第二条目,诸如目录重启启动的循环)。
用于重启循环机器表的每个条目可包括以下参数中的一些或全部:
●机器表重启循环标识符:该条目相关的重启循环的唯一标识符。
●机器表机器标识符:该记录相关的机器的唯一标识符。
●机器表合格组指示器:指示机器是否在用于重启循环的合格机器组中。在一些布置中,可以只将PvD目录重启循环设置成假(false)。
●机器循环状态:指示相对于该重启循环的机器的状态。该状态的值可选自列表,诸如例如“等待”状态、“通知”状态、“重启待处理”状态、“已重启”状态、“已完成”状态和“已失败”状态。
■“等待”状态可表示机器等待针对该重启循环被处理。在一些布置中,处于该状态时,新会话发起可被禁用。
■“通知”状态可表示通知消息已被发送到机器并且机器处于介于发送通知和其重启时间之间的宽限期。
■“重启待处理”状态可表示用于机器的重启处理已被启动并且在等待完成。
■“完成”状态可表示用于机器的重启处理已完成。
■“失败”状态可表示用于该机器的重启处理失败。
●最后状态改变时间:机器循环状态最后被改变时的时间。在一些实施例中,用于机器的重启处理可取决于最后状态改变时间,同时处于“通知”和“待处理重启”状态。但是,一些变型出于诊断的目的可针对全部状态更新该时间。
在一些布置中,重启循环机器表的每个条目的数据可被SDK对象实例进行封装,使得SDK可创建条目、访问或操纵条目的数据。
机器状态表包括可用于通过在给定时间的仅仅一次重启循环来控制对机器的独占访问的数据。在一些布置中,在例如以下情况下重启循环可需要对机器的独占访问,所述情况为:由于重启循环使得新会话在机器上禁用;已向机器发送通知消息并且机器仍然在随后的宽限期内;或者机器被有效重启。用于机器状态表的每个条目可包括以下参数中的一些或全部:
●机器状态表重启循环标识符:具有机器的独占控制的唯一标识符。在一些变型中,如果不存在具有对机器的控制的重启循环(例如,机器可在合格机器组中并且在等待处理),该标识符可被设为零。
●耗尽直至重启参数:指由于该机器的待处理重启循环重启,使得在机器上发起的新会话被禁用。在一些实施例中,当重启循环对具有共享资源的机器进行处理时,可使用该参数。在一些变型中,如果机器状态表重启循环标识符为零(或指示没有机器具有独占控制的某个其他值),该参数可被设置成假。
●最后重启时间:确定机器被最后重启时的时间。在一些变型中,该时间可由注册或电源管理服务设置(例如,如包括在处理电源操作的代理服务中)。
在一些布置中,机器状态表的每个条目的数据可被SDK对象实例封装,使得SDK可创建条目、访问或操纵条目的数据。
在一些实施例中,重启循环的开始时间可被设为在进行结合步骤703或步骤704论述的处理之一的时间或期间的当前时间。
在步骤705中,计算设备可确定每次机器重启之间的间隔。一般来讲,将以交错的方式发送用于合格机器组中的机器的重启命令,所述交错方式基于所确定的间隔。间隔可基于以下确定:重启循环的持续时间和取决于重启循环是重启调度启动的重启循环还是目录重启启动的重启循环的机器的数目。
对于重启调度启动的重启循环,间隔可通过以下被确定:获取重启循环的持续时间与重启循环的宽限期之间的差值,并用差值除以桌面组中机器的总数量。
对于目录重启启动的重启循环,间隔可通过以下被确定:获取重启循环的持续时间与重启循环的宽限期之间的差值,并用差值除以桌面组中同样是目录的成员的机器的总数量。
在步骤707中,计算设备可执行用于重启循环的机器专有处理。在重启循环期间,可做出对合格机器组中的全部机器进行重启的尝试。一般来讲,在组中的特定机器中执行的机器专有处理是桌面组类型特定的、目录类型特定的和机器类型特定的。进一步地,由于可以交错的方式开始重启每个机器(例如,基于步骤705的间隔),因此每个机器的处理可彼此独立并且彼此异步,并且一些机器可在重启循环期间用于用户会话。
机器专有的处理可包括从合格机器组中选择机器(例如,随机选择),确定所选机器的机器循环状态,以及基于其机器循环状态对机器进行处理。
例如,如果机器处于“等待”状态,则基于其机器循环状态对机器进行处理可包括确定是否要开始进行用于机器的重启处理(例如,以进入“通知”状态,如果可用的话,或进入“重启待处理”状态)。
确定是否要开始进行用于机器的重启处理可取决于机器可用。机器可以是不可用的,例如,机器由于不同的服务而处于维护模式(例如,处于FlexCast管理体系结构(FMA)维护模式)或是被视为不可用的特定机器类型(例如,未注册的实际机器)。机器可以是可用的,例如,如果当前重启循环基于机器状态表而具有对该机器的独占控制(例如,机器状态表重启循环标识符与用于重启循环的重启循环标识符或用于机器的机器表重启循环标识符匹配),或者如果确定机器以其他方式可用。在确定是否要开始进行重启处理取决于设备的可用性的实施例中,在重启循环结束时仍然不可用且在重启循环期间未被处理(例如,保持“等待”状态)的任何机器可在合适的计数参数中被记录为被跳过的机器。
除此之外或作为另一种选择,确定是否要开始进行用于机器的重启处理可取决于每次机器重启之间的间隔。如果自重启合格机器组中的先前选择的机器的命令开始的间隔还未到期,则计算设备可结束用于该机器的机器专有处理(或等待直到该间隔到期)。自重启先前选择的机器的命令开始的间隔可,例如,基于重启循环的计数参数、当前时间、重启循环的开始时间来确定。
另外,确定是否要开始进行用于机器的重启处理可取决于需要处理的机器。例如,最后记录的关闭时间可被确定,并且如果该时间晚于重启循环的开始时间,则不需要对该机器执行操作(并且该发现可通过增加完成的重启计数参数并将机器置于“完成”状态来记录)。可基于机器是电源管理的还是非受管的,不同地确定最后记录的关闭时间。例如,如果是电源管理的,则最后转换到电源状态“关”的时间可用作最后记录的关闭时间。如果是非受管的,则最后登记的时间可被用作最后记录的关闭时间,但在一些变型中,只有在最后记录的注销登记原因是“代理关闭”的前提下,最后登记的时间才可被用作最后记录的关闭时间。
如果机器将进入“通知”状态(“通知”状态可以是可选的或不包括在一些变型中,诸如当不期望向机器的用户会话发送通知消息时),计算设备可向机器的一个或多个用户会话发送通知。通知消息可包括诸如消息或标题数据字段、和宽限期的参数。如果在被选择用于通知的时刻机器不具有用户会话,则可以不发送通知消息。
如果机器处于“通知”状态,则基于其机器循环状态对机器进行处理可包括确定宽限期是否到期。确定宽限期是否到期可基于宽限期和最后状态改变时间参数。如果宽限期到期,则计算设备可发出一个或多个命令以使机器重启。被发送的命令的类型和数量可取决于机器类型。
例如,关闭和/或重新启动电源操作(例如,超级管理器电源管理操作)可对电源管理的机器发布,并且与从其他源发布的其他电源操作(诸如代理服务)一起排队。此类电源操作可与电源操作的现有优先级管理一致。但是,在由于存在较高优先级的待处理操作而使得电源操作被忽略或不能排队的一些变型中,可以不对该机器生成错误。在此类变型中,基于由于将满足“重启待处理”状态要求的其他原因可发生重启,机器可被置于和/或保持在“重启待处理”状态。在图10中示出由重启循环发出的电源操作与来自其他源的待处理操作之间的示例优先级交互。
作为另一个示例,重启请求可被发送给实际机器。
一些电源操作可需要经由ICA栈处理(例如,用于非MCS目录)。在此类实例中,代理可能不能使机器重启。
当发送合适的命令时,计算设备可使得机器进入“重启待处理”状态。
一些变型要求当发现处于“通知”状态的机器上面不具有用户会话时,该机器可转换到“重启待处理”状态,而不需要等待宽限期到期。
如果机器处于“重启待处理”状态,则计算设备可以例如确定重启完成还是失败。为确定机器是否完成,可基于最后重启时间参数和/或最后状态改变时间参数。如果完成,则完成的重启计数参数可增加并且机器的状态可被设为“完成”状态。
如果生成了错误代码,则机器可能未完成操作(可通过增加失败的重启计数参数和将机器的状态设为“失败”状态对该未完成的操作进行记录)。
在重启循环的持续时间到期时,可通过增大失败的重启计数参数对保持“重启待处理”状态的任何机器进行记录。
为简单起见,当执行机器专有处理时可使用的各种桌面组特定的、目录特定的和机器类型特定的规则的保留部分将被组织成对于重启调度启动的重启循环的规则和对于目录重启启动的重启循环的规则的单独论述。机器类型特定的规则将贯穿各种示例论述。另外,应注意,虽然各种示例规则仅仅根据重启调度启动的重启循环或目录重启启动的重启循环进行论述,但在某些条件下,示例可用于其他类型的重启循环。
相对于重启调度启动的重启循环,以下描述的示例中的一些可包括“重启维护模式”的使用。当处于重启维护模式时,对机器的新会话的代理(或发起)可被禁用或以其他方式阻止。但是,当处于重启维护模式时,可允许重新连接到现有的会话。
相对于用于通过重启调度启动的重启循环进行重启的共享远程桌面服务(RDS)机器,对合格机器组的处理可分成三部分:阶段一(其可使用“阶段一”状态);检测点(其可使用“检测点”状态);以及阶段二(其可使用“阶段二”状态)。
当在阶段一中时,可通过排除全部不可用的机器并且然后选择那些剩余机器中的一半,来从合格机器组中选出机器子组。该子组中的机器可被置于重启维护模式,并且该子组然后通过机器专有的处理进行。一旦对子组中全部机器的处理已被通知或者重启至少是待处理的,则阶段一可被视为完成。
一旦阶段一结束,检测点就可开始。进一步的处理可以等待,直到在阶段一中被处理的机器中的至少一个可用于新会话代理(如通过虚拟桌面代理(VDA)报告的)。如果检测点等待未在超时期间内完成,则重启循环可被废弃。来自阶段一的未处理机器可在用于重启循环的跳过的重启计数参数中被记录,并且来自阶段一的仍然待处理的任何机器可在用于重启循环的失败的重启计数参数中被记录。
当检测点结束时,阶段二可开始。当在阶段二中时,合格机器组中在阶段1未被选中的全部机器可被置于重启维护模式,并且通过机器专有的处理进行。
用于共享RDS机器的机器专有处理可如下在阶段一和阶段二中进行。如果机器是电源管理的,则可以首先将其关闭并且在成功转换到电源状态“关”之后,它们可以重新启动。如果关闭成功,则处理可被视为完成(在一些变型中,重新启动操作可以不受监控)。如果机器是非受管的,则其可被重启。如果随后针对使重启请求推迟的机器记录了最后关闭时间,则处理可被视为完成。
当对每个独立机器的处理完成或失败时,其可从重启维护模式移除。
在一些实施例中,针对包括RDS机器的桌面组,无论是基于空闲池的电源管理还是基于策略的电源管理均可被支持。因此,正被执行的自动电源管理操作仅仅是与重启循环处理相关的那些操作。
相对于用于通过重启调度启动的重启循环进行重启的共享虚拟桌面基础架构(VDI)机器,对合格机器组的处理可分为三部分:阶段一(其可使用“阶段一”状态);检测点(其可使用“检测点”状态);和阶段二(其可使用“阶段二”状态)。
当在阶段一中时,可通过排除任何不可用的机器并且然后选择那些剩余机器中的一半,从合格机器组中选出机器子组。在该子组中的机器可被置于重启维护模式。然后可使该子组的机器经受机器专有的处理。一旦开始对全部机器的处理(例如,通知或重启待处理),则阶段一可结束。当阶段一结束时,检测点可开始。在检测点,进一步的处理可以等待,直到成功重启的机器的数量大于重启处理仍然是待处理或正在进行中机器的数量(该条件基于共享VDI机器的电源管理)。如果检测点等待未在超时期间内完成,则重启循环可被废弃。子组中的任何未处理机器可通过设置用于重启循环的跳过的重启计数参数来被记录。仍然待处理的任何机器可通过设置失败的重启计数参数来被记录。在阶段一和检测点结束之后,合格机器组中在阶段一期间选中的全部机器可被置于重启维护模式,并且通过机器专有的处理进行。
可如下在阶段一和阶段二中进行用于共享VDI机器的机器专有处理。对于电源管理的机器,则其可被关闭。如果机器成功转换到电源状态“关”,则处理可被视为完成。对于非受管的机器,则其可被重启。如果随后针对使重启请求推迟的机器记录了最后关闭时间,则处理可被视为完成。
当对每个独立机器的处理完成或失败时,其可从重启维护模式被移除。
在一些实施例中,当执行关闭时,需要与桌面组的空闲池管理进行交互。例如,当机器关闭时,桌面组的空闲池管理可启动新的机器来维持所需级别。这些新机器可以不来自合格机器组(例如,仅包括最初运行的那些机器的合格机器组),因此重启循环可以不对新机器执行重启/关闭。
相对于通过重启调度启动的重启循环进行重启的私有VDI机器,机器专有的处理可如下进行。如果机器是电源管理的,则其可被关闭并且在成功转换到电源状态“关”之后可被重新启动。如果关闭成功,则处理可被视为完成(在一些变型中,重新启动的成功可不受监控)。如果机器是非受管的,则其可被重启。如果针对使重启请求推迟的机器记录最后关闭时间,则处理可被视为完成。在一些实施例中,重启维护模式可以不用于私有VDI机器。
在一些实施例中,可使用电源操作优先级处理来解决当重启循环与高峰时间和非高峰时间之间的变化同时发生时可发生的任何冲突。因此,一些变型可以不构建对电源管理的交互的特定考虑,其中所述电源管理的交互是可应用于私有VDI组的并且可能是重启循环电源管理所需的。
如在上述示例中描述的,基于机器类型可将合格机器组分成两组。这样可增加重启循环期间的资源的可用性(一般来讲,至少一半机器在重启循环期间可用于新会话,并且其他机器可用于重新连接)。图11示出被分为两组并且通过重启循环进行的合格机器组的例证。
相对于目录重启启动的重启循环,一些实施例可包括用于MCS和PVS电源管理的目录的特定规则。例如,当机器通过机器专有处理进行时,将对MCS和/或PVS电源管理的目录执行PvD更新过程的重启循环可能需要许多特定规则。当执行PvD更新过程时,可使用代理服务的现有PvD支持(例如,PvD阶段功能、PvD更新管理)。
相对于结合目录重启启动的重启循环来执行PvD更新过程,可如下在合格机器组上进行机器专有的处理:如果机器不处于电源状态“关”并且是处于PvD阶段“请求”,则其可被关闭。如果关闭未在允许时间段内完成,则用于重启循环的失败的重启计数参数可增加。一旦机器被关闭并且处于PvD阶段“请求”,则可通过代理服务的PvD更新管理来处理镜像更新过程的控制,这在一些实例中可能需要执行多次重启。机器专有的处理可等待机器转换成PvD状态“无(none)”,并且如果这种情况在所允许的时间段内发生,则完成的重启计数可增加。否则,失败的重启计数参数可增加。
在一些实施例中,PvD镜像更新过程可导致重启循环在合格机器组之外的机器上实施。在合格机器组之外的机器的机器专有处理可以只包括等待机器转换到PvD阶段“无”,并且如果这种情况在所允许的时间段内发生,则完成的重启计数参数可增加。否则,失败的重启计数参数可增加。
另外,当代理服务的PvD更新管理处理镜像更新过程时,另外的机器(例如,处于电源状态“关”的那些)可被重新启动,以便执行PvD镜像更新。这些机器重新启动的速率可由所配置的超级管理器节流参数来确定,而不是由重启循环或目录重启的指定持续时间来确定。
在步骤709中,当接收到停止请求时,计算设备可处理重启循环停止请求。在一些变型中,SDK调用可能能够请求使重启循环被取消或被停止。为确定是否已接收到请求,可分析待处理取消数据字段。如果请求已被接收,则重启循环状态可被设为“取消”。在一些变型中,步骤709可以在回调操作开始时执行,而不是如图7所示在接近结束时执行。
在步骤711中,计算设备可更新用于重启循环的重启循环状态。这可包括,例如,分析重启循环表、重启循环机器表和机器状态表的各种条目的数据,以确定重启循环状态(其中的一些可能已在重启循环初始化或机器专有处理期间被更新/修改)。例如,重启循环状态可基于用于重启循环的计数参数、用于重启循环的各种开始和结束时间参数等。
在整个重启循环中,计算设备可维护存储在各种表中的数据,各种表包括重启循环表、重启循环机器表和机器状态表。虽然论述了其中计算设备可以初始化、设置或修改表中特定参数的少数示例,但为简单起见,省略了许多其他实例。为维持存储在各种表中的数据,计算设备可执行一个或多个一致性检查或错误检查例行程序,以确定各种参数的值是否彼此一致。
重启调度可应用于各种类型的桌面组,包括私有桌面组、共享桌面组、VDI桌面组、RDS桌面组或应用程序桌面组。重启调度可使得重启循环在调度时间在指定桌面组上被启动。
如果错过了预定的开始时间(例如,群停机进行维护),则可以在之后尽可能快地开始根据重启调度的重启循环。如果错过了多个连续的开始时间,则一些实施例可将此类情况处理为仅仅错过一次调度的时间。
在一些变型中,使用目录重启不能使桌面组被重启(例如,它们不能按需被重启但可使用重启调度被重启)。类似地,在一些变型中,使用重启调度不能使目录被重启,但可使用目录重启使目录重启(例如,它们不能使用重启调度被重启但可以被“按需”重启)。
图8示出用于执行重启调度的示例方法。在一些实施例中,图8的步骤可被重启调度管理服务执行。该服务可以在由服务群的提供商运营的计算设备上执行。在一些变型中,服务可被配置成周期性地执行,诸如基于周期性(例如,30秒)间隔的服务操作回调等周期性地执行。
在步骤801中,计算设备可对经配置的重启调度进行处理。一般来讲,重启重新调度管理服务可处理预配置重启调度数据。重启调度数据可以多种方式被配置。例如,可提供命令壳或用户接口,该命令壳或用户接口允许管理员或其他用户指定或配置应当执行重启调度的条件。经配置的重启调度数据可被存储在两个表中:重启调度配置表和重启调度状态表。在一些布置中,机器状态表的每个条目的数据可被SDK对象实例进行封装,使得SDK可创建条目、访问或操纵条目的数据。
重启调度配置表和重启调度状态表可包括以下参数中的全部或一些:
●重启调度标识符:用于重启调度的唯一标识符。该参数可通过所创建的重启调度进行分配。
●重启调度桌面组标识符:该调度相关的桌面组的唯一标识符。
●频率参数:该重启调度所运行的频率(例如,每周、每天等)。
●日期参数(day parameter):对于较长频率的调度(例如,每周),在一周中重启调度将要启动重启循环的那天。
●时间参数:重启调度将要启动重启循环时的一天中的时刻。
●重启调度持续时间参数:调度的重启循环所经历的合适的最长持续时间。出于各种原因(例如,合格机器组中的机器少于桌面组中的机器,这可导致重启循环早于重启调度持续时间完成),重启循环可早于持续时间完成。
●重启调度消息参数:在被调度用于重启的机器上的用户会话中显示的警告消息。如果消息为空白,或者用于重启调度的宽限期为零,则一些变型可不显示消息。
●重启调度宽限期参数:在机器重启之前的时间,在该时间,警告消息可被显示到将要重启的机器上的全部用户会话。
●重启调度最后运行时间参数:由于重启调度,使得重启循环最后启动的时间。在一些变型中,该参数可由重启调度管理服务来维护。
在一些实施例中,由于操作回调可彼此独立地工作并且任何需要的数据可得自存储在各种表中的数据,因此在步骤801中执行的处理可能需要预配置重启调度数据。
在步骤803中,计算设备可监控系统时间,以根据重启调度来确定是否应当启动重启循环。确定是否要启动重启循环可基于在步骤801中被配置的重启调度数据和诸如每个桌面组的时区值的其他数据。如果应当启动重启循环,则方法可转到步骤805。否则方法可结束。
在步骤805中,计算设备可确定相对于由重启调度所指定的桌面组,另一个重启调度启动的重启循环是否仍然有效或正在进行中。在一些变型中,当用于桌面组的另一个重启调度启动的重启循环仍然有效或正在进行中时,可以不创建用于该桌面组的重启循环。因此,如果不存在有效或正在进行中的另一个重启调度启动的重启循环,则方法可转到步骤807。否则,方法可结束。
在步骤807中,计算设备可启动或创建重启循环。在一些变型中,这可包括向用于重启循环的重启循环表中添加条目,以及根据重启调度的参数对所创建条目的各个参数进行初始化。例如,用于重启循环的条目可配置有重启调度的持续时间、宽限期等。用于重启循环的条目的其他参数可基于系统数据初始化,诸如通过确定重启循环标识符初始化等。
由于重启循环的初始化,导致重启循环管理服务可开始对重启循环进行处理(例如,通过类似于图7的方法)。
除了重启循环管理服务之外,可执行清除服务(purge service)。清除服务可以在可配置时间段之后从表中清除或删除完成的、被取消的或被废弃的重启循环。例如,可配置时间段可被设为1周,使得完成的、被取消的或被废弃的重启循环被保留1周。可配置时间段可以标记为“重启循环数据寿命时间(RebootCycleDataLifetimeHours)”的注册表变量中存储。
目录可按需被重启(例如,目录重启),诸如通过使用一个或多个SDK调用。目录重启可使得一个或多个重启循环被启动,其中每个循环在包括来自目录且需要处理的机器的桌面组上执行。
在一些实施例中,根据本文所述方法的重启目录可允许目录(诸如非PvD目录)中的机器运行用于该目录的最新镜像,或被关闭以在下一次启动时最新镜像将被使用。在一些实施例中,根据本文所述方法的重启目录还可允许目录(诸如PvD目录)中的机器运行用于该目录的最新镜像,并执行全部PvD镜像更新。
在一些变型中,目录重启可以仅被应用于某些目录类型,诸如MCS提供的目录(具有或不具有PvD)和PVD提供的目录(具有或不具有PvD)。
在一些布置中,目录重启可以不利用与任何给定机器上的镜像是否是最新的有关的信息(例如,目录重启可以在机器上执行,而无需确定机器的镜像是否是最新的)。替代的是,目录重启可以在假设机器应当(可能的话)被重启的条件下操作。
图9示出用于执行目录重启的示例方法。
在步骤901中,计算设备可接收目录重启配置数据。如上面论述的,可按需开始目录重启,诸如经由SDK调用和/或经由用户界面(UI)。当做出SDK调用时或当用户在UI中输入选项时,可指定各种选项,诸如待重启的目录标识符、机器应被更新到的镜像等。
在步骤903中,计算设备可确定目录机器组。这可包括识别是待重启目录的成员的全部机器,和将这些成员机器添加到目录机器组中。在一些变型中,目录机器组响应于目录重启配置数据的接收而启动并且之后不改变。因此,如果在目录机器组已被确定之后将任何机器添加到目录中,其可能不能通过目录重启进行重启。
在步骤905中,根据每个机器是其成员的桌面组,计算设备可将目录机器组分成一组或多组。例如,如果目录机器组包括被分配成两个桌面组的机器,则机器可被分成具有第一桌面组的成员机器的第一组和具有第二桌面组的成员机器的第二组。
在一些实施例中,如果目录重启是用于PvD更新,则一组或多组可被如下划分。每组可包括不处于电源状态“关”且同时也是相同桌面组的成员的机器。例如,目录机器组可包括4台机器,诸如机器A(电源状态“关”且是桌面组1的成员),机器B(电源状态“开”且是桌面组2的成员)、机器C(电源状态“开”且是桌面组2的成员)和机器D(电源状态“开”且是桌面组1的成员)。这种目录机器组可被分成两组,其中一组包括机器D并且另一组包括机器B和C。可将机器A从两组中排出,因为其处于电源状态“关”。
在步骤907中,针对一组或多组中的每个组,计算设备可启动重启循环。因此,如果步骤905的划分得到两组,则两个重启循环可被创建。在一些变型中,这可包括将条目添加到用于每个重启循环的重启循环表中,以及根据各组的参数对每个所创建条目的各种参数进行初始化。例如,用于重启循环的条目可配置有由目录重启配置数据指定的持续时间、宽限期等。用于重启循环的条目的其他参数可基于系统数据被初始化,诸如通过确定重启循环标识符或是各组成员的机器的数据被初始化。
由于每个重启循环的初始化,重启循环管理服务可开始处理每个重启循环(例如,通过类似于图7的方法)。重启循环中的每个可同时执行。每个循环的持续时间可以是针对总体目录重启指定的(例如,如在目录重启配置数据中指定的)。由于每组中机器的数量可在一些实例中不同,因此每个重启循环中的机器重启之间的间隔也可不同。
如贯穿本公开论述的,当创建重启调度和目录重启时可使用SDK。SDK可支持各种脚本或“命令行工具(cmdlets)”,所述脚本或“命令行工具”帮助创建重启调度和目录请求、在重启期间访问信息、暂停和/或停止重启调度和目录请求。每个命令行工具在执行其功能时可支持被命令行工具使用的各种参数。这些参数中的一些可以是强制的,一些可以是可选的。如果在命令行工具调用时不提供可选参数,则可以使用默认值。另外,命令行工具一旦完成即可返回数据,诸如SDK对象或其他数据。例如,SDK可包括用于创建新代理重启调度的命令行工具(例如,命名为“new-brokerrebootschedule(新代理重启调度)”);用于设置以前创建的重启调度的命令行工具(例如,命名为“set-brokerrebootschedule(设置代理重启调度)”);用于移除以前创建的重启调度的命令行工具(例如,命名为“remove-brokerrebootschedule(移除代理重启调度)”);用于获取以前创建的重启调度的命令行工具(例如,命名为“get-brokerrebootschedule(获取代理重启调度)”);用于开始目录重启的命令行工具(例如,命名为“start-brokerrebootcycle(开始代理重启循环)”);用于停止重启循环的命令行工具(例如,命名为“stop-brokerrebootcycle(停止代理重启循环)”);用于获取重启循环的命令行工具(例如,命名为“get-brokerrebootcycle(获取代理重启循环)”);等等。
另外,用户界面可被用作SDK与用户之间的界面,使得管理员或用户可被指导为何他们创建重启调度或目录重启。图12示出来自用户界面的示例屏幕截图,其可用于在用户创建重启调度或目录重启时指导用户。
虽然已经用对结构特征和/或方法行为特定的语言描述了主题,应当理解,在任何权利要求中所定义的主题未必限制于上述特定特征或行为。相反,上述特定特征和行为被描述为所附权利要求的示例实现方式。

Claims (12)

1.一种用于根据重启调度执行机器重启的方法,包括:
处理经配置的重启调度,所述经配置的重启调度包括待重启的桌面组;
根据所述经配置的重启调度确定是否要启动用于执行自动机器重启的重启循环;
响应于确定要启动所述重启循环,确定另一个重启调度启动的重启循环是否针对所述桌面组有效或断开;
响应于确定不存在针对所述桌面组有效或断开的另一个重启调度启动的重启循环,通过计算设备启动所述重启循环;
确定用于所述重启循环的合格机器组;
确定每个机器重启之间的间隔;以及
基于所述间隔,执行用于所述重启循环的机器专有处理,其中,尝试对所述合格机器组中的每台机器进行重启。
2.根据权利要求1所述的方法,还包括:
确定重启循环状态,并且基于所述重启循环状态继续处理所述重启循环;
初始化所述合格机器组中的每台机器并为其存储数据;以及
更新所述重启循环的所述重启循环状态。
3.根据权利要求1所述的方法,其中,执行用于所述重启循环的机器专有处理包括对所述合格机器组中的每台机器执行镜像更新。
4.根据权利要求1所述的方法,其中,执行用于所述重启循环的机器专有处理包括试图在至少第一阶段和第二阶段中重启所述合格机器组中的机器;
其中,在所述第一阶段期间,来自所述合格机器组的机器子组处于重启维护模式,并且来自所述合格机器组的剩余机器能够用于会话;并且
其中,所述重启维护模式禁止新会话的代理但允许重新连接到现有会话。
5.根据权利要求1所述的方法,其中,所述合格机器组包括共享虚拟桌面基础架构(VDI)机器。
6.根据权利要求1所述的方法,其中,所述合格机器组包括共享远程桌面服务(RDS)机器。
7.根据权利要求1所述的方法,其中,所述合格机器组包括专用虚拟桌面基础架构(VDI)机器。
8.根据权利要求1所述的方法,其中,所述合格机器组包括实际机器。
9.一种用于根据重启调度执行机器重启的装置,包括:
一个或多个处理器;以及
存储可执行指令的存储器,所述可执行指令被配置成在被所述一个或多个处理器执行时使所述装置执行:
处理经配置的重启调度,所述经配置的重启调度包括待重启的桌面组;
根据所述经配置的重启调度确定是否要启动用于执行自动机器重启的重启循环;
响应于确定要启动所述重启循环,确定另一个重启调度启动的重启循环是否针对所述桌面组有效或断开;
响应于确定不存在针对所述桌面组有效或断开的另一个重启调度启动的重启循环,启动所述重启循环;
确定用于所述重启循环的合格机器组;
确定每个机器重启之间的间隔;以及
基于所述间隔,执行用于所述重启循环的机器专有处理,其中,试图重启所述合格机器组中的每台机器。
10.根据权利要求9所述的装置,其中,执行用于所述重启循环的机器专有处理包括试图在至少第一阶段和第二阶段中重启所述合格机器组中的机器;
其中,在所述第一阶段期间,来自所述合格机器组的机器子组处于重启维护模式,并且来自所述合格机器组的剩余机器能够用于会话;并且
其中,所述重启维护模式禁止新会话的代理但允许重新连接到现有会话。
11.根据权利要求9所述的装置,其中,所述合格机器组包括共享虚拟桌面基础架构(VDI)机器或专用VDI机器。
12.根据权利要求9所述的装置,其中,所述合格机器组包括共享远程桌面服务(RDS)机器或实际机器。
CN201380063115.9A 2012-10-12 2013-10-11 用于根据重启调度执行机器重启的方法和装置 Active CN104937546B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261713034P 2012-10-12 2012-10-12
US61/713,034 2012-10-12
PCT/US2013/064513 WO2014059256A1 (en) 2012-10-12 2013-10-11 Performing reboot cycles, a reboot schedule on on-demand rebooting
US14/051,664 US9471331B2 (en) 2012-10-12 2013-10-11 Maintaining resource availability during maintenance operations
US14/051,664 2013-10-11

Publications (2)

Publication Number Publication Date
CN104937546A CN104937546A (zh) 2015-09-23
CN104937546B true CN104937546B (zh) 2018-01-23

Family

ID=50476534

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380063115.9A Active CN104937546B (zh) 2012-10-12 2013-10-11 用于根据重启调度执行机器重启的方法和装置

Country Status (4)

Country Link
US (3) US9471331B2 (zh)
EP (1) EP2907023B1 (zh)
CN (1) CN104937546B (zh)
WO (1) WO2014059256A1 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5910413B2 (ja) * 2012-08-21 2016-04-27 富士通株式会社 情報処理装置、起動プログラム、および起動方法
US9171164B1 (en) * 2013-08-23 2015-10-27 Amazon Technologies, Inc. Establishing trust using side channels
US20150106605A1 (en) * 2013-10-10 2015-04-16 International Business Machines Corporation Power-on scheduling of multiple blades requiring a preboot image from a remote disk
US11017417B1 (en) * 2014-06-25 2021-05-25 Amazon Technologies, Inc. Using incentives to manage computing resources
US10474659B2 (en) * 2014-06-28 2019-11-12 Microsoft Technology Licensing, Llc Large scale network system upgrade
US9882968B1 (en) 2014-12-09 2018-01-30 Amazon Technologies, Inc. Virtual network interface multiplexing
US10348837B2 (en) * 2014-12-16 2019-07-09 Citrix Systems, Inc. Methods and systems for connecting devices to applications and desktops that are receiving maintenance
US20160191365A1 (en) * 2014-12-31 2016-06-30 Singlehop, Llc Data center migration tracking tool
US9614853B2 (en) 2015-01-20 2017-04-04 Enzoo, Inc. Session security splitting and application profiler
US9900377B2 (en) * 2015-08-07 2018-02-20 International Business Machines Corporation Dynamic healthchecking load balancing gateway
US10007586B2 (en) * 2016-01-08 2018-06-26 Microsoft Technology Licensing, Llc Deferred server recovery in computing systems
CN106533736B (zh) * 2016-10-13 2020-09-08 杭州迪普科技股份有限公司 一种网络设备重启方法和装置
US10404664B2 (en) * 2016-10-25 2019-09-03 Arm Ip Limited Apparatus and methods for increasing security at edge nodes
CN108123925B (zh) * 2016-11-30 2021-07-30 中兴通讯股份有限公司 资源共享的方法、装置及系统
US10826905B2 (en) * 2016-12-05 2020-11-03 Citrix Systems, Inc. Secure access to on-premises web services from multi-tenant cloud services
US10439963B2 (en) 2017-03-09 2019-10-08 Citrix Systems, Inc. Increasing capacity in a topic-subscription messaging system
US10587625B2 (en) 2017-03-27 2020-03-10 Citrix Systems, Inc. Segregation of protected resources from network frontend
CN108737136B (zh) * 2017-04-18 2021-06-22 微软技术许可有限责任公司 将新虚拟机和容器分配给云网络中的服务器的系统和方法
US10496429B2 (en) * 2017-07-20 2019-12-03 Vmware, Inc. Managing virtual computing instances and physical servers
US11010823B2 (en) * 2017-07-28 2021-05-18 Citrix Systems, Inc. Connector leasing for long-running software operations
US10877960B2 (en) 2017-10-16 2020-12-29 Citrix Systems, Inc. Normalizing user identification across disparate systems
US11169815B2 (en) * 2018-01-16 2021-11-09 Bby Solutions, Inc. Method and system for automation tool set for server maintenance actions
US10728343B2 (en) * 2018-02-06 2020-07-28 Citrix Systems, Inc. Computing system providing cloud-based user profile management for virtual sessions and related methods
US10963375B1 (en) * 2018-03-23 2021-03-30 Amazon Technologies, Inc. Managing maintenance operations for a distributed system
US10896093B2 (en) 2019-01-15 2021-01-19 International Business Machines Corporation System reboot maintenance
US11269652B2 (en) 2019-05-24 2022-03-08 Ford Global Technologies, Llc Opportunistic vehicle controller restart scheduling
US20200389352A1 (en) * 2019-06-04 2020-12-10 Microsoft Technology Licensing, Llc Automated upgrade of multiple hosts
US11843593B2 (en) 2020-06-01 2023-12-12 Citrix Systems, Inc. Application integration using multiple user identities
US11516094B2 (en) * 2020-12-03 2022-11-29 International Business Machines Corporation Service remediation plan generation
CN112954035B (zh) * 2021-02-02 2022-03-18 深圳市禅游科技股份有限公司 服务器重启方法、装置、设备及存储介质
US11036518B1 (en) 2021-02-23 2021-06-15 Fmr Llc Automated management of scheduling a computer hardware reboot
US11663019B2 (en) * 2021-04-29 2023-05-30 Microsoft Technology Licensing, Llc Restart controller
US11582327B1 (en) 2021-10-21 2023-02-14 Citrix Systems, Inc. Dynamically coordinated service maintenance operations and adaptive service polling for microservices

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101227325A (zh) * 2007-01-11 2008-07-23 国际商业机器公司 用于数据中心引导顺序控制的方法
CN102202049A (zh) * 2010-03-23 2011-09-28 思杰系统有限公司 用于多虚拟机设备的网络策略实现

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6915347B2 (en) 2000-10-17 2005-07-05 Sun Microsystems, Inc. Associating multiple display units in a grouped server environment
SE0200418D0 (sv) * 2002-02-13 2002-02-13 Ericsson Telefon Ab L M A method and apparatus for computer load sharing and data distribution
US7415519B2 (en) * 2002-06-28 2008-08-19 Lenovo (Singapore) Pte. Ltd. System and method for prevention of boot storms in a computer network
US7082527B2 (en) * 2003-06-11 2006-07-25 Intel Corporation Method and system for rapid repurposing of machines in a clustered, scale-out environment
US20060075001A1 (en) * 2004-09-30 2006-04-06 Canning Jeffrey C System, method and program to distribute program updates
US8555274B1 (en) 2006-03-31 2013-10-08 Vmware, Inc. Virtualized desktop allocation system using virtual infrastructure
US8141075B1 (en) * 2006-05-08 2012-03-20 Vmware, Inc. Rule engine for virtualized desktop allocation system
US8539565B2 (en) 2008-03-21 2013-09-17 Microsoft Corporation Load balancing in server computer systems
US8296756B1 (en) * 2009-11-06 2012-10-23 Southern Company Services, Inc. Patch cycle master records management and server maintenance system
US8381218B2 (en) * 2010-11-30 2013-02-19 Microsoft Corporation Managing groups of computing entities

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101227325A (zh) * 2007-01-11 2008-07-23 国际商业机器公司 用于数据中心引导顺序控制的方法
CN102202049A (zh) * 2010-03-23 2011-09-28 思杰系统有限公司 用于多虚拟机设备的网络策略实现

Also Published As

Publication number Publication date
US9471331B2 (en) 2016-10-18
WO2014059256A1 (en) 2014-04-17
US20170024225A1 (en) 2017-01-26
US20140108775A1 (en) 2014-04-17
EP2907023B1 (en) 2021-04-07
EP2907023A1 (en) 2015-08-19
US9819538B2 (en) 2017-11-14
CN104937546A (zh) 2015-09-23
US20170026230A1 (en) 2017-01-26
US9838249B2 (en) 2017-12-05

Similar Documents

Publication Publication Date Title
CN104937546B (zh) 用于根据重启调度执行机器重启的方法和装置
US11539753B2 (en) Network-accessible service for executing virtual machines using client-provided virtual machine images
US10713071B2 (en) Method and apparatus for network function virtualization
CN103189846B (zh) 计算环境的数据网络的管理
US8549517B2 (en) Address assignment method, computer, and recording medium having program recorded therein
US8364819B2 (en) Systems and methods for cross-vendor mapping service in cloud networks
EP2871553B1 (en) Systems and methods for protecting virtualized assets
US8307362B1 (en) Resource allocation in a virtualized environment
US20120239729A1 (en) Methods and apparatus for connecting a thin client to a virtual desktop
EP3893438A1 (en) Vnf service instantiation method and device
GB2594108A (en) Methods, systems and computer readable media for self-replicating cluster appliances
JP3850859B2 (ja) ホール管理システム
CN108475251A (zh) 针对容器的虚拟网络、热交换、热缩放与灾难恢复
CN101222497A (zh) 用于配置对网络的客户接入的系统和方法
CN109347681A (zh) 分布式系统中的自更新功能
US20120102187A1 (en) Storage Workload Balancing
CN113196237A (zh) 计算系统中的容器迁移
EP4206920A1 (en) Instance creation method, device and system
CN109117259A (zh) 任务调度方法、平台、装置及计算机可读存储介质
US20230342183A1 (en) Management method and apparatus for container cluster
CN111290839A (zh) 一种基于openstack的iaas云平台系统
US20210067599A1 (en) Cloud resource marketplace
US20220197760A1 (en) High-availability for power-managed virtual desktop access
CN111045778B (zh) 一种虚拟机的创建方法、装置、服务器及存储介质
Sehgal Introduction to openstack

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant