Managing and configuring virtual servers
26 claims: 5 independent, 21 dependent
- 1ホスト型仮想サーバサービスに構成およびインスタンス化インターフェースを提供するための方法であって、該方法は、 a.仮想サーバマネージャによって、複数のホスト型仮想サーバサービスにインターフェースを提供することであって、該複数のホスト型仮想サーバサービス の各々 は 、複数の物理的マシンを含み、該複数の物理的マシンは、 それぞれ 、 1つ以上の仮想サーバをホスト し、 該インターフェースは、 i.ユーザが、複数の仮想サーバ構成の中から、1つの仮想サーバ構成を選択することを可能にする入力手段であって、各仮想サーバ構成は、ブートイメージと構成情報とを含む、入力手段と、 ii.ユーザが、仮想サーバを動的にインスタンス化するための方針を設定するための入力手段であって、該方針は、少なくとも1つの条件を含む、入力手段と を含む、ことと、 b.該仮想サーバマネージャによって、該少なくとも1つの条件が満たされていることを決定することと、 c.該仮想サーバマネージャによって、該選択された仮想サーバ構成を 構成する ブートイメージに従って仮想サーバをインスタンス化する命令を、該複数のホスト型仮想サーバサービスのうちの1つに伝送することと、 d.該仮想サーバマネージャによって、該複数のホスト型仮想サーバサービスのうちの 該 1つを 構成する 該物理的マシンのうちの1つにおける該ブートイメージのインスタンス化が完了していることを決定することと、 e.該仮想サーバマネージャによって、該構成情報を該インスタンス化されたブートイメージに伝送することと を含む、方法。
- 2前記複数のホスト型仮想サーバサービスのうちの少なくとも1つは、第三者ホスト型仮想サーバサービスである、請求項1に記載の方法。
- 3ステップ(a)は、1つのインターフェースを前記複数のホスト型仮想サーバサービスにサブスクリプションベースで提供することを含む、請求項2に記載の方法。
- 4前記条件は、1つ以上のパラメータを特定し、各パラメータは、1つ以上の仮想サーバの利用を示す、請求項1に記載の方法。
- 5ステップ(b)が、前記1つ以上のパラメータの値を示す情報を受信することと、該値が前記条件によって特定される閾値を超えることを決定することとを含む、請求項4に記載の方法。
- 6仮想サーバ利用パラメータの第2の測定値を示す情報を受信することと、該測定値が前記条件によって特定される閾値未満であることを決定することと、前記複数のホスト型仮想サーバサービスのうちの 前記 1つに、仮想サーバインスタンスを終了する命令を伝送することとをさらに含む、請求項5に記載の方法。
- 7前記インターフェースは、ネットワーク利用パラメータに応答して、仮想サーバインスタンス化を動的にスケール化する少なくとも1つの方針をユーザが構成する ための 入力手段を含む、請求項1に記載の方法。
- 8前記条件は、インスタンス化された仮想サーバの故障を含む、請求項1に記載の方法。
- 9前記条件は、インスタンス化された仮想サーバの予測された故障を含む、請求項1に記載の方法。
- 10前記複数の仮想サーバ構成は、第2のユーザによって生成された少なくとも1つの仮想サーバ構成を含む、請求項1に記載の方法。
- 11前記インターフェースは、ユーザが、他のユーザと、生成された仮想サーバ構成を共有することを可能にする入力をさらに含む、請求項1に記載の方法。
- 12仮想サーバ構成をユーザが選択する ための 入力手段は、インスタンス化のときに少なくとも1つの他のインスタンス化された仮想サーバの特性に基づいて決定された値によって、該ユーザが、少なくとも1つの構成変数を特定する ための 入力手段を備える、請求項1に記載の方法。
- 13f.前記特定された少なくとも1つの構成変数のそれぞれに対する値を決定するステップと、 g.該決定された値を前記インスタンス化された仮想サーバに伝送するステップと をさらに含む、請求項12に記載の方法。
- 14仮想サーバ構成をユーザが選択する ための 入力手段は、インスタンス化のときに前記ホスト型仮想サーバサービスの特性に基づいて決定された値によって、該ユーザが、少なくとも1つの構成変数を特定する ための 入力手段を備える、請求項1に記載の方法。
- 15f.前記特定された少なくとも1つの構成変数のそれぞれに対する値を決定するステップと、 g.該決定された値を前記インスタンス化された仮想サーバに伝送するステップと をさらに含む、請求項14に記載の方法。
- 16複数のホスト型仮想サーバサービスに構成およびインスタンス化インターフェースを提供するための方法であって、該方法は、 a.仮想サーバマネージャによって、複数の物理的マシンを含む複数のホスト型仮想サーバサービスにインターフェースを提供することであって、該複数の物理的マシン の各々 は 、1 つ以上の仮想サービスをホストし、該インターフェースは、 i.ユーザが、複数の仮想サーバ構成の中から、 1つの 仮想サーバ構成を選択することを可能にする入力手段であって、各仮想サーバ構成は、ブートイメージと構成情報とを含む、入力手段と、 ii.ユーザが、該複数のホスト型仮想サーバサービスの中から選択するための第1の方針を設定する ための 入力手段と、 iii.仮想サーバを動的にインスタンス化するための第2の方針をユーザが設定するための入力手段であって、 該方 針は、少なくとも1つの条件を含む、入力手段と を含む、ことと、 b.該仮想サーバマネージャによって、該少なくとも1つの条件が満たされていることを決定することと、 c.該仮想サーバマネージャによって、該第1の方針に従って、該複数のホスト型 仮想 サーバサービスのうちの1つを選択することと、 d.該仮想サーバマネージャによって、該選択され た仮 想サーバ構成を 構成する ブートイメージに従って仮想サーバをインスタンス化する命令を、該選択され たホ スト型仮想サーバサービスに伝送することと、 e.該仮想サーバマネージャによって、該複数のホスト型仮想サーバサービスのうちの選択された1つを 構成する 該物理的マシンのうちの1つにおける該ブートイメージのインスタンス化が完了していることを決定することと、 f.該仮想サーバマネージャによって、該構成情報を該インスタンス化されたブートイメージに伝送することと を含む、方法。
- 17ホスト型仮想サーバサービスに構成およびインスタンス化インターフェースを提供するためのシステムであって、該システムは、 複数のホスト型仮想サーバサービスにインターフェースを提供するウェブサーバであって、該複数のホスト型仮想サーバサービス の各々 は 、複数の物理的マシンを含み、該複数の物理的マシンは、 それぞれ、少なくとも1つの仮想サーバをホスト し、 該インターフェースは、 i.ユーザが、複数の仮想サーバ構成の中から、1つの仮想サーバ構成を選択することを可能にする入力手段であって、各仮想サーバ構成は、ブートイメージと構成情報とを含む、入力手段と、 ii.ユーザが、仮想サーバを動的にインスタンス化するための方針を設定するための入力手段であって、該方針は、少なくとも1つの条件を含む、入力手段と を含む、ウェブサーバと、 該ウェブサーバと通信する計算デバイスであって、該計算デバイスは、該少なくとも1つの条件が満たされていることを決定することと、該選択された仮想サーバ構成を 構成する ブートイメージに従って仮想サーバをインスタンス化する命令を、該複数のホスト型仮想サーバサービスのうちの1つに伝送することと を行う、計算デバイスと 、 仮想サーバマネージャであって、該仮想サーバマネージャは、 該複数のホスト型仮想サーバサービスのうちの選択された1つを 構成する 該物理的マシンのうちの1つにおける該ブートイメージのインスタンス化が完了していることを決定 し、 該構成情報を該インスタンス化されたブートイメージに伝送する 、仮想サーバマネージャと を含む、システム。
- 18前記複数のホスト型仮想サーバサービスのうちの少なくとも1つは、第三者ホスト型仮想サーバサービスである、請求項17に記載のシステム。
- 19前記条件は、1つ以上のパラメータを特定し、各パラメータは、1つ以上の仮想サーバの利用を示す、請求項17に記載のシステム。
- 20前記計算デバイスが、前記1つ以上のパラメータの値を示す情報を受信することと、該値が前記条件によって特定される閾値を超えることを決定することとを行う、請求項19に記載のシステム。
- 21前記計算デバイスが、仮想サーバ利用パラメータの第2の測定値を示す情報を受信することと、該測定値が前記条件によって特定される閾値未満であることを決定することと、前記複数のホスト型 仮想 サーバサービスのうちの 前記 1つに、仮想サーバインスタンスを終了する命令を伝送することとを行う、請求項20に記載のシステム。
- 22前記インターフェースは、ネットワーク利用パラメータに応答して、仮想サーバインスタンス化を動的にスケール化する少なくとも1つの方針をユーザが構成する ための 入力手段を含む、請求項17に記載のシステム。
- 23前記条件は、インスタンス化された仮想サーバの故障を含む、請求項17に記載のシステム。
- 24前記条件は、インスタンス化された仮想サーバの予測された故障を含む、請求項17に記載のシステム。
- 25前記複数の仮想サーバ構成は、第2のユーザによって生成された少なくとも1つの仮想サーバ構成を含む、請求項17に記載のシステム。
- 26前記インターフェースは、ユーザが、他のユーザと、生成された仮想サーバ構成を共有することを可能にする入力をさらに含む、請求項17に記載のシステム。
Independent claims26
70 paragraphs, as filed
(background) A hosted virtual server service allows a user to instantiate a virtual server that runs software identified by the user without requiring the customer to own or manage the underlying hardware of the virtual server instance. to enable. For example, virtual server services, including Amazon EC2, may allow users to instantiate a large number of virtual servers with different configurations to suit their needs.
Many virtual server services allow instantiation of virtual servers from bootable images provided by users. These images may contain the user's desired set of server software. Some virtual server services allow remote instantiation of virtual servers from bootable images provided by users, such as through public APIs or web interfaces. The remote instantiation capability, in principle, allows users to scale up or down the number of instantiated virtual servers in proportion to the number of instantiated virtual servers, based on change requests or other factors. However, it is usually impractical to personally monitor servers, determine when to start additional servers, and manually configure them.
<p num="0003"> (Overview) The present disclosure relates to steps that provide a faster and more efficient way to deploy and manage virtual server configurations in hosted virtual server services. In a broad sense, a web interface allows a user to set conditions under which a particular type of virtual server is instantiated or terminated on a third-party hosted virtual server service. For example, the user may wish to instantiate a new virtual server each time the load on the existing virtual server exceeds a predetermined threshold. The web interface may also allow the user to choose between multiple hosted virtual server services. The web interface may also allow users to incorporate dynamic variables into the configuration of instantiated virtual servers.</p><p num="0004"> In one aspect, the disclosure relates to a method for providing a configuration and instantiation interface to a hosted virtual server service. In one embodiment, the method is a step of providing an interface to a hosted virtual server service, where the interface is an input for the user to select a virtual server configuration from a plurality of virtual server configurations and the user. A policy for dynamically instantiating a virtual server, including a step for setting a policy that includes at least one condition, and a step for determining that at least one condition is met. And the step of transmitting an instruction to instantiate the virtual server according to the selected virtual server configuration to the hosted virtual server service. In some embodiments, the method may include transmitting the value of a user-specified variable to an instantiated virtual server. In some embodiments, the method may include the step of terminating one or more virtual servers, depending on the measurement. In some embodiments, the method may include choosing from a large number of hosted virtual server services to instantiate a virtual server based on user-defined policies.</p><p num="0005"> In another aspect, the disclosure relates to a system for providing a configuration and instantiation interface to a hosted virtual server service. In one embodiment, the system is a web server that provides an interface to a hosted virtual server service, the interface being an input means for the user to select a virtual server configuration from a plurality of virtual server configurations. A web server and at least one condition are met, including a policy for the user to dynamically instantiate a virtual server, including an input means for setting a policy that includes at least one condition. Includes a computing device communicating with the web server that determines that and transmits instructions to instantiate the virtual server according to the selected virtual server configuration to the hosted virtual server service.<u style="single">For example, the present invention provides the following items.</u><u style="single">(Item 1)</u><u style="single"> A method for providing a configuration and instantiation interface to a hosted virtual server service.</u><u style="single"> To provide an interface to a hosted virtual server service running on a computing device.</u><u style="single"> i. An input means for the user to select one virtual server configuration from multiple virtual server configurations, including at least one virtual server configuration created by the second user.</u><u style="single"> ii. A policy for users to dynamically instantiate a virtual server, which is an input means for setting a policy that includes at least one condition.</u><u style="single"> Including, and</u><u style="single"> Determining that at least one of the conditions is met</u><u style="single">To transmit an instruction to instantiate a virtual server according to the selected virtual server configuration to the hosted virtual server service.</u><u style="single"> Including methods.</u><u style="single">(Item 2)</u><u style="single"> The method of item 1, wherein the interface further comprises an input means that allows the user to share the created virtual server configuration with at least one other user.</u><u style="single">(Item 3)</u><u style="single"> Providing an interface involves providing an interface to multiple hosted virtual server services.</u><u style="single"> i. An input means for the user to select one virtual server configuration from multiple virtual server configurations, including at least one virtual server configuration created by the second user.</u><u style="single"> ii. A policy for the user to dynamically instantiate a virtual server, which is an input means for setting a policy that includes at least one condition.</u><u style="single"> iii. An input means for the user to select one of the plurality of hosted virtual server services.</u><u style="single"> The method according to item 1, including.</u><u style="single">(Item 4)</u><u style="single"> The method according to item 3, wherein transmitting the instruction includes transmitting an instruction for instantiating a virtual server according to the selected virtual server configuration to the selected hosted virtual server service.</u><u style="single">(Item 5)</u><u style="single"> A method for providing a configuration and instantiation interface to multiple hosted virtual server services.</u><u style="single"> To provide an interface to multiple hosted virtual server services.</u><u style="single"> i. An input means for the user to select one virtual server configuration from multiple virtual server configurations,</u><u style="single"> ii. An input means for the user to set a first policy for selecting from the plurality of hosted virtual server services.</u><u style="single"> iii. A second policy for the user to dynamically instantiate a virtual server, which is an input means for setting a policy that includes at least one condition.</u><u style="single"> Including, and</u><u style="single"> b. Determining that at least one of these conditions is met</u><u style="single"> c. Choosing one of the multiple hosted virtual server services according to the first policy,</u><u style="single"> d. To transmit an instruction to instantiate a virtual server according to the selected virtual server configuration to the selected hosted virtual server service.</u><u style="single"> Including methods.</u><u style="single">(Item 6)</u><u style="single"> At least one of price, performance, geographic location, jurisdiction, proximity to a second service, and technical capability by at least one of the first policy and the second policy above. The method of item 5, further comprising identifying.</u><u style="single">(Item 7)</u><u style="single"> A system for providing a configuration and instantiation interface to hosted virtual server services.</u><u style="single"> A web server that provides an interface to a hosted virtual server service.</u><u style="single"> i. An input means for the user to select one virtual server configuration from multiple virtual server configurations,</u><u style="single"> ii. A policy for the user to dynamically instantiate a virtual server, which is an input means for setting a policy that includes at least one condition.</u><u style="single"> iii. Input means and input means that allow the user to share the created virtual server configuration with other users.</u><u style="single"> Including web servers and</u><u style="single"> Communicating with the web server, which determines that at least one of the conditions is met and transmits an instruction to instantiate the virtual server according to the selected virtual server configuration to the hosted virtual server service. With a computing device</u><u style="single"> Including the system.</u></p>
The priorities, aspects, features, and advantages of the present disclosure may be made clearer and better understood by reference to the following description, which is construed in conjunction with the accompanying drawings.<figref num="1A">FIG. 1A is a block diagram of an embodiment of a network configuration that enables management of virtual servers.</figref><figref num="1B">FIG. 1B is a block diagram of an embodiment of a network configuration that allows the creation of a virtual server instance that can be configured from a machine image.</figref><figref num="2A">2A and 2B are block diagrams of a typical computer 200, which is useful as a client computing device and a server computing device.</figref><figref num="2B">2A and 2B are block diagrams of a typical computer 200, which is useful as a client computing device and a server computing device.</figref><figref num="3">FIG. 3 is a flow diagram showing a method for facilitating the creation of configurable virtual server instances from a machine image.</figref><figref num="4">FIG. 4 is a flow chart of an embodiment of a method for reducing the time required to create a virtual server instance that can be configured from a machine image.</figref><figref num="5A">Figures 5A, 5B, 5C, 5D, 5E, 5F, and 5G are screenshot examples of an embodiment of a configuration and instantiation interface to a hosted virtual server service.</figref><figref num="5B">Figures 5A, 5B, 5C, 5D, 5E, 5F, and 5G are screenshot examples of an embodiment of a configuration and instantiation interface to a hosted virtual server service.</figref><figref num="5C">Figures 5A, 5B, 5C, 5D, 5E, 5F, and 5G are screenshot examples of an embodiment of a configuration and instantiation interface to a hosted virtual server service.</figref><figref num="5D">Figures 5A, 5B, 5C, 5D, 5E, 5F, and 5G are screenshot examples of an embodiment of a configuration and instantiation interface to a hosted virtual server service.</figref><figref num="5E">Figures 5A, 5B, 5C, 5D, 5E, 5F, and 5G are screenshot examples of an embodiment of a configuration and instantiation interface to a hosted virtual server service.</figref><figref num="5F">Figures 5A, 5B, 5C, 5D, 5E, 5F, and 5G are screenshot examples of an embodiment of a configuration and instantiation interface to a hosted virtual server service.</figref><figref num="5G">Figures 5A, 5B, 5C, 5D, 5E, 5F, and 5G are screenshot examples of an embodiment of a configuration and instantiation interface to a hosted virtual server service.</figref><figref num="6A">FIG. 6A is a flow diagram of a first embodiment of a method for providing a configuration and instantiation interface to a hosted virtual server service.</figref><figref num="6B">FIG. 6B is a flow diagram of a second embodiment of a method for providing a configuration and instantiation interface to a hosted virtual server service.</figref><figref num="7">FIG. 7 is a flow diagram of a third embodiment of a method for providing a configuration and instantiation interface to a hosted virtual server service.</figref>
(Detailed explanation) Here, with reference to FIG. 1A, a block diagram of an embodiment of a network configuration that enables management of virtual servers is shown. In summary, the user station 102 displays a web interface to the user and transmits configuration information from the user to the virtual server manager 100 (also simply referred to herein as the "manager"). Virtual Server Manager 100 manages the instantiation, configuration, and termination of virtual server instances 110a, 110b, 110c (generally 110). Manager 100 may monitor any data received from instance 110 or hosted virtual server service 120.
In more detail here, still referring to FIG. 1A, the virtual server manager 100 may include any computer device capable of receiving one or more virtual server images and ancillary configuration information. In some embodiments, the virtual server manager may include a single server, and in other embodiments, the virtual server manager 100 may include a server cluster. In some embodiments, the manager 100 may have one or more related databases for storing configuration information and / or virtual server images. These databases may be separated by the user so that different users of the manager 100 can store the various images without interfering with the images stored by the other users. In some embodiments, the user may be able to share the image and / or configuration information stored on the manager 100.
In some embodiments, the virtual server manager 100 may be operated on a regular basis. For example, an enterprise may charge for a user to store one or more images on a manager and to use the manager to instantiate one or more servers on a hosted service. In some embodiments, the virtual server manager 100 may be operated by an entity independent of the virtual server service. In some embodiments, the user station may communicate with the manager 100 via a web interface. For example, Manager 100 may provide a web interface for a large number of enterprises to manage virtual server deployments on hosted virtual server services. For example, a company running Manager 100 may charge a flat rate for using the services of Manager 100 when the company starts a virtual server. Alternatively, for example, a company running Manager 100 may use Manager 100 to charge a proportional distribution fee based on how many base images or configuration profiles are created and / or stored. Alternatively, for example, a company running Manager 100 may charge a monthly fee for the use of control functions provided by the manager when operating and instantiating a virtual server. Alternatively, for example, a company running Manager 100 may charge a fee based on the amount of time any managed virtual server has been running.
The virtual server service 120 may include any service that allows one or more users to instantiate a virtual server on a resource hosted by the virtual server service 120. Examples of virtual server services include EC2 services provided by Amazon, Inc. and FLEXISCALE provided by XCalibre Communications Ltd. In some embodiments, the manager 100 may be specifically designed to work with a single virtual server service. In other embodiments, the manager 100 may provide interfaces to multiple virtual server services.
Here, with reference to FIG. 1B, an embodiment of a network configuration that enables the creation of a virtual server instance that can be configured from a machine image is shown. In summary, user station 102 receives input from the user identifying the boot image created on bootstrap server 115. The base server image is then sent to the virtual server manager 100. At another time, configuration information may be received from user station 102 or a different user station 102. The virtual server manager 100 sends a command to the virtual server service 120 to instantiate an instance of the boot image. After determining that instance 110 is ready, manager 100 sends the received configuration information to the virtual server instance. In this way, the configuration of the virtual server instance is separated from the process of building the server image.
In more detail here, still referring to FIG. 1B, user station 102 may provide any functionality for the user to create a boot image of the virtual server. In some embodiments, the user station 102 may be associated with a bootstrap server 115 that compiles or generates a virtual server image. In other embodiments, the virtual server image may be created on the user station 102 itself. Both the user station 102 and the bootstrap server 115 may include any computing device.
The user station, the manager 100, and the virtual server service 120 may be connected in any manner and via any one or more networks. Connections and networks included in connections may include the Internet, local networks, web servers, file servers, routers, databases, computers, servers, network appliances, or any other computing device capable of sending and receiving information. .. The network may include computing devices that are connected via cables, infrared ports, wireless signals, or any other means of connecting the computing devices. The network and any device connected to the network can be SSL, BitTorrent, HTML, XML, RDP, ICA, FTP, HTTP, SIP, XMPP (also known as Jabber), TCP, IP, UDP, IPX, SPX. , NetBIOS, NetBEUI, SMB, SMTP, Ethernet®, ARCNET, Fiber Distributed Data Interface / FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, IEEE 802.11n, WiMax, and direct asynchronous connections, or computing devices containing unlimited combinations and / or extensions of these. Communication may be made via any communication protocol used to communicate between or within a computing device. The network may include a mobile phone network that utilizes any one or more protocols used to communicate between mobile devices, including AMPS, TDMA, CDMA, GSM, GPRS, or UMTS.
Figures 2A and 2B depict a block diagram of a computing device 200 useful for practicing a client 102 or server embodiment. The client 102 and the server communicate on any type and form of network and as a computing device of any type and form, such as a computer, network device or appliance capable of performing the operations described herein. It may be deployed and / or run on it. As shown in FIGS. 2A and 2B, each computing device 200 includes a central processing unit 221 and a main memory unit 222. As shown in FIG. 2A, the computing device 200 may include a visual display device 224, a keyboard 226, and / or a pointing device 227 such as a mouse. As shown in FIG. 2B, each computing device 200 also communicates with one or more input / output devices 230a-230b (generally referred to using the number 230), and central processing unit 221. It may include additional optional elements such as cache memory 240.
The central processing unit 221 is an arbitrary logic circuit that responds to the instructions fetched from the main memory unit 222 and processes them. In many embodiments, the central processing unit is manufactured by Intel Corporation (Mountain View, California), Motorola Corporation (Schaumburg, Illinois), Transmeta Corporation (Santa Clara, California), RS / 6000 processor. And provided by microprocessor units, such as those manufactured by International Business Machines (White Plains, New York) or those manufactured by Advanced Micro Devices (Sunnyvale, California). The computing device 200 may be based on any of these processors, or any other processor capable of operating as described herein.
The main memory unit 222 includes static random access memory (SRAM), burst SRAM or synchronous burst SRAM (BSRAM), dynamic random access memory (DRAM), high-speed page mode DRAM (FPM DRAM), enhanced DRAM (EDRAM), and extended data output. RAM (EDO RAM), Extended Data Output DRAM (EDO DRAM), Burst Extended Data Output DRAM (BEDO DRAM), Enhanced DRAM (EDRAM), Synchronous DRAM (SDRAM), JEDEC SRAM, PC200 SDRAM, Double Data Rate DRAM (DDR SDRAM) ), Enhanced DRAM (ESDRAM), Synchronous Link DRAM (SLDRAM), Direct Rambus One or more memory chips that can store data, such as DRAM (DRDRAM), or ferroelectric RAM (FRAM), and allow any storage location to be directly accessed by microprocessor 221. May be good. The main memory 222 may be based on any of the above memory chips, or any other available memory chip capable of operating as described herein. In the embodiment shown in FIG. 2A, processor 221 communicates with main memory 222 via system bus 250 (discussed in more detail below). FIG. 2B illustrates an embodiment of computing device 200 in which the processor communicates directly with main memory 222 via memory port 203. For example, in FIG. 2B, the main memory 222 may be DRDRAM.
FIG. 2B illustrates an embodiment in which the main processor 221 communicates with the cache memory 240 via a secondary bus, sometimes referred to as the backside bus. In another embodiment, the main processor 221 uses the system bus 250 to communicate with the cache memory 240. The cache memory 240 usually has a faster response time than the main memory 222 and is usually provided by SRAM, BSRAM, or EDRAM. In the embodiment shown in FIG. 2B, processor 221 communicates with various I / O devices 230 via the local system bus 250. VESA VL bus, ISA bus, EISA bus, Micro Channel architecture to connect the central processing unit 221 to any of the I / O devices 230 Various buses may be used, including Architecture / MCA) buses, PCI buses, PCI-X buses, PCI-Express buses, or NuBus. For embodiments where the I / O device is a video display 224, the processor 221 may use an Advanced Graphics Port / AGP to communicate with the display 224. FIG. 2B illustrates an embodiment of computer 200 in which the main processor 221 communicates directly with the I / O device 230b via HyperTransport, Rapid I / O, or InfiniBand. FIG. 2B also depicts an embodiment in which local bus and direct communication are mixed, with processor 221 communicating directly with I / O device 230b and using the local interconnect bus with I / O device 230a. connect.
The computing device 200 includes a floppy (registered trademark) disk drive, a CD-ROM drive, a CD-R / RW drive, or a DVD for accepting a floppy (registered trademark) disk such as a 3.5-inch disk, a 5.25-inch disk, or a ZIP disk. -Supports any suitable installation device 216, such as ROM drives, various types of tape drives, USB devices, hard drives, or any other device suitable for installing software and programs or parts thereof. You may. The Computational Device 200 further stores one or more hard disk drives or storage devices such as independent disk redundant arrays, flash memory, or EEPROM to store the operating system and other related software, and to store application software programs. It may be included. Optionally, any of the installation devices 216 can also be used as a storage device. In addition, the operating system and software are bootable media such as KNOPPIX®, which is a bootable CD for GNU / Linux available as a GNU / Linux distribution from knoppix.net. It can be run from a CD.
In addition, the compute device 200 includes standard telephone lines, LAN or WAN links (eg 802.11, T1, T3, 56kb, X.25, SNA, DECNET), broadband connections (eg ISDN, frame relays, ATMs, Gigabit Ethernet (eg ISDN, frame relays, ATMs, Gigabit Ethernet). Local area networks through a variety of connections, including but not limited to), Ethernet®-over-SONET, ADSL, SDSL), wireless connections, or any combination of any or all of the above. (LAN), wide area network (WAN), or network interface 218 for interface connection to the Internet may be included. Connections can be established using various communication protocols. In one embodiment, the computing device 200 is a Secure Socket Layer (SSL) or Transport Layer Security (TLS), or a Citrix Gateway manufactured by Citrix Systems, Inc. (Ft. Lauderdale, Florida). Communicate with other computing devices 200 via any type and / or form of gateway or tunneling protocol, such as Protocol. The network interface 218 is a built-in network adapter, network interface card, PCMCIA network card, card bus network adapter, wireless network adapter, USB network adapter, modem, or any communication and capable of performing the operations described herein. It may include any other device suitable for interfacing the computing device 200 with any type of network.
A wide variety of I / O devices 230a-230n may be present in the computing device 200. Input devices include keyboards, mice, trackpads, trackballs, microphones, and drawing tablets. Output devices include video displays, speakers, inkjet printers, laser printers, and sublimation printers. The I / O device may be controlled by the I / O controller 223 as shown in FIG. 2A. The I / O controller may control one or more I / O devices such as a keyboard 226 and a pointing device 227, such as a mouse or an optical pen. In addition, the I / O device may also provide a storage and / or installation medium 216 for the computing device 200. In yet another embodiment, the computing device 200 may provide a USB connection that accepts a handheld USB storage device, such as a USB flash drive-based device manufactured by Twintech Industry, Inc. (Los Alamitos, California).
In some embodiments, the computing device 200 may include or be connected to a plurality of display devices 224a-224n, which may be of the same or different types and / or embodiments, respectively. As such, either the I / O device 230a-230n and / or the I / O controller 223 supports and enables the connection and use of multiple display devices 224a-224n by the computing device 200. Or, as provided, any suitable type and / or form of suitable hardware, software, or combination of hardware and software may be included. For example, the compute device 200 can interface, communicate, connect, or use display devices 224a-224n with any type and / or form of video adapter, video card, driver, and / or library. It may be included. In one embodiment, the video adapter may include a plurality of connectors to interface with the plurality of display devices 224a-224n. In other embodiments, the computing device 200 may include multiple video adapters, each video adapter being connected to one or more of the display devices 224a-224n. In some embodiments, any portion of the computing device 200 operating system may be configured to use the plurality of display devices 224a-224n. In other embodiments, one or more of the display devices 224a-224n are connected by one or more other computing devices, such as computing devices 200a and 200b, which are connected to the computing device 200 over a network. May be provided. These embodiments may include any kind of software designed and constructed to use the display device of another computer as the second display device 224a for the computing device 200. Those skilled in the art will appreciate that the computing device 200 has multiple display devices 224a-224n.
In a further embodiment, the I / O device 230 includes a system bus 250, a USB bus, an Apple Desktop Bus, an RS-232 series connection, a SCSI bus, a Fire Wire bus, a Fire Wire 800 bus, an Ethernet® bus, and AppleTalk. External such as Bus, Gigabit Ethernet® Bus, Asynchronous Transfer Mode Bus, HIPPI Bus, Super HIPPI Bus, SerialPlus Bus, SCI / LAMP Bus, FiberChannel Bus, or Serial Attached Small Computer System Interface Bus It may be a bridge to the communication bus.
The type of computing device 200 depicted in Figures 2A and 2B typically operates under operating system control, which controls task scheduling and access to system resources. Computational Device 200 is one of the versions of the MICROSOFT WINDOWS® operating system, different releases of the Unix® and Linux operating systems, any version of MAC OS for Macintosh computers, any embedded operating system. Can run on any real-time operating system, any open source operating system, any dedicated operating system, any operating system for portable computing devices, or computing devices and perform the operations described herein. Any operating system can be run, including any other possible operating system. Normal operating systems, among other things, are all Microsoft Made by Corporation (Redmond, Washington), WINDOWS (registered trademark) 3.x, WINDOWS (registered trademark) 95, WINDOWS (registered trademark) 98, WINDOWS (registered trademark) 2000, WINDOWS (registered trademark) NT 3.51, WINDOWS ( Registered Trademarks NT 4.0, WINDOWS® CE, WINDOWS® XP, and WINDOWS® VISTA, MACOS from Apple Computer (Cupertino, California), International Business Machines (Armonk, New York) Includes OS / 2, Linux, which is a free operating system distributed by Caldera Corp. (Salt Lake City, Utah), or Unix® operating systems of any type and / or form.
The computer system 200 is any workstation, desktop computer, laptop or notebook computer, server, handheld computer, mobile phone or other portable telecommunications device, media playback device, gaming system, portable computing device, or It can be any other type and / or form of computational, telecommunications, or media device that is communicable and has sufficient processor and memory capacity to perform the operations described herein. For example, the computer system 200 is a device in the IPOD group devices manufactured by Apple Computer (Cupertino, California), PLAYSTATION 2, PLAYSTATION 3, or PERSONAL PLAYSTATION PORTABLE (PSP) device manufactured by Sony Corporation (Tokyo, Japan), Nintendo Co. NINTENDO DS, NINTENDO GAMEBOY, NINTENDO GAMEBOY made by ., Ltd. (Kyoto, Japan) It may include an ADVANCED or NINTENDO REVOLUTION device, or an XBOX or XBOX 360 device from Microsoft Corporation (Redmond, Washington).
For embodiments, including mobile devices, the device is 6035 or 7135, all made by Motorola Corp. (Schaumburg, Illinois), i55sr, i58sr, i85s, or i88s, Kyocera (Kyoto, Japan), or Samsung Electronics. It may be a mobile phone that can use JAVA (registered trademark) such as i300 or i330 manufactured by Co., Ltd. (Seoul, Korea). In other embodiments, including mobile devices, the mobile device is all palmOne, It may be a personal digital assistant (PDA) manufactured by Inc. (Milpitas, California) that operates under the control of a Palm OS operating system such as Tungsten W, VII, VIIx, i705. In a further embodiment, the client 102 is made entirely of Hewlett-Packard Corporation (Palo Alto, California), iPAQ 4155, iPAQ 5555, iPAQ 1945, iPAQ 2215, and iPAQ 4255, ViewSonic (Walnut, California). It may be a portable information terminal (PDA) that operates under the control of a PocketPC operating system, such as ViewSonic V36 or Toshiba PocketPC e405 manufactured by Toshiba America, Inc. (New York, New York). In yet another embodiment, the mobile device is all palmOne, Composite PDA / telephone devices such as the Treo 180, Treo 270, Treo 600, Treo 650, Treo 700, or Treo 700w from Inc. (Milpitas, California), or the IPHONE family of devices from Apple Computer. In yet another embodiment, the mobile device is a mobile phone that operates under the control of a Pocket PC operating system, such as the MPx200 from Motorola Corp. In yet another embodiment, the portable device may include a portable gaming device with wireless communication capability. A typical mobile device may include many of the elements described above in FIGS. 2A and 2B, including the processor and main memory.
Referenced here to FIG. 3 shows a flow diagram showing how to facilitate the creation of configurable virtual server instances from a machine image. In summary, the method is to generate a base machine image (step 301) that is a base machine image and includes a bootable subset of the desired virtual server capabilities and a configuration manager, and on at least one virtual server. To transmit the instruction to instantiate the base machine image in (step 303), and to determine that the instantiated virtual server's configuration manager is ready to receive configuration information (step 305). It includes a step (step 307) of transmitting the configuration information of the instantiated virtual server to the configuration manager.
In more detail here, still referring to FIG. 3, the base machine image, including the bootable subset of desired virtual server capabilities and the configuration manager, may be created in any manner (step 301). The bootable subset may include any subset of virtual server capabilities, including an unlimited number of operating systems, HTTP servers, file decompression / unpacking utilities, scripting language support, and encryption / decryption utilities. In some embodiments, the machine image may be created by including a configuration manager in the build process, which includes virtual server capabilities. In other embodiments, the machine image may be created by modifying an existing machine image. In these embodiments, the configuration manager may already exist or be installed on a running virtual server that is booted from that machine image, and then a new machine image is running. It may be retrieved from the virtual server. The configuration manager may include any utility for configuring the virtual server after instantiation. In some embodiments, a single configuration manager may be provided by Manager 100 for the user to choose to include in the machine image. In other embodiments, multiple configuration managers may be provided. Multiple configuration managers may be used to support enhancements to the configuration manager while preserving older versions to ensure that existing server configurations work as before. Multiple configuration managers can also support multiple operating systems (eg Linux, FreeBSD, Solaris), or multiple versions of a single operating system (eg RedHat Linux, Debian Linux, and Ubuntu Linux, or Solaris 10). And OpenSolaris).
In some embodiments, the user may be able to create a number of different machine images. For example, a user may wish to create a large number of virtual server-based machine images, each with a different operating system. The user may then use each of these images to create a customized virtual server instance that runs on each of the operating systems.
After the base machine image is created, instructions to instantiate the base machine image on at least one virtual server may be transmitted in any manner (step 303). In some embodiments, the instructions may be transmitted from the manager 100 to the virtual server service 120. In some embodiments, this transmission may be initiated by the user. For example, Manager 100 may provide a web page that allows a user to access and manage a large number of virtual servers on one or more virtual server services. The user can send instructions to instantiate a particular machine image through Manager 100. Manager 100 may then select the appropriate base image and send instructions to the virtual server service to instantiate the image.
In some embodiments, the instruction to instantiate the virtual server may be sent automatically. In these embodiments, any configuration or monitoring data from the virtual server itself, another server, the manager 100, or any combination of the above data can be used to induce the transmission of instructions. For example, Manager 100 has instructions to automatically instantiate a given machine image if the usage, load, or utilization of a large number of servers exceeds a threshold, or if the required virtual server fails. You may.
In some embodiments, the instantiation instruction may include one or more parameters for the server to be instantiated. For example, the instantiation instruction may include a serial number or other identifier so that the manager 100 can later identify a particular instance. Alternatively, for example, the instantiation instruction may include the address of manager 100 so that the newly instantiated server has an address to connect to at instantiation.
After transmitting the instruction, the manager 100 may, in any way, determine that the configuration manager of the instantiated virtual server is ready to receive the configuration information (step 305). In some embodiments, the manager 100 may wait to receive a connection request from the instantiated server. In other embodiments, the manager 100 may periodically request a connection to the instantiated server until it succeeds. In some embodiments, the manager 100 may use a service provided through a hosted virtual server service to monitor the status of the instantiated server.
In one embodiment, the instantiated server may initiate an HTTPS session with Manager 100. The instantiated server may pass the serial number given to it to the manager 100 along with the current state of the machine. The manager 100 may then verify that the serial number corresponds to the serial number sent by the manager in the instruction to be instantiated. In other embodiments, the instantiated virtual server may be identified by any other means, including a TCP / IP source address and / or a hosted virtual server service identifier given to the instance.
After the readiness status is determined, the configuration information of the instantiated virtual server may be transmitted in any manner (step 307). In one embodiment, the configuration information may be transmitted from the manager 100.
The configuration information may include any information that may be used by a functioning virtual server instance, including an unlimited number of executable files, files, parameters, and storage locations and types of other virtual server instances. In one embodiment, the transmitted configuration information is an ordered list of executable scripts, a list of URLs pointing to the files corresponding to each script, and a set of scripts that may be used and accessed by the scripts during execution. It may include an input variant binding. In this embodiment, the file corresponding to each script is any file utilized by each script, including an unlimited number of configuration files, application packages to install, executables, and application data (eg, database snapshots). It may be included.
After the configuration information has been transmitted, the virtual server instance may take any steps necessary to implement the received configuration information. The following embodiment is described above, wherein the manager 100 transmits an ordered list of executable scripts, a list of URLs pointing to the files corresponding to each script, and a set of input variable bindings. Will continue to be stated.
The instance first puts each script into an executable file in the local file system, and each attachment named in the configuration file from the URL provided so that it is also remembered in the local file system. You may download. Each attachment may be stored in a separate directory for each script. Each script may then be executed in sequence, and each script is passed to the input variable binding required by the script. These bindings may include a number of global variables such as the machine image id, instance id, IP address assigned to the instance, and storage location for script attachments. If an error occurs (eg, the script exists with the error), the process may be aborted.
In some embodiments, the execution of the configuration process itself may be determined by the initial steps of the configuration process. For example, the configuration script may give rise to the input parameters used in subsequent configuration scripts. Alternatively, for example, the configuration script may be executed to determine which of the set of configuration scripts should be executed in what order. In some embodiments, the configuration process may identify one or more other virtual servers that are started, terminated, or affected based on the configuration process. In these embodiments, the virtual server performing the configuration process may send signals directly to the affected server, or the virtual server may send instructions to manager 100.
After the configuration is complete, the instance signals Manager 100 of the results of the configuration process, which is "successful" if all scripts ran without errors and "standard" if the scripts exited with errors. You may communicate. This signaling may be done in any manner and may use the same methods and / or connections used to transfer configuration information. In addition, for troubleshooting purposes, the instance may carry any number of configuration state updates, including, for example, UNIX® standard output and error output for each script.
To give another example of configuration, when deploying a multiple server configuration, it is often necessary to configure one server with information that depends on the state of the second server. For example, the first server may need to connect to the second server and may need to know the IP address of the second server for this purpose. In these cases, if the first and second servers are started at virtually the same time, or if the two servers are interdependent (in such cases, they produce the information that the other servers need. Before, deadlocks can occur if both servers have to wait for information from the other server), and you may face certain challenges. Such inter-server dependencies may be addressed by transmitting incomplete information to the configuration manager. Specifically, some input may be marked as "missing". The configuration manager continues the configuration steps, but checks for the presence of all required inputs before running each particular script. If one or more inputs are missing, the configuration manager transmits any state information it may have to manager 100, and then periodically queries manager 100 for the missing inputs. Do. When a missing value is received, script execution continues.
In a multiple server configuration, the dependencies between servers may change over time. Continuing with the above embodiment, if the second server fails and the replacement server is started, the configuration of the first server needs to be changed to update the dependency information. In addition, some process may need to be signaled or restarted to reread the configuration information. In one embodiment, after the initial configuration, the configuration manager can periodically poll the manager 100 to inquire if reconfiguration activity is required. If so, Manager 100's response to polling may contain configuration information similar to the type transmitted at boot time, and the configuration manager may execute the requested script in the same fashion to virtualize it. Update the server configuration. In another embodiment, instead of having the configuration manager polled periodically, the manager 100 can open the connection to the server and send the requested information.
Here, with reference to FIG. 4, a flow diagram of an embodiment of a method for reducing the time required to create a configurable virtual server instance from a machine image is shown. In summary, the method is to generate the first base image, which is the first base image and contains a bootable subset of the desired virtual server capabilities (step 401), and the server for the first base image. Complete the configuration, generate a set of configuration instructions (step 403), instantiate the virtual server using the base image (step 405), and the instantiated virtual server with a set of configuration instructions. Instance the second base machine image on at least one second virtual server, with the step of applying the subset (step 407) and the step of generating a second base image from the configured virtual server (step 409). The step of transmitting the instruction to be instantiated (step 411), the step of determining that the configuration manager of the second virtual server instantiated is ready to receive the configuration information (step 413), and the configuration instruction. It includes a step (step 415) of transmitting configuration information including a configuration instruction from a set of configuration instructions, which is not included in the subset, to an instantiated second virtual server.
In more detail here, still referring to Figure 4, the process of instantiating a virtual server using Manager 100, as described above, involves the amount of configuration information transmitted and the number of scripts executed. Depending on the situation, additional time may be required. Therefore, it may be desirable to create a base image constructed within a subset of configuration information. The method shown in FIG. 4 may be used to efficiently form and instantiate such a modified base image.
A first base image, which is a bootable subset of the desired virtual server capacity, may be generated using any method (step 401). The first base image may be created using any of the techniques described above.
It generates a set of configuration instructions that complete the server configuration for the first base image, but may be generated in any way (step 403). The set of configuration instructions may include any of the configuration information described herein, including an unlimited number of scripts, parameters, and related files. In some embodiments, the configuration instructions may be automatically generated in response to user input identifying the desired configuration. In some embodiments, the configuration instructions may be generated by the manager 100 in response to receiving user input via the web interface.
The virtual server may then be instantiated using the base image in any way (step 405). In some embodiments, the virtual server may be instantiated on a hosted virtual server service. In other embodiments, the virtual server may be instantiated within the test or build environment. In yet another embodiment, the virtual server may be instantiated on Manager 100.
After instantiation, a subset of the set of configuration instructions may be applied to the instantiated virtual server (step 407). In some embodiments, the manager 100 may transmit a subset of configuration instructions to the instantiated virtual server. A subset of the set of constituent instructions may be selected in any manner. In some embodiments, the user may select a subset. In some embodiments, the subset may be selected based on how prevalent the instructions within the subset are. For example, the subset may contain the most commonly used configuration instructions. In other embodiments, the subset may be selected based on how quickly the instructions can be executed by the instantiated virtual server. For example, a subset may contain configuration instructions that take the longest time to be executed by a virtual server.
A second base image may then be generated from the configured virtual server (step 409). The second base image may be formed by any technique for generating the base image. In some embodiments, the configured virtual server may suspend or stop execution while the copy is being made with the executable code and the attachment containing the configured virtual server.
An instruction to instantiate the second base machine image on at least one second virtual server may then be transmitted (step 411). In one embodiment, the instruction to instantiate the second base machine image may be transmitted from the manager 100 to the hosted virtual server service. For example, the instruction may be transmitted to the hosted virtual server service in a direct response to a user request or as a subset of the auto-instantiation process set by the user.
Manager 100 may then determine that the configuration manager of the second virtual server that has been instantiated is ready to receive configuration information (step 413). This determination may be made using any technique or system described herein, including, for example, receiving transmissions from a configuration manager running a second virtual server.
After making the decision, the manager 100 may transmit configuration information, including configuration instructions from a set of configuration instructions, that is not included in the subset of configuration instructions to the second virtual server that has been instantiated (step 415). The transmission of the configuration instructions may be carried out in any manner and using any one or more protocols. After the second virtual server receives the configuration instruction, the second virtual server may apply the configuration instruction using any technique described herein.
Here, with reference to FIGS. 5A, 5B, 5C, 5D, 5E, 5F, and 5G, a screenshot example of an embodiment of a configuration and instantiation interface to a hosted virtual server service is shown. Each of these figures will be discussed in detail with the description of Figures 6A, 6B, and 7 below.
Referring here to FIG. 6A, a flow diagram of a first embodiment of a method for providing a configuration and instantiation interface to a hosted virtual server service is shown. In summary, Manager 100 may provide an interface to the hosted virtual server service (step 601). The interface is an input for the user to select a virtual server configuration from multiple virtual server configurations, and a policy for the user to dynamically instantiate the virtual server, including at least one condition. Includes input and for setting. Manager 100 may then determine that at least one condition is met (step 603) and transmit to the hosted virtual server service an instruction to instantiate the virtual server according to the selected virtual server configuration. Good (step 605).
Further in more detail here, still referring to FIG. 6A, the interface to the hosted virtual server service may be provided in any manner. In some embodiments, the interface may include a web-based graphical interface. Such interfaces include HTML, Java® scripts, XML, images, text, Java®. It may include any graphical interface that can be viewed through a web browser, including an unlimited number of Applets and / or any combination of SVG. In other embodiments, the interface may include a command line interface. In yet other embodiments, the interface may be a combination of image and text inputs. The interface may be provided by any one or more computing devices, including an unlimited number of managers 100, user stations 102, or any combination thereof. For example, the manager 100 may transmit a large number of web pages to the user station 102, and the user station may display the pages and return the user input to the manager 100.
The interface may include any input for the user to select a virtual server configuration from a plurality of virtual server configurations. In some embodiments, the user may choose from a number of configurations from the menu. In other embodiments, the user may enter the name of one or more virtual server configurations. In yet another embodiment, the user may transmit any data corresponding to the virtual server configuration, including an unlimited number of variables, configuration scripts, and server images, as a subset of selection. For example, the menu may offer the option to choose from previously uploaded server configurations or upload a new virtual server image and / or configuration. In some embodiments, the interface may allow the user to choose from virtual server configurations created and shared by other users. For example, the user may create a particularly useful configuration for hosting an e-commerce site. The user may then designate the configuration as shared and thus allow other users to use the configuration. In some embodiments, use may be subject to payment to the author of the license terms and / or configuration.
Referencing Figure 5A again provides an example menu that allows the user to choose from multiple public and private server configurations. The private server configuration may be created and / or modified by the user. A public / premium server configuration may represent a server configuration created and shared by others, or a server configuration made available by the interface administrator. In some embodiments, there may be a charge charged to the user for the use of certain public / premium server configurations.
With reference to Figure 5B, the interface may also allow the user to view one or more boot scripts associated with the server configuration. The user may then be able to view, select, remove, or modify the boot script. The user may also be able to add scripts to the server configuration, including both scripts created by the user and scripts that will be publicly available.
The interface may also include any input for the user to set a policy for dynamically instantiating a virtual server and including at least one condition. The policy may include any combination of conditions and activities. The conditions are virtual server usage, hosted virtual server service parameters, time, date, reception of transmissions to the virtual server, message queue status (eg size or age), and transmissions from applications running on the virtual server. It may be for any one or more variables, including an unlimited number of signals to be signaled (ie, the application may internally determine when additional servers are needed). Conditions for virtual server usage include processor load, bandwidth usage, running connections, memory load, maximum response time, and average response time disk usage, system temperature and other environmental factors, memory error rate, disk error / re-use. Any combination of parameters or virtual server usage parameters may be used, including an unlimited number of hardware health indicators such as trial rate, power supply level, and so on.
Here, with reference to Figure 5C, an example interface is shown that allows the user to select policies and conditions. Figure 5C shows a number of policies, along with the conditions that may be enabled to manage the virtual server. For example, the first policy is to trigger a "scale up" event when the virtual server's cpu idle time drops below 50% for 3 minutes. Scale-up events may be received by Manager 100 (or generated by Manager 100 if Manager 100 is directly monitoring the virtual server), and then the manager is currently under heavy load on the virtual server. You may send a command to the virtual server service to instantiate the new image. The second strategy in the list in Figure 5C triggers a "scale down" event when the virtual server's cpu idle time rises above 80% over 10 minutes. Scale-down events may be received by Manager 100 (or generated by Manager 100 if Manager 100 is directly monitoring the virtual server), and then the manager is an instance of the underutilized virtual server. You may send an instruction to the virtual server service to remove. For example, the third policy dictates that a crisis event is generated if the virtual server is immobilized for more than a minute. Crisis events may be received by Manager 100 (or generated by Manager 100 if Manager 100 is directly monitoring the virtual server) or recorded, or Manager 100 may be in crisis. It may have a specific procedure for coping with a target event.
In some embodiments, the condition may also relate to the failure of one or more virtual servers. For example, the condition may provide instantiation of a new virtual server in the event of a running virtual server instance failure. In these embodiments, failures include an unlimited number of crashes, suspensions of execution, communication failures, failure to respond to messages, failure to serve requests, corruption, and / or unintentional shutdown. It may include any kind of failure of. In some embodiments, the condition may also relate to a predicted failure of the virtual server. In these embodiments, the failure is a recoverable error, such as a memory error rate due to error check code (ECC), or various disk error rates (usually monitored using SMART criteria). It may be predicted by any means, including an unlimited number of rate-based means. Failure may also be predicted based on unrecoverable errors, such as a voluntary reboot of the machine. For example, the policy may be to shut down the server and instantiate a replacement server after 5 to 20 unexpected reboots (usually initiated by a hardware check).
For example, the policy may specify the activity of instantiating a new virtual server whenever the condition of virtual server usage above the threshold is true. Alternatively, for example, the policy may specify an activity that terminates a large number of virtual server instances at 7 pm. In some embodiments, the policy may specify the total number of virtual servers to maintain at a given time. For example, the policy may stipulate that at least four servers must be up at 6 am and that it may require the startup of 0-4 servers. The policy can also indicate that at most 20 servers may be running, for example to limit the total cost. In some embodiments, the policy may be to combine the states of multiple servers and then launch additional servers, for example, if the minimum number of requests fulfilled per second across all servers exceeds 100 / sec. .. In other embodiments, any combination of the above policies may be applied. For example, the policy is that at least four servers are running at 7am, one additional server will be started if the average CPU usage is 40% or more of the running servers, and at any point in time. You may request that at most 10 servers may be running.
Figures 5D and 5E depict an example interface that allows the user to edit and create policies. When configuring the policy, the user may select variables in the file from which real-time monitoring data is collected. The user may select variables, conditions, thresholds, durations, and gradual expansion activities for the policy. User selection may be accomplished via any input, including an unlimited number of menus, checkboxes, text boxes, links, drag-and-drop interfaces, and sliders.
Figure 5F illustrates an example interface that allows the user to set a policy for an array of servers. For example, the array may have an elastic threshold that defines which part of the server must generate an event to grow or shrink the array before changes are made. In the embodiments shown, the array is scaled up or down when scale-up or scale-down events are generated, respectively, for at least 51% of the servers, respectively. The array may be scaled up or down by a given number of servers and may have certain upper and lower limits on the number of virtual servers that may operate at one time. The array may also have the required cooldown time during the resize event.
With reference to FIG. 5G here, in some embodiments, a display may be provided that shows the user usage statistics for one or more virtual server instances. The display may present any statistic in any format, including an unlimited number of graphs, histograms, charts, animations, and text. In some embodiments, the display may indicate a particular parameter that the user wants to use when configuring one or more policies. For example, the user may examine CPU usage trends over a period of one month to determine a threshold for the policy of adding additional server instances based on CPU usage.
With reference to FIG. 6B earlier, in some embodiments, the interface may receive input for one or more constituent variables, along with values that are determined based on the properties at instantiation (step 601a). The properties are the names, addresses, and configuration information of other instantiated virtual servers, the properties of hosted virtual server services, the properties of Manager 100, the usage parameters of one or more instantiated virtual servers, or the server's. It may contain any value determined at instantiation, including an unlimited number of exact conditions that triggered the activation.
With reference to FIG. 6A again, Manager 100 may then determine in any manner that at least one condition is met (step 603). In some embodiments, the manager 100 may receive data from the hosted virtual server service to determine if the conditions are met. In other embodiments, the manager 100 may internally determine that the condition is met, such as by checking the system time. In yet another embodiment, the manager 100 may determine that the condition is met by receiving data from one or more instantiated virtual servers.
After the conditions are met, the manager 100 may transmit an instruction to instantiate the virtual server according to the selected virtual server configuration to the hosted virtual server service (step 605). The instruction may include any information regarding the configuration or instantiation of the virtual server. In some embodiments, the instruction may include one or more variables that are determined when the instruction is transmitted. In yet another embodiment, the instruction may be to instantiate the virtual server with a configuration manager that configures the virtual server instantiated in any manner described herein.
With reference to FIG. 6B earlier, in some embodiments, after transmitting the instruction, the manager 100 may determine the value of one or more variables (step 607). Manager 100 may then transmit the values of those variables to the instantiated virtual server.
Referencing Figure 7 here shows how to provide a configuration and instantiation interface for multiple hosted virtual server services. In summary, the method presented is similar to the method in Figures 6A and 6B, with the addition of an interface that receives policy input for choosing from multiple hosted virtual server services (step 601b). The method may then include selecting one of a plurality of hosted virtual server services to instantiate the virtual server according to policy (step 705).
Still referring to FIG. 7, the interface may be provided in any manner described herein (step 601b). The interface may include arbitrary input for the user to identify a policy for choosing from hosted virtual server services. The policy may identify any attribute of the virtual server service, including unlimited performance, cost, usage, and latency. For example, the policy may be selected from multiple services based on which service provides the best performance / cost torredooff. Alternatively, for example, the policy may be selected from a plurality of services based on the type of virtual server to be instantiated.
After the conditions are met (step 603), the manager may then select one of the multiple hosted virtual server services according to the first policy (step 705). In the process of making a selection, the manager may receive any information, send any request, or calculate any parameter. The manager may then transmit the instantiation instruction to the selected service (step 605).
The present disclosure has been specifically shown and described with reference to specific preferred embodiments, but without departing from the spirit and scope of the present disclosure as defined by the appended claims, a variety of forms and details. It should be understood by those skilled in the art that changes may be made to it.
16 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16
Every citation, both ways
| Document | Relation | Office |
|---|---|---|
| JP2005332223A | Cites | Japan |
| WO2007126837A2 | Cites | World Intellectual Property Organization (WIPO) |
| JP2007272297A | Cites | Japan |
| US20060184653A1 | Cites | United States of America |
| US7080378B1 | Cites | United States of America |
| US20030105810A1 | Cites | United States of America |
| US7904899B2 | Cites | United States of America |
| JP2003330740A | Cites | Japan |
| JP2002202959A | Cites | Japan |
| WO2004040444A1 | Cites | World Intellectual Property Organization (WIPO) |
| JP2007512744A | Cites | Japan |
17 members in 6 offices
Priority claims9
| Document | Office | Kind | Date |
|---|---|---|---|
| 12050865 | United States of America | – | |
| 5086508 | United States of America | A | |
| 5086508 | United States of America | A | |
| 2009036764 | United States of America | W | |
| 2009036764 | United States of America | W | |
| 2008050865 | – | – | – |
| 2009036764 | – | – | – |
| US20080050865 | – | – | – |
| WO2009US36764 | – | – | – |
Members17
| Document | Office | Kind | |
|---|---|---|---|
| AU2009225796A1 | Australia | A1 | |
| CA2715020A1 | Canada | A1 | |
| US2009241030A1 | United States of America | A1 | |
| WO2009117288A1 | World Intellectual Property Organization (WIPO) | A1 | |
| EP2255506A1 | European Patent Office (EPO) | A1 | |
| JP2011523472A | Japan | A | |
| US2012198345A1 | United States of America | A1 | |
| US2012203884A1 | United States of America | A1 | |
| US2012265863A1 | United States of America | A1 | |
| US8489995B2 | United States of America | B2 | |
| US8504920B2 | United States of America | B2 | |
| JP5347016B2This record | Japan | B2 | |
| US8601375B2 | United States of America | B2 | |
| AU2009225796B2 | Australia | B2 | |
| AU2014203514A1 | Australia | A1 | |
| CA2715020C | Canada | C | |
| AU2014203514B2 | Australia | B2 |
20 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Receipt of annual feesJAPANESE INTERMEDIATE CODE: R250R250 | R250 | |
| Certificate of patent or registration of utility modelJAPANESE INTERMEDIATE CODE: R150R150 | R150 | |
| Certificate of patent or registration of utility modelJAPANESE INTERMEDIATE CODE: R150R150 | R150 | |
| First payment of annual fees (during grant procedure)JAPANESE INTERMEDIATE CODE: A61A61 | A61 | |
| Written decision to grant a patent or to grant a registration (utility model)JAPANESE INTERMEDIATE CODE: A01A01 | A01 | |
| Decision of grant or rejection writtenTRDD | TRDD | |
| Report on retrievalJAPANESE INTERMEDIATE CODE: A971007A977 | A977 | |
| Request for written amendment filedJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Request for written amendment filedJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Request for written amendment filedJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Written request for application examinationJAPANESE INTERMEDIATE CODE: A621A621 | A621 |
Numbers
- Publication
- 5347016
- Publication, DOCDB
- 5347016
- Publication, EPODOC
- JP5347016B
- Application
- 2011500869
- Application, DOCDB
- 2011500869
- Application, EPODOC
- JP20110500869
Titles2
- Japanese
- 仮想サーバを効率的に管理および構成するための方法ならびにシステム
- English
- Methods and systems for efficiently managing and configuring virtual servers
Classification
- CPC, 1
- H04L67/00
- IPC, 2
- G06F9 445
- G06F9 50
