We've assumed that you have installed Microsoft Application Center 2000 (Application Center) on several test computers, and that you are familiar with:
The approach that we're going to take for building our multi-tier environment is to develop the infrastructure in two phases. In phase one we'll build and test the Web tier; in phase two we'll build and test the COM+ application tier.
We'll start by creating a simple Web cluster and running a cross-section of tests to validate the operational consistency of Application Center in this test environment.
NOTE
This section is based on the Pre-Flight Manual, which was developed by the product test team and is included on the Resource Kit companion CD. In addition to the set-up and testing process, they created the sample pages, components, and executables. They've also provided a document named "AC_PreflightCheck.doc" that provides detailed information about the configurations that the team created and tested in the lab.
First we have to create the Web cluster that serves as the front-end tier for a multi-cluster environment. After we've created and tested the Web cluster, we can move on and set up the COM+ applications, or component server cluster. Although you're not restricted to using Microsoft Windows 2000 Network Load Balancing (NLB), we'll use this load-balancing solution on the test cluster.
Before starting the cluster creation process, make sure that the following prerequisites have been met.
Prerequisites
In order to create a cluster that uses NLB for load balancing, each server should be running Windows 2000 Server or Windows 2000 Advanced Server; in either case, Service Pack 1 (SP1) and the additional hot fixes need to be installed. These hot fixes are pre-Windows 2000 SP2 and are required for Application Center to run correctly.
Each server must have two network adapters. (See Chapter 5, "Load Balancing.")
The first, or front-end, adapter handles all the public traffic between the cluster members and either Internet or intranet clients. NLB uses the front-end adapter for balancing client requests across the cluster. Since this is the first member we're configuring and it will be the cluster controller, it should have two static IP addresses bound to the adapter. The first IP address is the dedicated, or management, IP address that enables us to communicate directly with each member without using the back-end adapter. The second IP is the cluster IP address—some times referred to as the virtual IP address—which is mapped to the Web site's URL and is common to all the cluster members. All incoming client requests are directed to the cluster IP address.
The second, or back-end, adapter is used for private traffic and outbound traffic to Web clients. Application Center uses this adapter for intra-cluster communications and for supporting its features (such as cluster synchronization) transmitting Application Center heartbeats, and obtaining performance data. This adapter also carries the traffic to back-end databases and/or component servers. In addition to the Application Center cluster services traffic, a typical cluster will access the following network services via the back-end adapter: the domain controller, DHCP server, DNS server, and the Windows Internet Name Service (WINS) server. You can use either static or DHCP-provided IP addresses on the back-end adapter. In this case, we've used an IP address provided by a DHCP server.
The basic cluster configuration looks like the one shown in Figure 8.2, but without the additional member.
NOTE
The configuration in Figure 8.2 does not show additional elements of the network infrastructure, such as switches, routers, hubs, and firewalls. These elements are omitted for the sake of simplicity. All the IP addresses shown are for the purpose of illustration only.
After you've enabled your adapters and bound the IP addresses to them, you can check the adapter configuration by entering the ipconfig command at the Windows 2000 command prompt, and then pressing ENTER. You should get a display that's similar to the one that follows. Notice that we've labeled the two adapters as the "Back-end" and "Front-end"; this isn't required, but it makes it easier to keep track of adapters and their settings in a multi-adapter configuration.
Figure 8.2 Typical network adapter configuration for load-balanced (NLB) cluster members
D:\>ipconfig Windows 2000 IP Configuration Ethernet adapter Back-end: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 192.168.100.104 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.28.1 Ethernet adapter Front-end: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 192.168.100.100 Subnet Mask . . . . . . . . . . . : 255.255.255.0 IP Address. . . . . . . . . . . . : 192.168.100.102 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.28.1
Create a Web Cluster
Now that the server's been configured to function as a cluster controller, we can create the cluster.
The Connect to Server dialog box appears.
You can identify the server by providing a valid BIOS name, DNS name, or IP address.
NOTE
We logged on to the server with an account that has administrative privileges, so it's not necessary to select the Connect as check box and provide administrative credentials.
Table 8.2 lists the information we provided when creating and configuring our cluster.
Table 8.2 New Cluster Wizard Configuration Information
Wizard page | Configuration information, comments |
---|---|
Welcome to the New Cluster Wizard | Click Next |
Cluster Name and Description | Cluster name: RKWebCluster |
Cluster description: A Web cluster. | |
Cluster Type | Keep default: General/Web cluster |
Load Balancing | Keep default: Network Load Balancing (NLB) |
Monitoring Notifications | E-mail address: someone@microsoft.com E-mail server name: smarthost |
Completing the New Cluster Wizard | Click Next |
At the end of this process, we have a cluster named RKWebCluster, consisting of the cluster controller, ACDW516AS, which was our localhost system. (Figure 8.3 shows the Application Center snap-in after adding additional members.) The next thing we want to do is increase the size of the cluster by adding two members.
Figure 8.3 The RKWebCluster
Secure your server
A good time to secure the server is after you've created the initial cluster. At this point you can implement some basic security settings for the operating system and the Web server. For information about site hardening and checklists for securing both Windows 2000 and IIS, see Chapter 12, "Security for Administrators and Developers."As a test to show how Application Center replicates IIS settings, try the following. Open the Internet Information Services snap-in on the cluster controller (ACDW516AS in our test cluster), and set the following for all the Web sites:
- Connections limited to 1,000
- Bandwidth throttling enabled
After you add a cluster member, you can check these settings on the member to see if they've been replicated.
The next step in creating our test environment is scaling out the Web tier by adding cluster members.
Add a Member
Adding another server to a cluster only takes a couple of steps. Use Figure 8.3 as a guide for the following steps.
The Add Cluster Member Wizard appears.
After analyzing the configuration of the target system, the Load Balancing Options page appears.
Application Center replicates all settings to the member, and then the new member adds to the cluster.
At this point we have a two-node Application Center Web server cluster. If you want to add more members, simply repeat the previous procedure.
If you configured the security settings as indicated in the preceding sidebar, you can verify that the controller's settings were replicated to a new member by using the following steps. (Use Figure 8.3 as a guide.)
This action adds the IIS snap-in for the server that you specify. Through the Application Center user interface, you can use the IIS snap-in for every cluster member.
TIP
You can use this technique to add the Component Services snap-in for each cluster member. On the controller, expand the Component Services node to reveal the Computers folder; right-click, and then when prompted, enter the name of the computer to add. The advantage of adding the snap-ins for cluster members to the controller console tree is that it provides a single interface for managing your cluster.
Figure 8.4, shows the Default Web Site Properties dialog box (Performance tab) for the default Web site on ACDW802AS. Notice that bandwidth throttling, enabled on the controller, was set on the new member.
Figure 8.4 IIS settings, which are replicated from the controller to a new member
In this validation step, we check to see whether cluster members are visible from within the cluster and from outside the cluster.
Visibility Inside the Cluster
These steps verify server name resolution and connectivity.
From the Controller
Each ping should succeed and display results similar to those that follow.
D:\>ping -a acdw802as Pinging ACDW802AS [192.168.100.104] with 32 bytes of data: Reply from 192.168.100.104: bytes=32 time<10ms TTL=128 Reply from 192.168.100.104: bytes=32 time<10ms TTL=128 Reply from 192.168.100.104: bytes=32 time<10ms TTL=128 Reply from 192.168.100.104: bytes=32 time<10ms TTL=128 Ping statistics for 192.168.100.104: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms D:\>
The name should resolve to the back-end adapter's (DHCP or static) IP address (boldface in the preceding display).
From All of the Members
Each ping should succeed with and display results that are similar to the ones shown in the previous example.
The name should resolve to the back-end adapter's IP address.
Each name should resolve to the IP address assigned to the corresponding back-end adapter.
Visibility Outside the Cluster
From an Internal Client
Each name should be resolved to the corresponding back-end adapter's IP address.
From an External Client
The purpose of this step is to verify that the Application Center monitoring feature works and that the system has access to the logging database via the Microsoft SQL Server Desktop Engine (SQL desktop engine).
NOTE
We've made the assumption that you installed with the monitoring option enabled. If you didn't install this feature, then skip this series of tests and go to "Validate the Configuration: Replication" later in this chapter.
All of the following tests are conducted on the cluster controller by using the Application Center snap-in.
Performance Counters
The chart generated by these performance counters should be displayed in the details pane for the cluster controller. (See Figure 8.5.)
Figure 8.5 The RKWebCluster with performance counters added to the cluster controller
Application Center will take the data from each member and roll it up to plot an average for processor utilization and totals for GET and ASP Requests per second.
You should get a display similar to the one shown in Figure 8.5 for each of the members.
Events
Figure 8.6 Using filters to display Application Center event
Monitors
NOTE
The default monitors that are installed and enabled by Application Center are:
- Cluster Service
- Health Monitor Action Failure
- Memory
- Processor
- Request Forwarding Failure
- Server Offline
- Synchronization Session Failure
- W3SVC
In this validation step our goal is to verify that the major replication engines are correctly installed and functioning normally. We will use sample Web pages and COM+ components as part of our testing. First, we have to do some preparation by installing sample files that are located on the Resource Kit CD. If you ran the Resource Kit Setup program, these files are installed in the following default directory:
C:\Program Files\Microsoft Application Center 2000 Resource Kit\Pre-Flight Manual
Preparation
This section describes how to install a simple set of Web pages and COM+ components, how to create a simple virtual Web directory, and how to declare them as Application Center resources. They will be used to perform basic replication tests.
On the Cluster Controller
When extracted, ACPF will consist of three folders that contain a collection of Web pages, batch files, configuration files, and executables. You can prepare the cluster controller manually or automate this process by using the batch files that you installed in C:\ACPF directory. (See sidebar.)
Automated setup
You can set up the test Web site, COM+ components, and the Application Center application by running the batch files provided on the CD and extracted to C:\ACPF.
- In Windows 2000, open a command prompt, and then navigate to C:\ACPF.
- Create two COM+ applications, and install six components by running:
C:\ACPF\Files\PFSetupCOM.bat- Create a Web virtual directory under the Default Web Site by running:
C:\ACPF\Files\PFSetupWeb.bat- Create the Application Center application (ACPFApp), and then add the COM+ applications, the Web virtual directory, and the application resources by running:
C:\ACPF\Files\PFSetupAC.bat
NOTE
We recommend the manual approach first to increase your familiarity with the Application Center user interface. Later, you can use the batch files to update configurations on test computers.
Let's step through a manual preparation of the cluster controller. We'll start by creating the two COM+ applications and installing the test components.
In the Application Center snap-in, expand the Component Services node down to, and including, the COM+ Applications folder.
WARNING
In a properly secured production environment, you should not use Interactive user but should specify a specific user. For example, Application Center specifies ACL_servername as the user for its COM+ applications.
The wizard opens a file explorer so that you can select the files that you want to install.
The files that you selected are displayed in the Install new components page.
Now we'll build the Web application.
At this point we have a Web site that contains the pages described in Table 8.3.
Table 8.3 Test Files in the ACPFWeb Site
File name | Description |
---|---|
PFWelcome.ASP | Creates a simple COM+ component that calls a method to obtain the server name, and then releases the component. It returns and displays a short message containing the name of the server that returned the page. |
PFStatic1.HTM through PFStatic5.HTM | This set of static HTML pages is used to display short messages on the screen. |
PFDynamic1.ASP through PFDynamic5.ASP | This collection of ASP pages displays a short message as well as the name of the server that returned the page. |
PFDynaCOM1.ASP through PFDynaCOM5.ASP | This collection of Active Server Pages (ASP) randomly creates one of five COM+ components, calls a method on the component, and then releases the component. Each page displays a short message and the name of the server that returned the page, as well as the name of the component that was created. |
The final step in preparing the controller is to create an Application Center application we can use to identify all of the specific resources that are associated with our test application.
NOTE
Application Center applications provide a very useful mechanism for identifying and compartmentalizing application resources for deployment from a stager to multiple cluster tiers.
NOTE
This resource is not necessary for deploying the Pre-Flight COM+ applications or Web site; however, adding this directory will allow us to test file replication, and there are some scripts in it that will be useful to have on the cluster controller.
When you're finished, your new application and its associated resources will look similar to the one shown in Figure 8.7.
Figure 8.7 The ACPFApp custom application and associated resources
NOTE
You'll notice that the file system path identified as a resource in Figure 8.7 is pointing to the D drive. This isn't an error or mandatory, it's simply the way the test computers are set up for the cluster RKWebCluster. Although we used different partitions, the drive mappings are homogenous on all our test servers and the drives are NTFS formatted.
Although the controller has been prepared by adding our sample files, we should test our installation before proceeding with testing. We'll use the browser to verify that the site we created is functioning correctly.
On an External Client
http:// ControllerDedicatedIPAddress/ACPFWeb/PFWelcome.asp
You should see a screen similar to the one shown in Figure 8.8.
Figure 8.8 Test page served from the cluster controller
Now that we know the site's functioning correctly, let's start replication testing with file replication.
File Replication
Manually Synchronize an Application
When the synchronization is finished, the animated icon will change to a check mark.
NOTE
If you open the Synchronizations node in the console tree you can obtain more detailed status information about the synchronization job. For more information about synchronization monitoring and events, see Chapter 6, "Synchronization and Deployment."
Trigger an Automatic Synchronization
The Synchronizing icon, under Status for the cluster controller, should change, indicating that an automatic synchronization is taking place.
COM+ Replication
Application Center doesn't handle COM+ replication in the same manner as HTML pages or configuration settings. Because the controller doesn't automatically synchronize these components across a cluster, we have to use another approach to getting them on the cluster members.
NOTE
Log on to one of the members, and then open the Application Center snap-in. Expand the Component Services node down to, and including, the COM+ Applications folder. You'll see that the components we registered on the controller are not on the member.
Components can be copied to and registered on cluster members by using the Application Center New Deployment Wizard. The next set of steps is used to deploy the ACPFApp application.
In the Application Center snap-in:
The New Deployment Wizard appears.
The Deployment Target Options page appears.
The other default on the Deployment Target Options page is to deploy content inside the current cluster, which is what we're going to do.
NOTE
In RKWebCluster, the member names are ACDW518AS and ACDW802AS, so these were selected.
The Deployment Content page, which allows you to deploy the entire server image or a specific application(s), appears.
You can monitor the deployment process by selecting the cluster controller node in the console tree and watching the counters and status messages that appear in the details pane for the controller. The Synchronizations view provides extensive information about deployments. After the deployment is finished, check the Component Services COM+ Applications folder for each member and verify that the sample components were copied to the members and registered.
Optional Replication Test
Registry Replication
Metabase Replication
We'll test the replication of metabase settings by altering some of the values stored by IIS.
This series of tests will verify that request forwarding works, as well as demonstrate this feature.
Preparation
We'll start by verifying that the cluster is accessible via the cluster or virtual IP address that's shared by all the members. Open Internet Explorer on a system outside the cluster, and provide the following URL, using the cluster IP address in the root:
http://<cluster_ IP_address>/ACPFWeb/PFWelcome.asp
After the screen is displayed, refresh it several times to confirm that the cluster is serving this page correctly.
NOTE
Use Ctrl-F5 to refresh pages in the browser. This forces the browser to retrieve the requested page from the server rather than pulling it out of a cache.
We created this cluster using NLB with a client affinity set at Single. For the next set of tests, we need to change this affinity to Custom (None). The reason for doing this is that we need to ensure that no session stickiness, which can trigger the request forwarder, is maintained.
TIP
In general you should use an affinity setting of Custom (None) when conducting localized testing of clustered Web servers. This is due to the nature of the algorithms that NLB uses to distribute load using IP address ranges. Typically, clients on the same internal subnet—provided that you're using Class C affinity—will end up getting balanced to the same server in a cluster. And, if you're using Single affinity, internal clients will always have their requests sent to the same Web server and you won't be able to observe request forwarding. Chapter 10, "Working with Performance Counters," covers this subject in more detail.
Static Content – Not Forwarded
Now we'll test static content that isn't forwarded. Open the Web browser on an external system, and connect to the cluster, using the cluster IP address in the following URL to retrieve "PFStatic1.htm":
http://<cluster_IP_address>/ACPFWeb/PFStatic1.htm
After the screen displays, refresh the screen 10 - 20 times. Open the Web server log file on the controller and the members to verify that this page was opened on different servers. The log files are in the following path: C:\WINNT\system32\LogFiles\W3SVC1.
Dynamic Content – Forwarded by Default
Use the Web browser on the external client to connect to the cluster using the cluster IP address in the following URL to retrieve "PFDynamic1.asp":
http://<cluster_ IP_address>/ACPFWeb/PFDynamic1.asp
Verify that the page is properly displayed. The page returns short text with the server name. Refresh the screen 5 _ 10 times. In every instance you should see the same server name displayed. Remember, with request forwarding enabled, subsequent requests from the same client are always returned from the server that initially handled the request.
Dynamic Content – Not Forwarded When Request Forwarding Is Turned Off
Now we'll disable request forwarding. Once again, we're working in the controller user interface. Right-click on the cluster name, and select Properties. When the cluster properties page appears with the General tab displayed, click the Advanced button that's located in the Load balancing options section. This will bring up the Advanced Load Balancing options screen, and you can deselect the Enable request forwarding check box. Click OK to apply the change.
Use the browser on your external client to connect to the cluster, using the cluster IP address in the following URL to retrieve "PFDynamic1.asp":
http://<cluster_ IP_address>/ACPFWeb/PFDynamic1.asp
Verify that the page is properly displayed. The page returns short text with the server name. Refresh the screen 5 – 10 times. Because request forwarding is turned off, you should see different server names displayed.
NOTE
Remember to restore the Single affinity setting and to turn request forwarding back on at the end of your testing.
Now that we've verified that all of Application Center's major features are functioning correctly, we'll apply some load to the cluster as a final step in validating the configuration.
Preparation
Before running any tests, we have to do some preparation, starting with an external client.
On an External Client
Since we use the Web Application Stress tool (WAS), you'll have to obtain a copy and install it on the client system that you're going to use for testing. If you don't already have a copy, you can download the latest version from http://webtool.rte.microsoft.com.
NOTE
The WAS tool is used extensively in Chapter 10, "Resolving Performance and Capacity Issues." Refer to this chapter for more detailed information about configuring and using this tool.
Locate the file named ACPreflight.mdb in the ACPF directory. This file is a Web Application Stress database that contains a script that the test team designed to test the configuration we've created. It loops through calls to the pages described earlier, randomly specifying COM+ components to create.
Start WAS, and open ACPreflight.mdb to load the test script. You'll have to edit this script for your test environment as follows:
NOTE
Turning off the "users, passwords, and save cookies" feature in WAS is fine for quick and dirty tests; as long as the application does not use cookies (not session cookies), no authentication is required, and the %USERNAME% and %PASSWORD% string replacements are not used in the query string. Additionally, static headers are fine as long as the application does not use dynamic cookies. However, a better approach is to leave these WAS settings enabled, and use the cluster configuration settings contained in the next section, "On the Cluster Controller."
Each of the tests in the script is executed on the cluster using a simulated load, and the results are stored in a report that WAS generates after a test run.
On the Cluster Controller
If you're using internal WAS clients, you should set the client affinity to Custom (None) in order to get better load distribution on the cluster. To do this, right-click on the cluster node, select Properties, and on the General tab, use the drop-down list for the NLB client affinity option to choose Custom (None).
Disable Request Forwarding by right clicking on the cluster node, select Properties, choose the Request Forwarding tab, and uncheck "Enable Web request forwarding". There are two reasons for doing this.
First, unless you're running WAS clients through a proxy server and the application that you're testing requires request forwarding, leaving Request Forwarding enabled serves no purpose.
Second, disabling Request Forwarding is, in most test scenarios, the preferred alternative to turning off the "Use users, passwords, and save cookies" feature in WAS is to disable Request Forwarding. This is preferable since many Web applications do require string replacements in the querystring, do require authentication, and do use cookies. Also, the request header size is a more accurate when monitoring bandwidth (303 bytes instead of 202 or 185).
Basic Tests with Load on Cluster
Before conducting any testing, follow the next set of steps to verify that the ACPreflight script is functioning correctly:
NOTE
Processor utilization for the controller will be slightly higher, which is to be expected.
After the script is finished running, check the WAS report file that was generated. It contains information such as the number of requests, requests per second, socket errors, and error codes.
Some Tests to Try
Run the test script against your cluster, and carry out the following activities. In each case, observe the effect that each activity has on controller, member, and cluster-wide performance.
For a final test of the product's features, try scaling out the Web tier by adding a new system that has Application Center installed but hasn't been used on a cluster. For our test environment, we added one more server (ACDW802AS), so the final Web cluster consists of the following servers in the Figure 8.1 architecture:
Add the new member's snap-ins—that is to say, IIS and Component Services—to the cluster controller's console, and verify that the configuration settings and application installs that you did in the preceding sections were replicated to the new member. Figure 8.9 shows the controller console in the RKWebCluster after all the snap-ins were added.
Figure 8.9 The RKWebCluster controller console tree with member snap-ins added
The few tests that we've described provide the foundation for verifying that your cluster is functioning correctly, as well as give you a preliminary understanding of cluster performance. Your own situation may require custom testing that reflects the needs of your platform and applications.
Let's move on and build the back-end tier of our environment—the COM+ application cluster for serving out-of-process components to the front-end Web tier.
In this step, we'll create a two-member cluster that will be used to serve COM+ components to Web servers on the front tier. After creating the COM+ cluster, we have to configure the Web cluster members so that they will route requests to the component cluster. CLB in fact, is implemented on the Web tier rather than the COM+ tier.
Before starting the cluster creation process, make sure that the following prerequisites have been met.
Prerequisites
The configuration, shown in Figure 8.10 requires the same software as the Web cluster. The notable difference is that because this cluster doesn't use NLB, only one static IP address is required on the front-end adapters. Unlike members in the Web cluster, component servers don't share a cluster/virtual IP and media access control (MAC) address. When a Web server needs to route a request to a component server, it uses the component server's machine name. Once again, the back-end adapters, which are not a requirement, could be used for carry Application Center-specific traffic.
Figure 8.10 Typical network adapter configuration for a COM+ application cluster
Before opening the Application Center snap-in and creating the cluster, you should use ping to verify the visibility of the computers on the network.
Create a COM+ Application Cluster
Now that the server's been configured to function as a cluster controller, we can create the cluster. Because the steps that you're going to take to create this cluster are identical to those used for creating the Web cluster, we've provided the following summary.
Because we're not implementing NLB on this cluster, refer to Table 8.4 and take note of the slightly different configuration information that we used to build RKCOMCluster, our test component server cluster.
Table 8.4 New Cluster Wizard Configuration Information for the COM+ Application Cluster
Wizard page | Configuration information, comments |
---|---|
Welcome to the New Cluster Wizard | Click Next |
Cluster Name and Description | Cluster name: RKCOMCluster |
Cluster description: A COM+ application cluster. | |
Cluster Type | Click COM+ application cluster |
COM+ Application Clients | Kept default: Server applications |
Monitoring Notifications | E-mail address: someone@microsoft.com E-mail server name: yourmailserver |
Completing the New Cluster Wizard | Click Next |
At the end of this process we have a cluster named RKCOMCluster, consisting of the cluster controller, ACDW522AS. The next thing we want to do is increase the size of the cluster by adding one member.
Add a Member
Adding another cluster member only takes a couple of steps. Repeat the steps you used to add a member to the Web cluster. (The assumption is that you are doing this while logged on to the cluster controller.) In brief:
At this point we have a two-node Application Center COM+ application cluster. If you want to add more members, simply repeat the previous procedure.
For our test environment, the final cluster consists of the following servers in the Figure 8.1 architecture:
As a final set up step, we added the IIS and Component Services snap-ins for ACDW811AS to the controller console tree so that we could have a single management console for the cluster, in the same fashion as the Web cluster controller.
Validate the Configuration
You should take the time to test the cluster configuration before installing any applications. You can do this by repeating most of the tests described for testing the Web cluster. The key difference is that HTTP- and NLB-related tests aren't relevant for the COM+ cluster. You don't have to worry about request forwarding, which is an advanced load balancing option, because load balancing isn't enabled for this cluster.
However, you can install performance counters—processor utilization as a minimum—as well as verify that monitoring is working.
Install the Components
Now we have to install the same COM+ applications that went on the Web tier to the component servers. (If you haven't already done so, execute the Pre-Flight Manual's ACPF.EXE to the partition where Application Center is installed.)
C:\ACPF\Files\PFSetupCOM.bat
Create an application named ACPFApp and add the test COM+ applications as resources for this application. Once again, we'll use a batch file to do this.
C:\ACPF\Files\PFSetupACCom.bat
NOTE
Make sure you specify Deploy COM+ applications on the Deployment Options page.
The final step involves configuring the Web cluster controller so that the test components will be load balanced and their activations will occur on the COM+ servers.
Enable CLB on the Web Cluster
After we enable the components in both applications for load balancing, we'll create the routing list needed to forward component requests to the COM+ cluster members.
Enable CLB
In the console tree, expand the Component Services node down to the component level, and in the AC_PF_VB application, reveal PFComponentPFComp. Figure 8.11 illustrates the fully expanded component snap-in on the RKWebCluster controller.
To enable load balancing:
Next we have to enable load balancing for the components in the other test application.
Figure 8.11 The dialog box for enabling dynamic load balancing on a COM+ component
Automated CLB configuration
You can also mark all the test components for dynamic load balancing by using a batch file provided with the Pre-Flight Check Application. In Windows 2000, open a command prompt, type the following batch file name, C:\ACPF\Files\PFSetupCOMDLB.bat, and then press Enter.
The next step in enabling CLB on our Web cluster is creating a routing list that references the COM+ cluster members.
Create the Routing List
The RKWebCluster Properties dialog box appears (Figure 8.12).
Figure 8.12 A routing list identifies component servers that handle component requests
As you can see in Figure 8.12, we identified both of the RKCOMCluster members as targets for object instantiation requests.
Finally, we have to copy all the configuration information that we just did on the controller to the other Web cluster members. Once again, we use the deployment wizard and cluster synchronization to do this. The wizard copies the components and their new settings to each member, and synchronization copies the cluster routing list information to the members.
Use the following steps:
At this point CLB is enabled on our two-tier cluster environment and we can proceed with some basic testing.
You should perform the following tests to verify that component creation is taking place on the COM+ tier, and that these instantiations are being load balanced between the two component servers.
On the External Client
Use the following steps to verify how the configuration works.
http://WebclusterClusterIPAddress/ACPFWeb/PFWelcome.asp
You should see different Web and COM+ server names as you generate requests.
NOTE
Your Web cluster should have request-forwarding disabled, and as mentioned earlier, should use an affinity setting of Custom (None).
We also want to apply some load to our multi-tier configuration so that we can observe how the servers on both tiers respond. Start WAS, and run the test script that we used earlier. While the stress test is running, you should:
When the script finishes running, examine the report that's generated for the run:
NOTE
It may be necessary to apply more load to the clusters. You can install WAS on other clients and add their names to the client list on the system that ran the ACPreflight stress test script. This allows you to manage stress tests from a single console.
Once again, you can conduct more extensive testing by running the WAS script against the clusters and trying different tasks, such as setting members online and offline in the Web tier, or removing members.
The RKWebCluster under load
In our test environment, the load results (running two WAS clients against the cluster) clearly showed that one of our members, ACDW802AS, could not handle the same load as the other two members. Even the controller, which also had to handle the various Application Center services, showed processor utilization that was at least 10 percent lower than ACDW802AS. In Chapter 10, "Working with Performance Counters," you'll see how these members can be tuned for better performance, as well as how you can re-distribute cluster traffic to compensate for lower capacity members.
Up to this point we've been working with test clusters that weren't actively serving content to clients. In this situation it didn't really matter if services such as COM+ or IIS got reset because it didn't affect live users. In a production situation, however, you can't do this—a staging and deployment process and platform is essential for installing or refreshing applications on a production cluster. In the following section we'll set up an Application Center stager that we'll use for deploying applications.