Abstract:
A method including, in a grid network, determining available compute devices for installation and execution of an application, the application requiring a specific operating system. The method also includes, in response to determining that there are no available compute devices having the specific operating system, sending a request to install the specific operating system and a grid manager through a link to a management system. The method also includes installing the specific operating system on one of a plurality of compute devices controlled by the management system and linking the one of a plurality of compute devices controlled by the management system to the grid network. Lastly, the method includes installing the application on the one of a plurality of compute devices controlled by the management system.

Description:
TECHNICAL FIELD 
     This invention relates to grid application deployment. 
     BACKGROUND 
     In today&#39;s data centers, the clusters of servers in a client-server network that run business applications often do a poor job of managing unpredictable workloads. One server may sit idle, while another is constrained. This leads to a “Catch-22” where companies, needing to avoid network bottlenecks and safeguard connectivity with customers, business partners and employees, often plan for the highest spikes in workload demand, then watch as those surplus servers operate well under capacity most of the time. 
     In grid computing, all of the disparate computers and systems in an organization or among organizations become one large, integrated computing system. Grid computing is a form of distributed system wherein computing resources are shared across networks. Grid computing enables the selection, aggregation, and sharing of information resources resident in multiple administrative domains and across geographic areas. 
     Typically, grid computing includes a set of software services that allocate computer resources to different applications. These software services usually run on a software layer of computer systems and cannot modify certain lower level features of the computer systems such as operating systems. Modifying these features can require rebooting the computer systems. 
     SUMMARY 
     In one aspect, the invention features a method including, in a grid network, determining available compute devices for installation and execution of an application, the application requiring a specific operating system. The method also includes, in response to determining that there are no available compute devices having the specific operating system, sending a request to install the specific operating system and a grid manager through a link to a management system. The method also includes installing the specific operating system on one of a plurality of compute devices controlled by the management system and linking the one of a plurality of compute devices controlled by the management system to the grid network. Lastly, the method includes installing the application on the one of a plurality of compute devices controlled by the management system. 
     Embodiments may include one or more of the following. The method further includes executing the application in the one of a plurality of compute devices controlled by the management system. The plurality of compute devices controlled by the management system are blade servers and the management system is a blade management system. Sending includes an application programming interface (API). Installing the specific operating system further includes installing a grid manager. 
     In another aspect, the invention features a computer program product, tangibly embodied in an information carrier, for deploying an application, the computer program product being operable to cause a data processing apparatus to do the following. In a grid network, determine available compute devices for installation and execution of the application, the application requiring a specific operating system platform. In response to determining that there are no available compute devices having the specific operating system platform, send a request to install the specific operating system and a grid manager through a link to a management system. Install the specific operating system on one of a plurality of compute devices controlled by the management system. Link the one of a plurality of compute devices controlled by the management system to the grid network. 
     In embodiments, the computer program product is being operable to further cause a data processing apparatus to execute the application in the one of a plurality of compute devices controlled by the management system. The plurality of compute devices controlled by the management system are blade servers and the management system is a blade management system. The product is further operable to cause the data processing apparatus to use an application programming interface (API) to send the request. The product is further operable to cause the data processing apparatus to install a grid manager. 
     In another aspect, the invention features a system that includes a client system residing in a grid network of interconnected grid compute devices, means for receiving a request in the client system to deploy and execute an application, the application requiring a specific operating system, the specific operating system unavailable in the interconnected grid compute devices, means for sending a request to install the specific operating system and a grid manager through a link to a management system. The system also includes means for installing the specific operating system in one of a plurality of compute devices controlled by the management system, means for installing the grid manager in one of a plurality of compute devices controlled by the management system, means for linking the one of a plurality of compute devices controlled by the management system to the grid network, and means for installing the application in the one of a plurality of compute devices controlled by the management system. 
     Embodiments may include one or more of the following. The system further includes means for executing the application in the one of a plurality of compute devices controlled by the management system. The means for sending use an application programming interface (API). The plurality of compute devices controlled by the management system are blade servers and the management system is a blade management system. 
     Embodiments of the invention may have one or more of the following advantages. Requirements for a software application to run in a grid environment, such as a particular operating system, can be satisfied by dynamically configuring resources of the grid environment. 
     The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims. 
    
    
     
       DESCRIPTION OF DRAWINGS 
         FIG. 1  is a block diagram of a grid computing environment. 
         FIG. 2  is a flow diagram for discovering, configuring, and reserving resources in the grid computing environment of  FIG. 1 . 
         FIG. 3  is a block diagram of a grid computing environment having a hierarchical grid architecture. 
         FIG. 4  is a flow diagram for discovering, configuring, and reserving resources in the grid computing environment of  FIG. 3 . 
         FIG. 5  is a flow diagram for starting up grid managers in the grid computing environment of  FIG. 3 . 
     
    
    
     DETAILED DESCRIPTION 
     As shown in  FIG. 1 , grid managers  152 ,  154 ,  156 ,  160 ,  162  in a grid computing environment  100  manage computational resources for one or more applications  118 . The grid computing environment  100  includes a set of distributed computing resources that can individually be requested by the applications  118  to perform computing or data retrieval tasks for the applications  118 . The grid managers  152 ,  154 ,  156 ,  160 ,  162  can be arranged in a hierarchical, linear, or some other form of architecture to coordinate handling requests by the applications  118 . The computational resources include computer devices  12 ,  14 ,  16 ,  18 ,  20 ,  22 . The grid managers  152 ,  154 ,  156 ,  160 ,  162  are resident in the computer devices  12 ,  14 ,  16 ,  18 ,  20 , respectively. The computer devices  12 ,  14 ,  16 ,  18 ,  20  communicate using a network  8 . The network  8  can be a local area network (LAN) or a larger group of interconnected systems such as the Internet. In other cases, the computer devices  12 ,  14 ,  16 ,  18 ,  20  are single board computers and the network  8  is a data bus. The grid managers  152 ,  154 ,  156 ,  160 ,  162  facilitate installation and deinstallation of transient software components of applications  118  on the computer devices  12 ,  14 ,  16 ,  18 , and  20 . The grid managers  152 ,  154 ,  156 ,  160 ,  162  also manage the software components while they are present on the computer devices  12 ,  14 ,  16 ,  18 ,  20 ,  22 , respectively. In the grid computing environment  100 , the software components  120 ,  122 ,  124 ,  126  are installed on the computer devices  12 ,  14 ,  16 , and  18 , respectively, and managed by the grid managers  152 ,  154 ,  156 ,  160 , respectively. 
     Grid computing environment  100  also includes a computer device  22  that is managed by computer management system  24 . The computer manager system  24  can install an operating system on the computer device  22  by writing an operating system to a boot device for the computer device  22  and rebooting the computer device  22 . The computer device  22  can communicate with the computer devices  12 ,  14 ,  16 ,  18 , and  20  through the computer management system  24  using the network  8 . Computer device  22  can be a blade server and the computer management system  24  can be a blade management system. A blade server is a thin, modular electronic circuit board, containing one, two, or more microprocessors and memory, that can be easily inserted into a space-saving rack with many similar servers that are managed by a blade management system. Blade servers, which share a common high-speed bus, are designed to generate less heat and thus save energy costs as well as space. A blade server is sometimes referred to as a high-density server and is typically used in a clustering of servers. 
     As shown in  FIG. 2 , an application start process  200  provides application  118  with the necessary resources allocated in the grid computing environment  100  before executing on one or more computer devices (e.g.,  12 ,  14 ,  16 ,  18 ,  20 ). 
     The process  200  includes the application  118  sending ( 202 ) requirements for computational resources to query one or more grid managers (e.g.,  154 ) to determine if there are resources matching these requirements available in the grid computing environment  100 . These requirements specify information pertaining to resources in a computer device such as required number of processors, required percentage of utilization for those processors, main memory, operating system, and network speed. The process  200  includes the one or more grid managers receiving ( 204 ) the requirements. 
     To respond to the query for available resources from the application  118 , the process  200  includes the one or more grid managers matching ( 206 ) the requirements against resources known to the one or more grid managers. These resources can include resources (e.g., a processor) in computer device  14  that are directly managed by any single grid manager (e.g.,  154 ). 
     If process  200  determines ( 210 ) that there is at least one resource meeting the application requirements (e.g., a processor on computer device  14 ), then a grid manager (e.g.,  154 ) installs and starts ( 224 ) a software component (e.g.,  122 ) on the resource. If the process  200  determines that there is not at least one resource meeting the application requirements, the process  200  determines ( 226 ) if an available resource can be configured to meet the requirements. If an available resource can be configured to meet the requirements, then the process  200  configures ( 228 ) the resource. 
     In some cases, the requirements are for a resource to run a particular operating system. For example, the resource requirements can include a resource running the Windows operating system. However, computer devices  12 ,  14 ,  16 ,  18 ,  20  run a version of the UNIX operating system, for example. Installing a particular operating system typically requires installation and rebooting of a computational device. Rebooting a computational device can be done if the computer device (e.g.,  22 ) is managed by a computer management system (e.g.,  24 ). 
     Computer device  22  is available as a resource for the grid computing environment  100 . The grid manager  152  can utilize an application programmer&#39;s interface (API)  166  that is configured to issue commands to the computer management system  24 . The grid manager  152  uses the API  166  to request that the computer manager system  24  install the required operating system with grid manager software on the computer device  22 . The grid manager  152  also requests that the computer device  22  reboot ( 230 ). Upon initialization, the computer device  22  runs the required operating system and a grid manager  164 . Subsequently, the grid manager  164  can install a new software component  128  on the computer device  22 , the computer device  22  having the required operating system. The grid manager  164  then can start ( 224 ) the new software component  128  on the computer device  22 . 
     The installation of the required operating system can be done using disk imaging. In disk imaging, an image in the form of a file is taken of a disk containing the required operating system with the grid manager software. Another installation technique includes Automated Deployment Services® (ADS) from Microsoft Corporation of Redmond, Wash. ADS supports the automatic and simultaneous installation of Windows operating system images to multiple servers that have no operating system installed. 
     The management system  24  receives the file with the disk image and writes the contents of the file into a disk drive that is readable by the computer device  22 . The disk drive can reside with the computer device  22  or be a network attached storage (NAS) system on the same network as the computer device  22 . Upon booting up, the computer device  22  reads the file in the disk drive and executes the instructions of the required operating system. The operating system image includes grid manager software with information that is required to enable the grid manager  164  to be part of the grid computing environment  100 . 
     As shown in  FIG. 3 , one example of the grid computing environment  100  is a grid computing environment  300  having a hierarchical grid management architecture. In the grid computing environment  300 , grid managers  312 ,  314 ,  316 ,  320 ,  322  are organized according to this hierarchical grid management architecture. Within the grid computing environment  300 , pairs of grid managers can have directional relations that classify one grid manager as superior (or inferior) to another grid manager. A grid manager can have more than one superior (or inferior) relations with other grid managers. For example, grid manager  312  has a superior relation with grid managers  314  and  316 . A grid manager can also have more than one inferior relations with other grid managers. For example, through these hierarchical relations, the application  118  does not need access to a list of the computer devices  12 ,  14 ,  16 ,  18 ,  20 ,  22  in network  302  to use the computational resources in the grid computing environment  300 . The application  118  only needs to have access to a network address of one computer device running a grid manager (e.g., computer device  12  running grid manager  312 ) and the grid manager  312  uses its relations with other grid managers running on other computer devices to provide the application  118  with access to other computer devices in the grid computing environment  300 . 
     A grid manager (e.g.,  312 ,  314 ,  316 ,  320 ,  322 ) maintains a first list of all superior relations with other grid managers and a second list of all inferior relations with other grid managers. These lists are maintained in a properties file for each grid manager. Each grid manager maintains an “always open” communications channel to all the grid managers in these lists over network  302  using, for example, interfaces on transmission control protocol (TCP), hypertext transfer protocol (HTTP), and simple object access protocol (SOAP). These communication channels are opened when the grid managers  312 ,  314 ,  316 ,  320 ,  322  are asynchronously started up on computer devices  12 ,  14 ,  16 ,  18 ,  20 , respectively. 
     As shown in  FIG. 4 , an application start process  400  provides application  118  with the necessary resources allocated in the grid computing environment  300  before executing on one or more computer devices (e.g.,  12 ,  14 ,  16 ,  18 ,  20 ). 
     The process  400  includes the application  118  sending ( 402 ) requirements for computational resources to query a grid manager (e.g.,  314 ) to determine if there are resources matching these requirements available in the grid computing environment  300 . These requirements specify information pertaining to resources in a computer device such as required number of processors, required percentage of utilization for those processors, main memory, operating system, and network speed. The query can also include information to which hierarchy level (in the grid computing environment  300 ) the query should be propagated. The process  400  includes the grid manager  314  receiving ( 404 ) the requirements. 
     To respond to the query for available resources from the application  118 , the grid manager  314  matches ( 406 ) the requirements against resources known to the grid manager  314 . These resources include resources (e.g., a processor) in computer device  14  that are directly managed by grid manager  314 . Resources directly managed by the grid manager  314  that are currently available and meet the requirements are added to a resource-query list maintained by the grid manager  314 . 
     Grid manager  314  also sends the query to grid managers  320  and  322  having inferior relations with grid manager  154 . The process  400  includes grid managers  320  and  322  responding ( 408 ) to the query by sending to grid manager  154  lists of resources (e.g., processors on computer devices  18 ,  20 ) that meet the requested requirements and are available and known to grid managers  320  and  322 , respectively. These resource-query lists of resources that are known to grid managers  320 ,  322  can also include resources managed by grid managers (not shown) with inferior relations to grid managers  320  and  322 . The grid manager  314  adds these resource-query lists of available resources from grid managers  320  and  322  to its resource-query list of available resources meeting the requested requirements. If the process  400  determines ( 410 ) that there is at least one resource meeting the application requirements (e.g., a processor on computer device  14 ) in this resource-query list, then grid manager  314  sends ( 414 ) this resource-query list to the application  118 . Otherwise, if the process  400  determines ( 412 ) that grid manager  314  has an inferior relation with a grid manager (e.g., grid manager  312 ), grid manager  314  sends ( 402 ) the query for available resources to grid manager  312 . In response to this query, grid manager  312  does not send a redundant query back to grid manager  314  having an inferior relation with grid manager  312 . 
     Process  400  includes grid manager  314  sending ( 414 ) the list of available resources along with addresses of their corresponding grid managers in the network  302  that match the requirements. The application  118  selects a resource (e.g., a processor on computer device  14 ) from the list and requests ( 416 ) a reservation of the resource on computer device  14  to the grid manager  314  managing the resource on computer device  14 . If the resource in computer device  14  is still available for reservation ( 418 ) and the reservation succeeds, grid manager  314  sends ( 420 ) a reservation number to the application  118 . This reservation means that the application  118  is guaranteed and allocated the requested resource on the computer device  14  in the grid computing environment  300 . The grid manager  314  handles queries for available resources from applications using independent processing threads of execution. Thus, the grid manager  314  uses a semaphore to ensure that the same resource (e.g., the processor on the computer device  14 ) is not assigned multiple reservation numbers for different applications simultaneously requesting the same resource. 
     If the grid manager  314  determines that the requested resource in computer device  14  is not available for reservation and the reservation fails, the application  118  selects the next available resource in the list and requests ( 416 ) the reservation of this next available resource. If the application receives a registration number and a timeout measured from the sending of the registration number does not expire ( 422 ), the application  118  starts ( 424 ) the software component  122  on a processor resource in the computer device  14 . Starting the software component  122  is initiated by the application  118  passing the reservation number and an application file to the grid manager  314  and then the grid manager  314  reads the application file to install and execute the software component  122  on the computer device  14 . 
     If the process  400  determines ( 412 ) that the grid manager (e.g.,  312 ) has no inferior relation with a grid manager, the process  400  determines ( 426 ) if an available resource can be configured to meet the requirements. If an available resource can be configured to meet the requirements, then the process  400  configures ( 428 ) the resource as previously described in process  200 . 
     If the application  118  requesting the use of resources in the grid computing environment  100  requires one or more computational resources running a particular operating system and computer device  22  is available as a resource for the grid computing environment  300 , the grid manager  312  uses the API  166  to install the particular operating system with grid manager software on the computer device  22  and command the computer device  22  to re-boot. Upon initialization, the computer device  22  runs a grid manager  324  with an inferior relation to the grid manager  312 . Subsequently, the grid manager  312  matches ( 406 ) the requirements against known resources by sending the requirements for computational resources with the particular operating system to the grid manager  322  and the grid manager  322  responds ( 408 ) to the query by sending a list that includes a processor on the computer device  22 . Subsequently, the grid manager  324  installs a software component  128  on the computer device  22 , the computer device  22  having the required operating system. 
     The computer management system  24  receives the file with the disk image and writes the contents of the file into a hard drive associated with the computer device  22  or a networked disk drive or network attached storage (NAS) as described previously for grid computing environment  100 . Upon starting up, the computer device  22  reads the file and executes the instructions of the required operating system. The operating system image includes grid manager software with a properties file  326  (described above) containing a list of grid managers having a superior relation to the grid manager  324  on computer device  22 . This list includes grid manager  312 . 
     As shown in  FIG. 5 , a process  500  initializes relations among grid managers in the grid computing environment  300 . The process  500  is also used to initialize relations between the newly started grid manager  324  and other grid managers. The grid manager (e.g.,  324 ) starts up on computer device  22  by reading ( 502 ) a properties file (e.g.,  326 ). The properties file contains a list of addresses of computer devices with grid managers having superior relations to the grid manager. This list was described earlier as a first list of all superior relations with other grid managers. If the process  500  determines ( 504 ) that a superior grid manager (e.g.,  312 ) is specified in this list of addresses, the grid manager  324  requests ( 506 ) to open a communication channel to the superior grid manager (e.g.,  312 ). Process  500  includes the grid manager  312  detecting ( 508 ) any requests for communication channels from grid managers  324  that are identified as having inferior relations with the grid manager  312 . If the process  300  determines ( 510 ) that there are some requests, the grid manager  312  allows communication channels from the inferior grid manager  324 . The process  500  includes the grid manager  324  checking ( 514 ) if there are any pending requests for communication to grid managers  312  having superior relations. If there are any pending requests, the grid manager  324  requests ( 506 ) communication channels to these grid managers (e.g.,  312 ). These communication channels are used for resource queries between grid managers (e.g., the process  400 ) as well as “heart beat” messages between grid managers to ensure that each grid manager in the grid computing environment  300  is functioning. 
     Other embodiments are within the scope of the following claims.