Red books

advertisement
Redbooks Paper
Dan LaDore
Edson Manoel
Provisioning J2EE Applications with
IBM Tivoli Intelligent Orchestrator
and IBM WebSphere Application
Server Network Deployment
Introduction
This IBM® Redpaper presents a simplified customer environment in which we
demonstrate a case study for provisioning servers to a Java™ 2 Platform,
Enterprise Edition (J2EE™) application cluster environment for use by
customers.
This paper focuses on the tasks required for planning, implementing, and
configuring all components of IBM Tivoli® Intelligent Orchestrator for dynamic
provisioning of J2EE applications to servers in an IBM WebSphere® Application
Server clustered environment controlled by IBM WebSphere Application Server
Network Deployment. We discuss the following topics:
򐂰 Scenario overview
򐂰 Scenario implementation overview
򐂰 Prerequisite automation packages verification
© Copyright IBM Corp. 2005. All rights reserved.
ibm.com/redbooks
1
򐂰 Data center modeling
򐂰 Workflow design and development
򐂰 Automation package assembly and installation
򐂰 Scenario execution
Scenario overview
In our scenario, we demonstrate the methods and requirements for integrating a
complete J2EE application environment into IBM Tivoli Intelligent Orchestrator.
We show the ability to use Tivoli Intelligent Orchestrator to manage this
environment from both an infrastructure and application point of view. We
demonstrate in detail the ability of Tivoli Intelligent Orchestrator to perform
provisioning operations to add and remove configured servers to an existing
application cluster in real-time as defined by application and server performance
requirements. We show all the required configuration settings and definitions
required in Tivoli Intelligent Orchestrator to enable such provisioning operations.
Our fictitious customer is running a J2EE application on WebSphere Application
Server Version 5.1.1 in a clustered environment originally configured with
WebSphere Application Server Network Deployment manager. The application
also uses IBM DB2® for a back-end database. The customer wants to provision
new servers into, and remove unneeded servers out of, the existing J2EE
application cluster as needed in the customer’s data center, in which Tivoli
Intelligent Orchestrator has already been deployed.
The sample J2EE application used in this paper models an online stock
brokerage application. This is the core business of our fictitious customer. The
infrastructure for the application has been deployed. Figure 1 depicts the
application infrastructure.
2
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
Figure 1 Application infrastructure
Our intent
In this paper, we show all the steps to integrate the J2EE application to Tivoli
Intelligent Orchestrator, deploy the node and application into the cluster, remove
the node from the cluster when no longer needed, and appropriately update the
data center model to reflect in real-time the availability of resources.
At a high level, Figure 2 shows the operations performed when executing a
provisioning operation.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
3
Figure 2 J2EE application provisioning
In Figure 2:
1. The application workload reaches the predetermined utilization threshold.
2. Tivoli Intelligent Orchestrator decides to provision a new server to the
application tier.
3. The Cluster.AddServer logical operation begins.
4. The ID of an available server or servers is retrieved from the associated
resource pool. Cluster management operations begin at this point. Workflows
must issue commands and tasks to prepare the server or servers. Such tasks
include obtaining the WebSphere Application Server Network Deployment
server information, adding the servers to the proper WebSphere cell and
cluster, and so on.
4
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
5. Tivoli Intelligent Orchestrator prepares to install software by checking for the
server template associated with the application tier. The server template
provides network, storage, and software associations through software stacks
for the application tier to be provisioned on the selected server or servers.
The software stack contains one or more software module entries and might
contain other software stacks as well. A software module will provide a
software product definition that contains software installables definitions for
the product. The software installable indicates the location of the file
repository for the installable files. For our scenario, we present these
definitions in “Data center modeling” on page 12.
6. Software installations are performed as required. This process requires the
proper workflows be assigned to enable the logical operations to occur.
7. Template compliance is checked.
8. The server is allocated to the application tier.
For our scenario, we use a J2EE application created by the IBM WebSphere
Development Team for performance benchmarking to demonstrate the actions
we just described. The next section describes the Trade3 application used in our
scenario.
Main architecture of the Trade3 application
This section describes the main architecture of the Trade3 application. For our
case study scenario, Trade3 is already installed on WebSphere Application
Server V5.1.1 in an application cluster originally configured using WebSphere
Application Server Network Deployment manager.
The IBM WebSphere performance benchmark application Trade3 provides a
suite of IBM-developed workloads for characterizing the performance of a
WebSphere installation. The workloads consist of an end-to-end Web application
and a full set of primitives. The applications are a collection of Java classes, Java
servlets, JavaServer Pages (JSP), and Enterprise JavaBeans built to open J2EE
APIs.
This sample application provides a real-world scenario for its implementation
design, usage of J2EE 1.3, including the EJB™ 2.0 component architecture,
message-driven beans, transactions (1-phase, 2-phase commit), and Web
services (SOAP, WSDL, and UDDI).
For additional information concerning the application and to download the code
and complete installation documentation, refer to:
http://www.ibm.com/software/webservers/appserv/benchmark3.html
Figure 3 shows the basic architecture of the Trade3 application.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
5
Figure 3 Trade3 application architecture
As with any application, installing Trade3 in a clustered environment is a different
process from the stand-alone installation. This document assumes that the
installer has acquired such knowledge and skills and has previously configured
the application to function as in this scenario by completing the following major
steps:
1. Create the clusters, and add nodes and servers to them using the
WebSphere Application Server Network Deployment administrative functions.
2. Create the applications database infrastructure.
3. Create JDBC™ resources for either each node or for the cell.
4. Define Java Message Service (JMS) resources for each node.
5. Install the Trade3 application to the cluster.
Existing IT infrastructure
To demonstrate the provisioning operations performed by Tivoli Intelligent
Orchestrator in this scenario, we make the following assumptions:
򐂰 A functional environment for Tivoli Intelligent Orchestrator V3.1 is up and
running with Fix Pack 1 applied.
򐂰 A functional WebSphere Application Server V5.1.1 controlled by WebSphere
Application Server Network Deployment is up and running with Cumulative
Fix 5 installed and has an application cluster defined. We also assume that
the Trade3 application has been deployed to that application cluster within the
WebSphere Application Server environment.
6
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
Figure 4 shows the infrastructure used in this scenario. It serves as the starting
point for us to create a Tivoli Intelligent Orchestrator environment capable of
automatically provisioning resources for the sample J2EE application. For our
scenario, this includes a WebSphere Application Server V5.1.1 application
cluster running Trade3.
Figure 4 Pre-integration infrastructure
Application environment overview
Our scenario uses IBM WebSphere Application Server Version 5.1.1 with
Cumulative Fix 5 on the Microsoft® Windows® Server 2003 platform.
WebSphere Application Server Network Deployment manages multiple nodes
and uses IBM HTTP Server as the front end for client access. The application
cluster has no modifications beyond what is required for the Trade3 application
installation. The Trade3 application currently operates in an application cluster on
two nodes. In addition, Trade3 uses an IBM DB2 database back end running on
Microsoft Windows Server 2003, which has been integrated as a JDBC provider
in WebSphere Application Server. Trade3 also requires JMS configurations in
WebSphere Application Server to function, which are explained completely in the
installation documentation for Trade3.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
7
Tivoli Intelligent Orchestrator environment overview
Our scenario uses Tivoli Intelligent Orchestrator in a two-server deployment
configuration. In this environment, one server acts as the provisioning server,
running Tivoli Intelligent Orchestrator Version 3.1 with Fix Pack 1, WebSphere
Application Server V5.1, with Fix Pack 1 and Cumulative Fix Pack 3, IBM DB2
Universal Database™ (UDB) Enterprise Server Edition Version 8.2 with Fix Pack
7 and Hot Fix 13832, and IBM Tivoli Directory Server Version 5.2 client.
The second server acts as the directory server node running IBM DB2 Universal
Database Enterprise Server Edition Version 8.2 with Fix Pack 7 and Hot Fix
13832 and the IBM Tivoli Directory Server Version 5.2 server and client.
For deployments in which the services for the Tivoli Intelligent Orchestrator
environment reside on two machines, the minimum hardware requirements are:
򐂰 2.8 GHz Intel® Pentium® 4 processor or equivalent
򐂰 Minimum of 4 GB of free RAM
򐂰 20 GB of disk space
Because our installation has been implemented on the Microsoft Windows
Server 2003 operating system, there are some additional requirements to make
the management environment function correctly, such as Cygwin to enable
secure communication between the management server and managed servers
and devices and IBM Tivoli Intelligent Orchestrator V3.1 Fix Pack 1 to provide
updates to Tivoli Intelligent Orchestrator and existing automation packages
required for this scenario.
As we stated earlier, we assume that Tivoli Intelligent Orchestrator has been
deployed and has a functioning data center model (DCM) configured. Later in
this paper, we describe in detail the steps required to add the entire application
infrastructure to the existing DCM, including defining the customer, applications,
clusters, software definitions for products, dedicated servers, and configuration
templates for servers and software definitions. We also include defining the
resource pools to support the provisioning process in Tivoli Intelligent
Orchestrator.
For additional information about Tivoli Intelligent Orchestrator, refer to the Tivoli
Intelligent Orchestrator V3.1 Information Center at:
http://publib.boulder.ibm.com/infocenter/tivihelp/v3r1/index.jsp?toc=/com.i
bm.tivoli.tio.doc/tio_nav.xml
8
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
Scenario implementation overview
The goal of this paper is to implement an environment similar to that shown in
Figure 5.
Figure 5 Provisioning infrastructure
In order to achieve a fully integrated provisioning environment, you need to
complete the following tasks:
1. Install and verify the latest level of all required prerequisite automation
packages in the Tivoli Intelligent Orchestrator environment.
2. Completely integrate the Trade3 application environment into the existing
Tivoli Intelligent Orchestrator data center model.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
9
3. Develop and test the workflows to carry on the provisioning operations of our
Trade3 application cluster using any of the Tivoli Intelligent Orchestrator V3.1
provided workflows development environments: workflow composer and the
Automation Package Development Environment (APDE).
4. Create an automation package that includes all workflows, device drivers,
scripts, configuration templates for server and software definitions, our
sample application installable module, and other DCM sample definitions.
This automation package must be installed in our Tivoli Intelligent
Orchestrator environment.
The following sections provide details about each of these tasks.
Prerequisite automation packages verification
Automation packages provide an avenue for Tivoli Intelligent Orchestrator to
access different software and hardware platforms. An automation package is a
logical grouping of scripts, JAR files, and other files used for a specific device
driver. After an automation package has been installed, Tivoli Intelligent
Orchestrator has the framework installed for manipulating the behavior of any
entity that can be defined within the data center model, for example, a piece of
hardware, software, or a custom object or objects. Automation packages are
stored in the %TIO_HOME%\drivers directory.
In this section, we provide the steps to install and verify the installation of the
required automation packages for our case study scenario. As per the
architecture of our sample J2EE application, the following automation packages
are required:
򐂰 IBM Automation Package for WebSphere Application Server
This automation package contains the components for installing, configuring,
and troubleshooting the WebSphere Application Server product. For Tivoli
Intelligent Orchestrator, this automation package is named
IBM-WebSphere-App-Server.
򐂰 IBM Automation Package for IBM DB2
This automation package captures the workflows and other components
necessary to install, uninstall, configure, and manage the IBM DB2 database
product. For Tivoli Intelligent Orchestrator, this automation package is named
DB2.
For our case study environment, these automation packages provide, among
other things, templates that will be used for our software definitions, which in turn
will be used to create the software stacks used to install the sample application
environment on the servers during the provisioning operation.
10
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
Later in this paper, we explain how we create and install the Trade3 automation
package, which provides workflows, logical operations, and additional
configuration templates used for our TRADE3 software definition, and, ultimately,
the software stack to enable configuration and installation of the Trade3
application onto a server selected from the assigned resource pool.
Both prerequisite automation packages previously described are shipped with
Tivoli Intelligent Orchestrator V3.1. We applied the Tivoli Intelligent Orchestrator
Version 3.1 Fix Pack 1 on our management server, which provided the required
updates to these automation packages as part of the update.
To verify the existence and status of an automation package, use the automation
package manager tc-driver-manager command. For example, the following
command can be run from a terminal session on your server to verify the status
of the IBM Automation Package for WebSphere Application Server:
%TIO_HOME%\ tools\tc-driver-manager getDriverStatus
IBM-WebSphere-App-Server
This returns a simple value of installed or not-installed, as shown in
Example 1.
You can use the same command to verify the installation of the IBM Automation
Package for IBM DB2. Both are required for our Trade3 application scenario. If
the automation package is installed and Tivoli Intelligent Orchestrator Version 3.1
Fix Pack 1 applied, no further configuration is required in this area.
Example 1 Verifying the automation package installation
C:\IBM\tivoli\thinkcontrol\tools>tc-driver-manager.cmd getDriverStatus
IBM-WebSphere-App-Server
2005-08-19 13:49:09,281 INFO COPTDM001I TCDrivermanager was started.
2005-08-19 13:49:09,641 INFO COPTDM004I Config directory:
"file:C:\IBM\tivoli\thinkcontrol\config/".
2005-08-19 13:49:09,656 INFO COPTDM004I Config directory:
"file:C:\IBM\tivoli\thinkcontrol\config/".
2005-08-19 13:49:09,703 INFO COPTDM002I Driver directory: "Driver directory:
"C:\IBM\tivoli\thinkcontrol/drivers/".".
2005-08-19 13:49:13,172 INFO COPTDM005I TCDrivermanager was stopped.
installed
Ensure that you have the latest versions of the automation packages. You can
download them from the On Demand Automation Catalog Web site at:
http://www.ibm.com/software/ondemandcatalog/automation
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
11
At the time of writing this paper, both IBM Automation Package for WebSphere
Application Server and IBM Automation Package for IBM DB2 were at level
3.1.0.1.1354.65, which includes the Tivoli Intelligent Orchestrator Version 3.1 Fix
Pack 1 updates.
The On Demand Automation Catalog main page supports fast-path navigation
directly to the needed automation package. For example, the navigation code for
IBM Automation Package for WebSphere Application Server is 1TW10101Y, and
for IBM Automation Package for IBM DB2, the navigation code is 1TW10101P.
Automation packages are installed using the
%TIO_HOME%\tools\tc-driver-manager.cmd installDriver <packageName>
command. After this completes successfully, use the getDriverStatus option to
check the status again, verifying that your installation completed correctly.
There are also other files included with the automation package, such as
configuration templates, workflows, Jacl files, and documentation. It is good
practice to verify the existence of these as well after the automation package has
been installed and passed verification as an additional validation step.
At this point, no more configuration is required to the automation packages until
later in this paper when we describe how to use the prerequisite package
components for our DCM customization and workflows development for the
Trade3 automation package for our scenario.
Data center modeling
The data center model (DCM) is a repository of all physical and logical resources
that are managed by Tivoli Intelligent Orchestrator. Managed resources can be
servers, switches, applications, customers, software, and other related
equipment. It keeps track of changes made by workflows to the hardware and
software configuration and keeps the model in sync with the real-world hardware
and software assets that are associated with it.
The DCM also stores information needed for the management of resource pools
and clusters, such as server IDs, size of resource pools, number of active and
inactive servers and server priorities, and the associated templates.
The DCM information is stored in a central database controlled by Tivoli
Intelligent Orchestrator. It contains information regarding a real-life data center.
Tivoli Intelligent Orchestrator communicates directly with all components of the
data center based on the definitions in the DCM.
12
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
DCM entries can be built using an XML file and imported into the DCM database
using tools supplied with the software. To customize the existing DCM to enable
Tivoli Intelligent Orchestrator to interact and provision the Trade3 application, we
provide the following solution-specific DCM definitions:
򐂰 Customer, application, and application tiers
򐂰 Resource pool and spare servers
򐂰 Server templates for both resource pool and application tiers
򐂰 Software definitions, software installables, and software configuration
templates
򐂰 Software stacks
򐂰 Service access points
򐂰 The Tivoli Intelligent Orchestrator server itself
Note: In this paper, there are many references to the terms software definition
and software module. For our purposes, we are referring to the same Tivoli
Intelligent Orchestrator object. If you use the Tivoli Intelligent Orchestrator
GUI, you will notice the objects identified as software definitions. If you look in
the data center model XML file, you will see the objects referred to as software
modules.
Because this case study scenario assumes a preexisting DCM, definitions for
service access points and the Tivoli Intelligent Orchestrator server itself are
reused and are not shown here.
After the previous list of objects is integrated correctly into the data center model,
we use these definitions in support of the logical operations provided by the
Trade3 automation package to provision servers to the Trade3 application cluster.
Figure 6 illustrates the relationships that exist among the previously-listed objects
defined within the data center model.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
13
Resource Pool Data Center Model
Relationship
Application Tier Data Center Model
Relationship
Resource
Pool
Software
Repository
(installables)
Software
Repository
(installables)
Software
Installation
Application
Tier
Software
Repository
(installables)
Software
Installation
Server
Template
Software
Installation
Software
Repository
(installables)
Software
Installation
Server
Template
Software
Stack 2
Software Module 2A
Template Types:
Installation
Instance
Application-Data
Configuration
Place Holder
Foreign Config
Feature
Software
Stack 1
Software Module 1A
Template Types:
Installation
Instance
Application-Data
Configuration
Place Holder
Foreign Config
Feature
Software Module 2B
Software Module 1B
Template Types:
Installation
Instance
Application-Data
Configuration
Place Holder
Foreign Config
Feature
Template Types:
Installation
Instance
Application-Data
Configuration
Place Holder
Foreign Config
Feature
Figure 6 Data center model object relationships
Based on Figure 4 on page 7, we need to create entities in the DCM that will
represent our application topology. According to the guidelines presented in
Figure 6, we need to define a customer and an application. This application
contains three tiers that will also be defined in the DCM. For the example
presented in this paper, we are only concerned with the tier in which our sample
application runs: the Web Application Server tier. Later, we define a server
template and associate that server template with the Web Application Server tier.
The server template will identify the required software for the application. This is
accomplished by defining a software stack, adding software modules to the
stack, and associating the software stack to the server template.
14
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
In addition to software module definition for the Trade3 application itself, software
modules for WebSphere Application Server and DB2 Universal Database will be
defined because they are requirements for our sample J2EE application. They
will be assigned to the software stack definition of our application tier server
template. Each software module definition will have configuration templates that
contain the attributes used to install and configure the software. The software
modules will also have an installation defined pointing to the location of the
software installables.
In addition, we need to define a server template for the resource pool for our
scenario. In the same fashion as we described earlier, the template is used to
ensure that the servers in this resource pool have WebSphere Application Server
and DB2 Universal Database installed. This means that they require only the
installation and configuration of Trade3 when provisioned to our application tier.
Figure 7 illustrates our goal for our application tier definition.
Figure 7 Trade3 DCM object relationships
The following sections provide details about the DCM definitions for our case
study scenario.
Customers, applications, and application tier definitions
Tivoli Intelligent Orchestrator requires that certain objects defined to the DCM to
enable management of the environment and to enable provisioning. The DCM
maintains information about relationships between the different definitions when
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
15
added to configurations or objects, so the proper information will be used
whenever a provisioning operation is initiated.
Customers
In Tivoli Intelligent Orchestrator, a customer is defined as an organization that is
associated with one or more applications managed by your data center.
For our scenario, we performed a single customer definition in our data center,
called SalesCustomer. This customer definition is used to host the managed
application and the three application tiers. We describe these in the following
sections.
Applications
In Tivoli Intelligent Orchestrator, applications consist of groups of servers that run
the different levels of the application. For example, the three layers of the Trade3
application run HTTP, the Web application, and database services. The
applications’ priority can be set to help influence decisions concerning
orchestration.
In our scenario, we defined one application, called Trade3. The application
contains three tiers, discussed in the following section.
Application tiers
In Tivoli Intelligent Orchestrator, application tiers are groups of managed servers
that run the separate tiers, or levels, of an application. An application tier can
contain both dedicated servers assigned specifically to the tier or overflow
servers provisioned from a resource pool.
The application tier definitions we create for our scenario are used to integrate an
existing application (Trade3) into our data center model. In this case, we define
three application tier entries in the DCM to support each of the three tiers in our
Trade3 application. These tier definitions contain dedicated servers at the time
they are created, because we are mirroring the preexisting application
infrastructure.
The application tires for our case study scenario are:
򐂰 Trade3 Web Servers
򐂰 Trade3 DB Servers
򐂰 Trade3 WebAPPL Servers, which is the focus of our scenario
Example 2 shows the XML used for our data center model customer, application,
and application tier definitions. You will notice in the XML that the application tiers
are referenced as clusters. This is the only place this occurs.
16
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
In the following example, the &win-saps entry is a pointer to the service access
point definitions, which are in a different section of our XML file for organizational
purposes only.
Example 2 Customer, application, and application tier definitions
<customer name="SalesCustomer">
<application name="Trade3" priority="1" locale="en_US">
<cluster name="Trade3 Web Servers" min-servers="1" max-servers="9"
managed="true" is-device-model="Simulator" locale="en_US">
<with-load-balancer name="Load Balancer 1"/>
<server name="TradeWebSrv01" locale="en_US">
<nic connected-to-switch="CISCO1" connected-to-module="fa0"
connected-to-port="9" management="true">
<network-interface name="Local Area Connection"
ipaddress="9.3.5.244" netmask="255.255.255.0" />
</nic>
&win-saps;
</server>
</cluster>
<cluster name="Trade3 WebAPPL Servers" min-servers="1" max-servers="9"
pool="WAS51 Pool" managed="true" is-device-model="Simulator"
locale="en_US">
<with-load-balancer name="Load Balancer 1"/>
<server name="prov002" locale="en_US">
<nic managed="false" connected-to-switch="CISCO1"
connected-to-module="fa0" connected-to-port="10">
<network-interface name="Management" ipaddress="9.3.5.32"
netmask="255.255.255.0" management="true"/>
</nic>
&win-saps;
</server>
<server name="prov003" locale="en_US">
<nic managed="false" connected-to-switch="CISCO1"
connected-to-module="fa0" connected-to-port="4">
<network-interface name="Management" ipaddress="9.3.5.22"
netmask="255.255.255.0" management="true"/>
</nic>
&win-saps;
</server>
</cluster>
<cluster name="Trade3 DB Servers" min-servers="1" max-servers="2"
managed="false" is-device-model="Simulator" locale="en_US">
<with-load-balancer name="Load Balancer 1"/>
<server name="TradeDBSrv01" locale="en_US">
<nic connected-to-switch="CISCO1" connected-to-module="fa0"
connected-to-port="11" management="true">
<network-interface name="Local Area Connection"
ipaddress="9.3.5.242" netmask="255.255.255.0" />
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
17
</nic>
&win-saps;
</server>
</cluster>
<objective-analyzer
</application>
</customer>
type-name="TIO capacity-on-demand"/>
Later in this paper, we define a server template and software definitions. We then
associate these definitions with the Trade3 WebAPPL Servers application tier so
that the correct software and configuration settings are applied to the servers that
will eventually get provisioned to this tier of the application.
Resource pool definitions
Resource pools are a core part of any provisioning operation. A resource pool is
a group of unallocated servers assigned to a specific application tier or tiers.
When it is deemed necessary, either manually or by the Workload Manager,
applications can receive the resources they need by allocating one or more of the
available servers to the application tier in need. This causes Tivoli Intelligent
Orchestrator to update the status of those resources allocated in the DCM,
preventing them from being used elsewhere. When the workload monitor or
another process decides they are no longer needed, they can be deprovisioned
and returned to the resource pool to be used again.
For our scenario, we define the resource pool as a pool of physical servers that
are available for deployment into our Trade3 WebAPPL Servers application tier.
Example 3 shows the XML we used to define the WAS51 Pool to our data center
model.
Example 3 Resource pool definition
<spare-pool name="WAS51 Pool" os-type="windows" locale="en_US">
<server name="prov004" locale="en_US">
<nic managed="false" connected-to-switch="CISCO1"
connected-to-module="fa0" connected-to-port="5">
<network-interface name="Management" ipaddress="9.3.5.24"
netmask="255.255.255.0" management="true"/>
</nic>
&win-saps;
</server>
<server name="prov005" locale="en_US">
<nic managed="false" connected-to-switch="CISCO1"
connected-to-module="fa0" connected-to-port="6">
<network-interface name="Management" ipaddress="9.3.5.25"
netmask="255.255.255.0" management="true"/>
</nic>
18
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
&win-saps;
</server>
<server name="prov006" locale="en_US">
<nic managed="false" connected-to-switch="CISCO1"
connected-to-module="fa0" connected-to-port="7">
<network-interface name="Management" ipaddress="9.3.5.222"
netmask="255.255.255.0" management="true"/>
</nic>
&win-saps;
</server>
<server name="prov007" locale="en_US">
<nic managed="false" connected-to-switch="CISCO1"
connected-to-module="fa0" connected-to-port="8">
<network-interface name="Management" ipaddress="9.3.5.31"
netmask="255.255.255.0" management="true"/>
</nic>
&win-saps;
</server>
</spare-pool>
Later, the servers in the WAS51 Pool resource pool are associated with a server
template that has a software stack associated with it. This software stack
contains two software modules, or definitions: WebSphere Application Server,
and IBM DB2 for Windows. This ensures that the servers have already been
prepared, based on that template, with the required basic software for our Trade3
application. This allows for much faster deployment when the need arises, but
also keeps the resource pool generic enough to allow the servers to be used for
many different situations.
Software definitions
Software definitions are used in the DCM to identify basic information about a
piece of software, for example, operating systems, software patches, and
software products. This is known as a software module in the DCM XML file. You
can then associate one or more installable files with the software definition.
These installables will contain information about where in the software repository
the correct installation files are stored. In cases where multiple installable files
are configured, it is necessary to define adequate requirements to ensure that
Tivoli Intelligent Orchestrator selects the correct installable file for deployment.
You can also include more granular information, called requirements, including
dependencies and options, such as operating system family and version, to
ensure that deployment will occur on adequate hardware for the particular
module.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
19
Software definitions also allow the definition of configuration templates, which
provide information needed to install and configure software. Configuration
templates can contain many parameters for both the installation and for the
runtime of the product. Configuration templates enable a hierarchical definition.
Child templates can be defined under a parent resource template to add
additional features, such as the ability to start and stop instances of installed
software.
The name of the software definitions used in our scenario for the Trade3
application are:
򐂰
򐂰
򐂰
򐂰
DB2 for Windows
IBM WebSphere Application Server Network Deployment
IBM WebSphere Application Server
TRADE3
DB2 for Windows
IBM DB2 is used as the back-end database for our Trade3 application. We use
Version 8.2 for our scenario, with one main server and clients connecting using
the DB2 client software on the other machines.
In Figure 8, you will see the software definition we added to our DCM to use with
our Trade3 scenario. The bottom section contains the configuration template
information. Notice the main, or parent, template and the child templates below it.
In Tivoli Intelligent Orchestrator, the parent template for software definitions must
be of the installation type.
20
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
Figure 8 DB2 for Windows Software Definition and Configuration Template
IBM WebSphere Application Server Network Deployment
software definition
IBM WebSphere Application Server Network Deployment was used to build the
application cluster Trade3 originally. This was not executed with Tivoli Intelligent
Orchestrator. However, for the future deployment of nodes to and from that
existing application cluster, the WebSphere Application Server Network
Deployment commands will be used by the workflows that perform these tasks.
The workflows need to collect information about the WebSphere Application
Server Network Deployment software installation defined in the DCM, such as
installation path and location of the Jacl scripts.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
21
Figure 9 shows our case study scenario software definition for IBM WebSphere
Application Server Network Deployment and its required installation
configuration template.
Figure 9 Network Deployment Software Definition and Configuration Template
IBM WebSphere Application Server software definition
IBM WebSphere Application Server is required for our scenario, because it is the
engine for running our J2EE application, Trade3. This is the definition for the
WebSphere Application Server software that will be deployed to all subsequent
nodes provisioned to our Trade3 application cluster. The configuration template
for this product contains information to enable workflows to collect information
about the WebSphere Application Server installation on those servers and other
information specific to the Trade3 application cluster itself, such as the host
name, SOAP port, and management port of the WebSphere Application Server
Network Deployment server.
Figure 10 shows our case study scenario software definition for IBM WebSphere
Application Server and its required installation configuration template.
22
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
Figure 10 IBM WebSphere Application Server Software Definition and Configuration Template
TRADE3 software definition
The Trade3 application is the core of our scenario. It is the J2EE application we
deployed to our application cluster, and this software definition identifies the
product that will be deployed to all other servers provisioned to this application
cluster. As shown in Figure 11, you can see the two different versions of the
software available for deployment in the Installable Files section. This definition is
useful for future use, in case we need to add a new servers running the Linux®
operating system to the resource pool assigned to the application tier
representing the Web application servers for the Trade3 application.
Also, all of the information required to successfully deploy this application is
defined in the installation Configuration Templates section. Specifically, we
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
23
defined configuration parameters for the existing Trade3 application cluster. For
example, we define database configuration information such as the database
server host name, port number, and instance owner. We also provide JDBC
configuration attributes such as the location of the JDBC driver and the name of
the data source.
Another important piece of configuration information is the location of the Jacl
scripts for the provisioning tasks. These scripts will be used by a series of
wsadmin command calls during the workflows executions.
Figure 11 TRADE3 Software Definition and Configuration Template
Later in this paper, we create an automation package that provides operations for
manipulating this software. After the automation package is installed on the Tivoli
Intelligent Orchestrator server, it defines a new device driver that must be
associated to this software definition. The device driver will implement a logical
operation and workflow implementation for installing this software product on
target servers.
24
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
Software stacks
A software stack is a grouped set of software, organized in the correct installation
order. Tivoli Intelligent Orchestrator uses software stacks to install multiple
products, patches, or even other stacks onto servers to prepare them for
provisioning into production.
Each module, when included in a software stack, will have a cloned version of the
original software configuration template defined in the software stack entry in the
DCM. This enables additional customization of the software in relation only to the
particular stack with which you are currently concerned. Because the cloned
configuration template and the original configuration template have unique IDs in
the DCM, changes made to one will not be reflected in the other. In other words,
changing attributes in the configuration template of the software stack does not
change the configuration template defined in the software module definition.
For our scenario, we defined two software stacks to support our sample
application environment:
򐂰 A software stack to be associated to the server template for our resource pool
(WAS51 Pool resource pool) so that it is in a ready state for faster deployment
into a J2EE environment by having most of the requisite software installed for
our particular scenario
򐂰 A second software stack, named Trade3_Software_Stack, to be associated to
the server template of our application tier (Trade3 WebAPPL Servers
application tier) to provide the proper software for the installation and
configuration of the Trade3 application
Figure 12 shows the software stack definition and associated software required
for Trade3, along with the iterator installable. The iterator is a function in Tivoli
Intelligent Orchestrator that allows multiple pieces of software to be installed by
“looping” through the list of modules in the stack. This is the reason that the
objects need to be added to the stack in the correct installation order. The iterator
is only required when multiple modules have been associated with a software
stack.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
25
Figure 12 The Trade3 Software Stack
After we create our software stack for Trade3 and associate the required software
to it, we see the configuration template for the software stack that Tivoli Intelligent
Orchestrator creates by cloning the parent templates originally created for the
software definition. At this time, if required, these templates can be customized to
reflect the needs of this particular stack.
However, if a required parameter is altered or added to the configuration
template for a software definition after it has been added to a software stack,
changes made in the original configuration template will not be present on the
cloned template for the software associated to the stack. It is important to
remember this as you move forward creating software stacks for your particular
environment, because changes to these parent templates will require you to
remove and then add again the affected software definition to your previously
created software stacks if you want the changes to exist in them as well.
In Figure 13, part of the configuration template for our Trade3 software stack is
shown. All of the listed parameters were acquired in the cloning of the template
from the parent software definition we created. Notice that the names of the
configuration templates listed all have numbers appended to the names,
26
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
indicating that they are clones of the original. This is where the configurations for
each software stack can be edited without impacting any parent or other software
stack using a clone of the same parent.
Figure 13 Cloned Configuration Template for Trade3 software stack
Define server templates
Server templates are used in Tivoli Intelligent Orchestrator to provide software,
storage, and network information to the manager so that after servers are
associated with a template for a resource pool or application tier, the software
applications and software configurations provided by the template will be
preinstalled and configured as defined by the template, putting the server in the
desired state for provisioning based on the location of the server.
For our Trade3 scenario, we defined two server templates:
򐂰 A server template for the application tier Trade3 WebAPPL Servers of the
Trade3 application. This server template has the Trade3_Software_Stack
software stack defined in the previous section associated to it.
򐂰 A second server template for the WAS51 Pool resource pool.
The server template shown in Figure 14 shows the Trade3_Server_Template
defined in the data center model. Under Software Definition, you will see how we
associated the Trade3_Software_Stack to the template, confirming that any
server brought into the application tier will have the modules and configurations
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
27
defined by that software stack applied to them. Notice also that if required, routes
and network information can be provided here as well. Storage templates can
also be associated here if required.
Figure 14 Trade3 Server Template
Also in Figure 14, on the Workflows tab, we associate the device driver for the
provisioning operations. This device driver will be part of an automation package
created exclusively for our case study scenario. The following sections of this
paper concentrate on the development of this automation package.
Workflow design and development
Workflows are a key component for provisioning. They can be used for gathering
information about an instance, installation, a piece of hardware, or any other
object defined to the DCM that will be acted upon. A workflow can then use this
information to perform defined tasks. Workflows are simple, structured programs
with a number of constructs to manage data center components. They can be
very complex and long, in which a workflow executes many other workflows to
perform the desired operation, or they can be as simple as one command to
check the status of a machine with a ping. It is critical that workflows be planned,
defined, and structured correctly to ensure that provisioning can occur in support
of a predefined working process.
28
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
Note: It is not our intention to teach you how to develop workflows in this
paper. This is beyond the scope of this paper. For more information about
developing workflows, refer to IBM Tivoli Provisioning Manager 3.1.0
Workflow Developer's Guide, GC32-1662.
For our scenario, there are a number of workflows required to fully integrate our
J2EE application into Tivoli Intelligent Orchestrator to enable provisioning. Some
workflows will gather required information from the data center model, such as
server IDs, resource template IDs, and configuration parameters from software
definitions. Others workflows will use this information to perform logical
operations or execute commands, for example, interfacing with the WebSphere
Application Server wsadmin command, executing IBM DB2 commands to catalog
database information, and using some generic UNIX® system commands, such
as the wget command.
The chart in Table 1 lists the workflows used in our scenario and describes the
function performed by each one. These workflows are part of an automation
package for Trade3 we create and install later in the paper.
Table 1 Workflows developed for Trade3 application
Workflow
Description
_T3_Install_Ping_NDM
Verifies that the WebSphere Application Server
Network Deployment manager is functioning before
installation begins.
_T3_Install_Collect_Trade3DB_Attributes
Gets the required attributes related to database
settings from the configuration template for the Trade3
software definition.
_T3_Install_DB2Catalog
Catalogs the database on the target machine.
_T3_Install_Get_NDM_Server_Attributes
Gets the required server attributes from the
configuration template defined for the WebSphere
Application Server Network Deployment software
definition.
_T3_Install_Get_NDM_Software_Attributes
Gets the required software attributes from the
configuration template defined for the WebSphere
Application Server Network Deployment software
definition.
_T3_Install_AddNodetoCell
Adds the new node to the existing WebSphere
Application Server cell.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
29
Workflow
Description
_T3_Install_Execute_Wsadmin
Provides the bridge from Tivoli Intelligent Orchestrator
to the WebSphere Application Server wsadmin
command.
_T3_Install_Get_Trade3_Attributes
Gets the required software attributes from the
configuration template defined for the Trade3 software
definition.
_T3_Install_AddNodetoWASCluster
Adds the new node to the Trade3 application cluster.
_T3_Install_JDBCResourcetoWAS
Adds the JDBC resource to WebSphere Application
Server for Trade3.
_T3_Install_AddJMSResourcetoWAS
Adds the JMS resource configuration in WebSphere
Application Server for the new node.
_T3_Install_Collect_Trade3Stack_TemplateIDs
Collects the IDs of the configuration templates defined
for Trade3_Software_Stack.
_T3_Install_Restart_Node
Restarts the new node manager to activate the new
settings.
_T3_Install_Start_AppServer
Starts the WebSphere Application Server on which the
Trade3 application runs after all the installation steps
are complete.
_T3_Install_Ping_Trade3
Verifies that the Trade3 application is active after the
installation is complete.
_T3_Install_Complete_Process
Executes the entire provisioning process of the Trade3
application into the existing application cluster.
_T3_Uninstall_Remove_Node
Removes the node from the WebSphere Application
Server application cluster during deprovisioning.
_T3_Uninstall_Remove_DB2Catalog
Removes the database node and database catalog
information during the deprovision process.
_T3_Uninstall_Complete_Process
Executes all of the _T3_Uninstall workflows in the
correct order to deprovision a node from the
WebSphere Application Server cluster.
Getting access to the target server
From the list in Table 1, it is obvious that in order to install the Trade3 application,
we need to perform certain operations on the target server itself. Among these
are copying files and executing commands. In order to gain access to the target
server, a service access point (SAP) has to be defined for the target server. This
SAP defines the credentials to be used for specific protocols used to facilitate the
various types of actions performed against the target system.
30
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
As part of the preparation of the servers in the resource pool (WAS51 Pool
resource pool in our environment) supporting our Trade3 application, default
credentials have been defined in the service access point for each server.
In the following sections, we describe the functions of the workflows defined in
Table 1 in greater detail and the relationships between them.
The _T3_Install_Ping_NDM workflow
This workflow verifies that the WebSphere Application Server Network
Deployment server is started prior to beginning the process of deploying a new
server to the application cluster.
The main operations of this workflow are:
1. Gathers data.
2. Sets up the command to be executed.
3. Executes the wget command to verify that the WebSphere Application Server
Network Deployment administrative console is active.
The _T3_Install_Collect_Trade3DB_Attributes workflow
This workflow acquires the information needed to successfully catalog the
database on the target server in preparation for the Trade3 application
installation.
This workflow is called from the following workflow:
򐂰 _T3_Install_DB2Catalog
The main operation is:
򐂰 Creates an array and inserts the required DCM information into it, based on
the supplied software resource template ID.
The _T3_Install_DB2Catalog workflow
This workflow creates the local database catalog on the new server for use as a
JDBC resource in WebSphere Application Server.
The main operations are:
1. Gathers data from the configuration templates.
2. Prepares the commands to be executed.
3. Executes the command to locally catalog the database server node and
database on the target server.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
31
The _T3_Install_Get_NDM_Server_Attributes workflow
This workflow gathers required information about the WebSphere Application
Server Network Deployment server managing the existing Trade3 application
cluster.
This workflow is called from:
򐂰 _T3_Install_AddNodetoCell
򐂰 _T3_Install_AddNodetoWASCluster
򐂰 _T3_Install_JDBCResourcetoWAS
򐂰 _T3_Install_AddJMSResourcetoWAS
򐂰 _T3_Install_Ping_NDM
The main operations are:
1. Queries the supplied configuration template ID for the WebSphere Application
Server Network Deployment server’s name.
2. Uses that information to acquire the server ID with the DCMQuery command.
The _T3_Install_Get_NDM_Software_Attributes workflow
This workflow gathers information about the software running on the WebSphere
Application Server Network Deployment server managing the existing Trade3
application cluster.
This workflow is called from:
򐂰 _T3_Install_AddNodetoCell
򐂰 _T3_Install_Ping_NDM
The main operation is:
򐂰 Gathers information about the software running on the WebSphere
Application Server Network Deployment server.
The _T3_Install_AddNodetoCell workflow
This workflow adds the new server being provisioned to the WebSphere cell
containing the Trade3 application cluster.
The main operations are:
1. Gathers data through the _T3_Install_Get_NDM_Software_Attributes and
_T3_Install_Get_NDM_Server_Attributes workflows to format the command
to add the new server to the existing cell.
2. Executes the command to add the new server to the existing cell.
32
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
The _T3_Install_Execute_Wsadmin workflow
This workflow provides the interface from Tivoli Intelligent Orchestrator to
WebSphere Application Server.
We created this workflow by modifying the workflow
IBMWAS_Execute_Wsadmin, which is provided by the WebSphere Application
Server automation package. We simplified and adapted the
IBMWAS_Execute_Wsadmin workflow to run on a Windows environment.
This workflow is called from:
򐂰 _T3_Install_AddNodetoWASCluster
򐂰 _T3_Install_JDBCResourcetoWAS
򐂰 _T3_Install_AddJMSResourcetoWAS
The main operations are:
1. Gathers required information to execute the wsadmin command. This includes
arguments for the wsadmin command such as Jacl scripts.
2. Executes the wsadmin command using acquired arguments.
The _T3_Install_Get_Trade3_Attributes workflow
This workflow gathers required installation parameters for the Trade3 application
from a configuration template.
This workflow is called from:
򐂰 _T3_Install_AddNodetoWASCluster
򐂰 _T3_Install_JDBCResourcetoWAS
򐂰 _T3_Install_AddJMSResourcetoWAS
򐂰 _T3_Install_Ping_Trade3
The main operations are:
1. Gathers data.
2. Creates an array and inserts information into the array to be used for the
Trade3 application installation and configuration.
The _T3_Install_AddNodetoWASCluster workflow
This workflow uses the information acquired by the NDM attribute workflows
described earlier to add the new machine being provisioned to the existing
Trade3 application cluster.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
33
The main operations are:
1. Gathers data.
2. Prepares the command and arguments that will be used to add the node to
the existing Trade3 application cluster.
3. Executes the AddNode command to add the node to the cluster.
The _T3_Install_JDBCResourcetoWAS workflow
This workflow configures a JDBC resource for use by the new server being
provisioned. If the JDBC resources have been defined at a cell level during the
original installation of the Trade3 application cluster, this step might not be
necessary.
The main operations are:
1. Gathers data.
2. Prepares arguments for the wsadmin command.
3. Calls the _T3_Install_Execute_Wsadmin workflow and provides the
arguments to add the JDBC resource on the target server.
The _T3_Install_AddJMSResourcetoWAS workflow
This workflow adds JMS services required for Trade3 to the WebSphere
configuration.
The main operations are:
1. Gathers data.
2. Prepares arguments for the wsadmin command.
3. Calls the _T3_Install_Execute_Wsadmin workflow and provides the
arguments to add the JMS resource on the target server.
The _T3_Install_Collect_Trade3Stack_TemplateIDs workflow
This workflow gathers the IDs of the configuration templates defined for the
Trade3_Software_Stack software stack.
The main operations are:
1. Performs a DCMQuery command to obtain an array containing all the cloned
configuration template IDs for the software stack.
2. Collects the IDs of the configuration templates of interest to the particular
operation.
34
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
The _T3_Install_Restart_Node workflow
This workflow restarts the node manager on the server being provisioned to
ensure that all the configuration changes made are available to the Trade3
application.
The main operations are:
1. Using the device ID of the new server, runs a simple command to stop the
node agent.
2. Using the same device ID, runs a command to start the node agent.
The _T3_Install_Start_AppServer workflow
This workflow ensures that the IBM WebSphere application server on which the
Trade3 application runs is started after the deployment completes.
The main operations are:
1. Gathers data.
2. Prepares the startServer command arguments.
3. Executes the WebSphere Application Server startServer command.
The _T3_Install_Ping_Trade3 workflow
This workflow verifies that the Trade3 application is up and running after the
deployment is complete and the application server has been started.
The main operations are:
1. Gathers data.
2. Prepares arguments for the command to be executed.
3. Executes a wget command with arguments to verify the Trade3 operation on
the new server.
4. Executes the wget command to verify that the Trade3 application is running
and its URL is active.
The _T3_Install_Complete_Process workflow
This workflow provides the framework for the entire provisioning process of the
Trade3 application into the existing application cluster.
This workflow implements the SoftwareInstallable.Install logical operation.
The main operations are:
1. Gathers data.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
35
2. Calls other workflows in the proper order to complete the provisioning
operation.
The _T3_Uninstall_Remove_Node workflow
This workflow removes the provisioned WebSphere Application Server node
from the Trade3 application cluster when it is no longer needed.
This workflow is called from:
򐂰 T3 Uninstall Complete Process
The main operations are:
1. Gathers data.
2. Prepares arguments.
3. Executes the removeNode command on the provisioned server to remove the
node from the cluster of which it is a member.
The _T3_Uninstall_Remove_DB2Catalog workflow
This workflow removes the database node and database catalog settings from
the target server during the deprovisioning operation.
This workflow is called from:
򐂰 _T3_Uninstall_Complete_Process
The main operations are:
1. Gathers data.
2. Prepares arguments for the commands to be executed.
3. Executes the commands on the target server to remove the database and
node catalog to clean up during the deprovisioning process.
The _T3_Uninstall_Complete_Process workflow
This workflow combines the operations of both of the other uninstall workflows so
that no interaction is required to complete the process.
The main operations are:
1. Gathers data.
2. Calls other workflows in the proper order to complete the deprovisioning
operation.
36
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
Automation package assembly and installation
The current implementation of an automation package contains the binaries and
metadata information that is related to specific objects in the DCM. In this
scenario, these objects represent the entire infrastructure defined for the Trade3
application cluster in our DCM. In this section, we present the required tasks to
create an automation package for the provisioning and deprovisioning of Trade3
in our environment.
As per the IBM Tivoli Provisioning Manager 3.1.0 Workflow Developer's Guide,
GC32-1662, guidelines, the following activities must be completed before
creating the automation package for our Trade3 application:
1. Define the processes for installing the software and any other operations that
are required for provisioning and deprovisioning the application.
2. Create the software definition, installable file, and the file repository that
stores the software package in the DCM.
3. Create the workflows for the identified procedures.
4. Determine the device models.
5. Create the automation package.
At this stage in our scenario, we already performed steps 1, 2, and 3, as
described in earlier sections.
The automation package has to provide a new device model for the Trade3
application. We named our device model ITSO_Trade3_Web_Application and
chose to define this new device model under the Software Products device
model category. The ITSO_Trade3_Web_Application device model implements
the SoftwareInstallable.Install logical operation.
Now, we are ready to create the automation package. To accomplish this task,
we use the Automation Package Development Environment (APDE), a plug-in for
Eclipse. To view the instructions for installing the APDE, see the Tivoli Intelligent
Orchestrator Information Center at:
http://publib.boulder.ibm.com/infocenter/tivihelp/v3r1/index.jsp?toc=/com.i
bm.tivoli.tio.doc/tio_nav.xml
After the APDE is installed, you can follow the instructions for creating a new
project. When the project has been created, you can add workflows to the project
either by creating them within the APDE, or by importing them from files you have
saved somewhere else if you have created them previously using a text editor or
the Tivoli Intelligent Orchestrator workflow composer.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
37
After all of the required files for your automation package are present within the
project and tested, you can build your automation package file. You begin this
process by right-clicking the build.xml file in your project, selecting Run, and
then selecting the second Ant Build from the menu. After the Modify attributes
and launch window opens, as shown in Figure 15, you can select the required
options and attributes, and then click Run to build the automation package file.
Figure 15 also shows the APDE with our workflows for the Trade3 scenario prior
to building the automation package file.
Figure 15 Automation Package Development Environment
In Figure 16, we show the APDE workspace post-Ant Build process. You can
now see that in the left pane at the bottom of our project we have an automation
package for Trade3, named ITSO_TRADE3_310.tcdriver.
38
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
The automation package file now can be installed onto a working Tivoli Intelligent
Orchestrator server for use. In the right pane of Figure 16, we show a portion of
the manifest file created by the Ant Build process. This file identifies all the
requirements and characteristics of the automation package. It lists the scripts,
workflows, and any other files you need to include with the installation of the
package and the final destination of the files. It also includes the device model
definitions that need to be implemented by this package.
Figure 16 Automation Package Development Environment with ITSO_TRADE3_310 driver built
This automation package file can be installed either using the APDE or using the
automation package manager, described in “Prerequisite automation packages
verification” on page 10.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
39
Scenario execution
In this section, we show an execution of a provisioning operation of a server to
the Trade3 application cluster described in “Scenario overview” on page 2. This
is done in accordance to our scenario implementation description shown in “Our
intent” on page 3.
During our initial setup and configuration, we created entries in our data center
model for our J2EE application, which we describe in “Data center modeling” on
page 12. One of the steps we completed was the definition of the Trade3
application. This application contains three tiers, one of which is the Trade3 Web
APPL Servers application tier, the focus of this scenario. This application tier has
a simulator device model associated with it from the initial setup. After the
automation package is completed and installed, we have to change the device
model association for our application tier to be the one used to perform the
operations that provision the server to the application tier and implement the
Cluster.AddServer logical operation. Also, the workflows that perform the
installation of the Trade3 application must be associated to this application tier.
In this section, we provide information and screen captures that document the
process to provision a server into the Trade3 application tier.
As mentioned in “Software definitions” on page 19, we also changed the
TRADE3 software definition by associating the device driver
ITSO_Trade3_Web_Application to the software installable definitions of the
Trade3 software module, as shown in Figure 17. This association enables Tivoli
Intelligent Orchestrator to perform installations of Trade3 software using the
SoftwareInstallable.Install logical operation implemented by the
_T3_Install_Complete_Process workflow.
Figure 17 shows a device driver association to the Trade for Windows software
installable definition of the TRADE3 software definition.
Figure 17 Device driver association
Figure 18 shows the Trade3 WebAPPL Servers tier. The tier is shown in its
original state, without any provisioning operation being performed. It contains
40
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
only the two original dedicated servers, as shown in “Scenario overview” on
page 2.
Notice the locks on the icons and the lack of resource pool identifiers, confirming
their status as dedicated to this particular tier.
Figure 18 Trade3 Application Tier before provisioning action
Figure 19 shows the members of the TradeCluster defined in the WebSphere
Application Server cluster. You can see the cluster called TradeCluster and its
members before any provisioning operations have occurred. It shows the two
original members of the cluster configured during the initial installation of the
clustered Trade3 application environment.
Figure 19 WebSphere TradeCluster members before provisioning operation
Figure 20 shows the WAS51 Pool resource pool, also in its original
preprovisioning state. These are the servers that have been made available to
our J2EE application server tier for provisioning.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
41
Figure 20 The WAS51 Resource Pool
The provisioning operation of a server into the Trade3 application cluster begins
when the cluster workload reaches a predetermined utilization threshold.
As Tivoli Intelligent Orchestrator identifies the server or servers to be provisioned
from the defined resource pool to the respective application tier, Tivoli Intelligent
Orchestrator starts the execution of workflows associated to the device driver
assigned to the application tier. In our environment, these include the workflows
developed for provisioning Trade3 into our WebSphere Application Server
application cluster.
It is important to notice that all operations executed by these workflows are
based on information gathered from the DCM, such as software module
definitions, software configuration templates, and software installation definitions.
The provisioning of the Trade3 application is triggered by the
_T3_Install_Complete_Process workflow. This workflow starts by executing
cluster verification tasks such as the verification of an active WebSphere
Application Server Network Deployment manager executing the
_T3_Install_Ping_NDM workflow.
During the provisioning process, the _T3_Install_Complete_Process workflow
executes several operations, including access to the database for the Trade3
application. This is accomplished by cataloging the proper node and database
using the _T3_Install_DB2Catalog workflow. Example 4, shows the both the
node and the database catalog that now exist on our target server, prov004.
42
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
Example 4 DB2 catalogs created by the workflow for Trade3
C:\IBM\SQLLIB\BIN>db2 list database directory
System Database Directory
Number of entries in the directory = 1
Database 1 entry:
Database alias
Database name
Node name
Database release level
Comment
Directory entry type
Catalog database partition number
Alternate server hostname
Alternate server port number
=
=
=
=
=
=
=
=
=
TRADE3DB
TRADE3DB
PROV003
a.00
Remote
-1
C:\IBM\SQLLIB\BIN>db2 list node directory
Node Directory
Number of entries in the directory = 1
Node 1 entry:
Node name
Comment
Directory entry type
Protocol
Hostname
Service name
=
=
=
=
=
=
PROV003
LOCAL
TCPIP
prov003
50000
Our provisioning operation proceeds by preparing the target server to become
part of the Trade3 application cluster. This is performed by two workflows:
򐂰 The _T3_Install_AddNodetoCell workflow runs the addNode command on the
target server, allowing the target server to be part of the WebSphere
Application Server controlled cell.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
43
򐂰 The _T3_Install_AddNodetoWASCluster workflow executes the wsadmin
command to add the target server to the Trade3 application cluster controlled
by the WebSphere Application Server Network Deployment manager. After
the target server is added to the Trade3 application cluster, all the software for
the cluster is also installed on the target server by WebSphere Application
Server Network Deployment, which includes the Trade3 J2EE application.
Figure 21 shows the WebSphere Application Server administrative console
again, after the provisioning operations performed by the
_T3_Install_AddNodetoCell and _T3_Install_AddNodetoWASCluster workflows
have completed. Notice the additional member now present in the TradeCluster
configuration.
Figure 21 WebSphere TradeCluster members post-provisioning operation
The next step of the provisioning process is to define the JMS resource
configuration in WebSphere Application Server for the target server. This is
accomplished by the _T3_Install_AddJMSResourcetoWAS workflow.
After completing all the configuration for both WebSphere Application Server on
the target server and WebSphere Application Server Network Deployment
manager, the node and application server running on the target server are
restarted using the _T3_Install_Restart_Node and _T3_Install_Start_AppServer
workflows, respectively.
The last step of our provisioning process is to perform a verification of the status
of the Trade3 application on the new server. The _T3_Install_PingTrade3
workflow issues a wget command against the URL of the target server on which
Trade3 is supposed to be available. If you receive a positive response, the
provisioning operation completed successfully.
After the provisioning operations complete, the Trade3 WebAPPL Servers
application tier will have an additional server or servers added to it. In Figure 22,
44
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
we show the application tier for the Trade3 application after the provisioning
operations have completed. You can now see that the server prov004 has been
allocated to the application tier.
Figure 22 Trade3 WebAPPL Servers tier with provisioned server
Tivoli Intelligent Orchestrator also performs a verification on the software
installed in the provisioned server against the server template defined for the
application tier, in this case, the template Trade3_Server_Template. Figure 23
shows the result of the verification, displaying the provisioned server software
resources in compliance with the server template after the provisioning
operation.
Figure 23 Software compliance verification
At this point, no further action is necessary. The Trade3 application cluster now
has an additional server configured and available to assist with the additional
load as it is needed. This change has been recorded by both WebSphere
Application Server Network Deployment and Tivoli Intelligent Orchestrator, and
the information is presented by both correctly in real time.
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
45
When the need no longer exists, or when we decide the application tier is no
longer required, the server can be deprovisioned using the workflows that we
described in Table 1 and “Workflow design and development” on page 28. In this
case, the target server will then be returned to the respective resource pool,
where it can used again when the need arises.
46
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
The team that wrote this Redpaper
This Redpaper was produced by a team of specialists from around the world
working at the International Technical Support Organization, Austin Center.
Edson Manoel is a Certified IT Specialist at IBM working in the ITSO, Austin
Center, in the systems management area. Prior to joining the ITSO, Edson
worked in the IBM Software Group, Tivoli Systems, and in IBM Brazil Global
Services Organization. He was involved in numerous projects in designing and
implementing systems management solutions for IBM clients and Business
Partners. Edson holds a Bachelor of Science degree in applied mathematics
from Universidade de Sao Paulo, Brazil.
Dan LaDore is a Systems and Network Administrator on the WebAhead team,
which is under the CIO. He has been helping WebAhead spread advanced
Internet technology throughout IBM for more than six years. Dan is responsible
for maintaining the infrastructure in the WebAhead lab in Southbury, CT. A large
part of this includes supporting and monitoring WebAhead’s many applications. It
also includes designing, building, and supporting an infrastructure that keeps the
WebAhead lab up to date technologically, including all server and network
hardware and software. Before moving to the WebAhead lab, Dan’s job was to
provide support to the Internet2 community for IBM. This included infrastructure
and demo support, and working with the IBM loaner program to provide
equipment to the universities and facilities with which IBM collaborated. Dan was
also responsible for planning demonstrations of IBM technologies at multiple
Internet2-centric trade shows and meetings.
Thanks to the following people for their contributions to this project:
Morten Moeller
ITSO Project Leader, Austin Center
Theo Winkelmann
WW Orchestration and Provisioning Technical Evangelist
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
47
Additional material
This Redpaper refers to additional material that can be downloaded from the
Internet as described here.
Locating the Web material
The Web material associated with this Redpaper is available in softcopy on the
Internet from the IBM Redbooks™ Web server. Point your Web browser to:
ftp://www.redbooks.ibm.com/redbooks/REDP4097
Alternatively, you can go to the IBM Redbooks Web site at:
ibm.com/redbooks
Select the Additional materials and open the directory that corresponds with
the Redpaper form number, REDP4097
Using the Web material
The additional Web material that accompanies this Redpaper includes the
following file:
File name
REDP4097.zip
Description
Zipped source code and executable files developed for
the examples described in the sections of this Redpaper.
System requirements for downloading the Web material
The following software configuration is required:
򐂰
򐂰
򐂰
򐂰
IBM Tivoli Intelligent Orchestrator V3.1 with Fix Pack 1 installed
IBM WebSphere Application Server V5.1
IBM DB2 Universal Database Enterprise Server Edition V8.2
IBM WebSphere Application Server Network Deployment V5.1
How to use the Web material
Create a subdirectory (folder) on your workstation, and unzip the contents of the
Web material ZIP file into this folder.
The resulting directory will contain the automation package created during the
development of this Redpaper. Follow the instructions provided in the
corresponding sections.
48
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
Notices
This information was developed for products and services offered in the U.S.A.
IBM may not offer the products, services, or features discussed in this document in other countries. Consult
your local IBM representative for information on the products and services currently available in your area.
Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM
product, program, or service may be used. Any functionally equivalent product, program, or service that
does not infringe any IBM intellectual property right may be used instead. However, it is the user's
responsibility to evaluate and verify the operation of any non-IBM product, program, or service.
IBM may have patents or pending patent applications covering subject matter described in this document.
The furnishing of this document does not give you any license to these patents. You can send license
inquiries, in writing, to:
IBM Director of Licensing, IBM Corporation, North Castle Drive Armonk, NY 10504-1785 U.S.A.
The following paragraph does not apply to the United Kingdom or any other country where such
provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION
PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer
of express or implied warranties in certain transactions, therefore, this statement may not apply to you.
This information could include technical inaccuracies or typographical errors. Changes are periodically made
to the information herein; these changes will be incorporated in new editions of the publication. IBM may
make improvements and/or changes in the product(s) and/or the program(s) described in this publication at
any time without notice.
Any references in this information to non-IBM Web sites are provided for convenience only and do not in any
manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the
materials for this IBM product and use of those Web sites is at your own risk.
IBM may use or distribute any of the information you supply in any way it believes appropriate without
incurring any obligation to you.
Information concerning non-IBM products was obtained from the suppliers of those products, their published
announcements or other publicly available sources. IBM has not tested those products and cannot confirm
the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on
the capabilities of non-IBM products should be addressed to the suppliers of those products.
This information contains examples of data and reports used in daily business operations. To illustrate them
as completely as possible, the examples include the names of individuals, companies, brands, and products.
All of these names are fictitious and any similarity to the names and addresses used by an actual business
enterprise is entirely coincidental.
COPYRIGHT LICENSE:
This information contains sample application programs in source language, which illustrates programming
techniques on various operating platforms. You may copy, modify, and distribute these sample programs in
any form without payment to IBM, for the purposes of developing, using, marketing or distributing application
programs conforming to the application programming interface for the operating platform for which the
sample programs are written. These examples have not been thoroughly tested under all conditions. IBM,
therefore, cannot guarantee or imply reliability, serviceability, or function of these programs. You may copy,
modify, and distribute these sample programs in any form without payment to IBM for the purposes of
developing, using, marketing, or distributing application programs conforming to IBM's application
programming interfaces.
© Copyright IBM Corp. 2005. All rights reserved.
49
Send us your comments in one of the following ways:
򐂰 Use the online Contact us review redbook form found at:
ibm.com/redbooks
򐂰 Send your comments in an email to:
redbook@us.ibm.com
򐂰 Mail your comments to:
IBM Corporation, International Technical Support Organization
Dept. JN9B Building 905, 11501 Burnet Road
Austin, Texas 78758-3493 U.S.A.
®
Trademarks
The following terms are trademarks of the International Business Machines Corporation in the United States,
other countries, or both:
DB2®
DB2 Universal Database™
IBM®
ibm.com®
Redbooks™
Redbooks (logo)
Tivoli®
WebSphere®
™
The following terms are trademarks of other companies:
EJB, Java, JDBC, J2EE, and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the
United States, other countries, or both.
Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States, other
countries, or both.
Intel, Pentium, Intel logo, Intel Inside logo, and Intel Centrino logo are trademarks or registered trademarks
of Intel Corporation or its subsidiaries in the United States, other countries, or both.
UNIX is a registered trademark of The Open Group in the United States and other countries.
Linux is a trademark of Linus Torvalds in the United States, other countries, or both.
Other company, product, or service names may be trademarks or service marks of others.
50
Provisioning J2EE Applications with IBM Tivoli Intelligent Orchestrator
Download