Sun Cluster 3.0 U1 Data Services Installation and Configuration Guide

Chapter 5 Installing and Configuring Sun Cluster HA for Apache

This chapter describes the steps to install and configure the Sun Cluster HA for Apache data service on your Sun Cluster servers.

This chapter contains the following procedures.

You can configure the Sun Cluster HA for Apache data service as either a failover service or a scalable service. See Chapter 1, Planning for Sun Cluster Data Services and the Sun Cluster 3.0 U1 Concepts document for an overview of failover and scalable data services.


Note -

You can use SunPlex Manager to install and configure this data service. See the SunPlex Manager online help for details.


Planning the Installation and Configuration

Before you install the Sun Cluster HA for Apache data service, update the following information in the Apache configuration file httpd.conf.


Note -

If you are running the Sun Cluster HA for Apache data service and another HTTP server, configure the HTTP servers to listen on different ports. Otherwise, a port conflict can occur between the two servers.


To register and configure the Sun Cluster HA for Apache data service, you must consider or provide information on the following points.

Installing and Configuring Sun Cluster HA for Apache

Table 5-1 lists the sections that describe the installation and configuration tasks.

Table 5-1 Task Map: Installing and Configuring Sun Cluster HA for Apache

Task 

For Instructions, Go To 

Install the Apache software 

"How to Install and Configure the Apache Application Software from the Apache Web Site"

Install the Sun Cluster HA for Apache data-service packages 

"How to Install Sun Cluster HA for Apache Packages"

Configure and start the Sun Cluster HA for Apache data service 

"How to Register and Configure Sun Cluster HA for Apache"

Configure resource extension properties 

"Configuring Sun Cluster HA for Apache Extension Properties"

View fault-monitor information 

"Sun Cluster HA for Apache Fault Monitor"

Installing and Configuring Apache

This section describes the steps to install the Apache server-either from the Solaris 8 operating-environment CD-ROM or from the Apache Web site-and to enable the server to run as the Sun Cluster HA for Apache data service.

The Sun Cluster HA for Apache data service works with the Apache software configured as either a Web server or a proxy server.

See Apache documentation at http://www.apache.org for standard installation instructions. See the Sun Cluster 3.0 U1 Release Notes for a list of Apache releases supported for use with the Sun Cluster software.

How to Install and Configure the Apache Application Software from the Solaris 8 CD-ROM

The Apache binaries are included in three packages-SUNWapchr, SUNWapchu, and SUNWapchd-which form the SUNWCapache package metacluster. You must install the SUNWapchr package before you install the SUNWapchu package.

Place the Web server binaries on the local file system on each of your cluster nodes or on a cluster file system.

  1. Run the pkginfo(1) command to determine if the Apache packages SUNWapchr, SUNWapchu, and SUNWapchd have been installed.

    If not, install as follows.


    # pkgadd -d Solaris 8 Product directory SUNWapchr SUNWapchu SUNWapchd
    ...
    Installing Apache Web Server (root) as SUNWapchr
    ...
    [ verifying class initd ]
    /etc/rc0.d/K16apache linked pathname
    /etc/rc1.d/K16apache linked pathname
    /etc/rc2.d/K16apache linked pathname
    /etc/rc3.d/S50apache linked pathname
    /etc/rcS.d/K16apache linked pathname
    ...
  2. Disable the START and STOP run control scripts that were just installed as part of the SUNWapchr package.

    This step is necessary because the Sun Cluster HA for Apache data service starts and stops the Apache application after you have configured the data service. Perform the following steps.

    1. List the Apache run control scripts.

    2. Rename the Apache run control scripts.

    3. Verify that all the Apache-related scripts have been renamed.


    Note -

    The following example changes the first letter in the name of the run control script from uppercase to lowercase. However, you can rename the scripts to be consistent with your normal administration practices.



    # ls -1 /etc/rc?.d/*apache
    /etc/rc0.d/K16apache
    /etc/rc1.d/K16apache
    /etc/rc2.d/K16apache
    /etc/rc3.d/S50apache
    /etc/rcS.d/K16apache
     
    # mv /etc/rc0.d/K16apache  /etc/rc0.d/k16apache
    # mv /etc/rc1.d/K16apache  /etc/rc1.d/k16apache
    # mv /etc/rc2.d/K16apache  /etc/rc2.d/k16apachc
    # mv /etc/rc3.d/S50apache  /etc/rc3.d/s50apache
    # mv /etc/rcS.d/K16apache  /etc/rcS.d/k16apache
     
    # ls -1 /etc/rc?.d/*apache
    /etc/rc0.d/k16apache
    /etc/rc1.d/k16apache
    /etc/rc2.d/k16apache
    /etc/rc3.d/s50apache
    /etc/rcS.d/k16apache

How to Install and Configure the Apache Application Software from the Apache Web Site

  1. Become superuser on a cluster member.

  2. Use the steps that the Apache documentation describes to install the Apache software.

    See the documentation that you received with your Apache software or the Apache Web site at http://www.apache.org.

  3. Update the httpd.conf configuration file.

    • Set the ServerName directive.

    • Set the BindAddress directive (optional).

    • Set the ServerType, ServerRoot, DocumentRoot, ScriptAlias, and LockFile directives.

    • Set the Port directive to the same number as the Port_list standard resource property. See Step 4 for more information.

    • Make changes to run as a proxy server if you choose to run the Apache software as a proxy server. See the Apache documentation for more information. If you will run the Apache software as a proxy server, the CacheRoot setting must point to a location on the cluster file system.

  4. Verify that the port number or numbers in the httpd.conf file match those of the Port_list standard resource property.

    You can edit the httpd.conf configuration file to change its port number or numbers to match the standard Sun Cluster resource property default (port 80). Alternatively, while you configure the Sun Cluster HA for Apache data service, you can set the Port_list standard property to match the setting in the httpd.conf file.

  5. (Optional) If you will use the Apache start/stop script Bin_dir/apachectl, update the paths in the script file.

    You must change the paths from the Apache defaults to match your Apache directory structure.

  6. Perform the following tasks to verify your configuration changes.

    1. Run apachectl configtest to check the Apache httpd.conf file for correct syntax.

    2. Ensure that any logical hostnames or shared addresses that Apache uses are configured and online.

    3. Issue apachectl start to start up your Apache server by hand. If Apache does not start up correctly, correct the problem.

    4. After Apache has started, stop it before moving to the next procedure.

Where to Go From Here

If the Apache data-service packages have not been installed from the Sun Cluster Agents CD, go to "Installing Sun Cluster HA for Apache Packages". Otherwise, go to "Registering and Configuring Sun Cluster HA for Apache".

Installing Sun Cluster HA for Apache Packages

You can use the scinstall(1M) utility to install SUNWscapc, the Sun Cluster HA for Apache data-service package, on a cluster. Do not use the -s option to noninteractive scinstall to install all data-service packages.

If you installed the data-service packages during your initial Sun Cluster installation, proceed to "Registering and Configuring Sun Cluster HA for Apache". Otherwise, use the following procedure to install the SUNWscapc package now.

How to Install Sun Cluster HA for Apache Packages

You need the Sun Cluster Agents CD to complete this procedure. Run this procedure on all cluster members that can master the Sun Cluster HA for Apache data service.

  1. Load the Agents CD into the CD-ROM drive.

  2. Run the scinstall utility with no options.

    This step starts the scinstall utility in interactive mode.

  3. Select the Add Support for New Data Service to This Cluster Node menu option.

    This option enables you to load software for any data services that exist on the CD.

  4. Exit the scinstall utility.

  5. Unload the CD from the drive.

Where to Go From Here

See "How to Register and Configure Sun Cluster HA for Apache" to register the Sun Cluster HA for Apache data service and to configure the cluster for the data service.

Registering and Configuring Sun Cluster HA for Apache

This procedure describes how to use the scrgadm(1M) command to register and configure the Sun Cluster HA for Apache data service.

Apache can be configured as a failover service or as a scalable service, as follows.

The scalable resource group depends on the failover resource group. Additional steps are required to configure Apache as a scalable service. The leading text "For scalable services only" in the following procedure identifies these steps. If you are not configuring Apache as a scalable service, skip the steps marked "For scalable services only."

How to Register and Configure Sun Cluster HA for Apache


Note -

Run this procedure on any cluster member.


  1. Become superuser on a cluster member.

  2. Register the resource type for the data service.


    # scrgadm -a -t SUNW.apache
    
    -a

    Adds the data-service resource type.

    -t SUNW.apache

    Specifies the predefined resource-type name for your data service.

  3. Create a failover resource group to hold the network and application resources.

    This resource group is required for both failover and scalable services. For failover services, the resource group contains both network and failover application resources. For scalable services, the resource group contains network resources only. A dependency is created between this group and the resource group that contains the application resources.

    Optionally, you can select the set of nodes on which the data service can run with the -h option.


    # scrgadm -a -g resource-group [-h nodelist]
    -a

    Adds a new configuration.

    -g resource-group

    Specifies the name of the failover resource group to add. This name can be your choice but must be unique for the resource groups within the cluster.

    -h nodelist

    An optional comma-separated list of physical node names or IDs that identify potential masters. The order specified here determines the order in which the nodes are considered as primary during failover.


    Note -

    Use -h to specify the order of the node list. If all the nodes in the cluster are potential masters, you need not use the -h option.


  4. Verify that all network addresses that you use have been added to your name-service database.

    You should have performed this verification during your initial Sun Cluster installation. See the planning chapter in the Sun Cluster 3.0 U1 Installation Guide for details.


    Note -

    To avoid failures because of name-service lookup, verify that all network addresses are present in the /etc/hosts file on all cluster nodes. Configure name-service mapping in the /etc/nsswitch.conf file on the servers to first check the local files prior to accessing NIS, NIS+, or DNS.


  5. Add a network resource (logical hostname or shared address) to the failover resource group that you created in Step 3.


    # scrgadm -a {-S | -L} -g resource-group \
    -l hostname, ... [-j resource] \
    [-X auxnodelist] [-n netiflist]
    -S | -L

    The -S option specifies shared-address resources. The -L option specifies logical-hostname resources.

    -l hostname, ...

    Specifies a comma-separated list of network resources to add. You can use the -j option to specify a name for the resources. If you do not do so, the network resources have the name of the first entry on the list.

    -g resource-group

    Specifies the name of the failover resource group that you created in Step 3.

    -j resource

    Specifies a resource name. If you do not supply your choice for a resource name, the name of the network resource defaults to the first name that is specified after the -l option.

    -X auxnodelist

    Specifies a comma-separated list of physical node names or node IDs that identify cluster nodes that can host the shared address but never serve as primary in the case of failover. These nodes are mutually exclusive with the nodes identified in nodelist for the resource group, if specified.

    -n netiflist

    Specifies an optional comma-separated list that identifies the NAFO groups on each node. All nodes in nodelist of the resource group must be represented in netiflist. If you do not specify this option, scrgadm attempts to discover a net adapter on the subnet that the hostname list identifies for each node in nodelist.

  6. For scalable services only - Create a scalable resource group to run on all desired nodes of the cluster.

    If you run the Sun Cluster HA for Apache data service as a failover data service, proceed to Step 8.

    Create a resource group to hold a data-service application resource. You must specify the maximum and desired number of primary nodes.


    Note -

    If only a subset of nodes can be primaries for this resource group, you must specify the names of these potential primaries using the -h option when you create the resource group.


    You must also specify any dependency between this resource group and the failover resource group that you created in Step 3. This dependency ensures that when failover occurs, if the two resource groups are being brought online on the same node, the Resource Group Manager (RGM) starts up the network resource before any data services that depend on the network resource.


    # scrgadm -a -g resource-group \
    -y Maximum_primaries=m -y Desired_primaries=n \
    -y RG_dependencies=resource-group \
    [-h nodelist]
    -g resource-group

    Specifies the name of the scalable-service resource group to add.

    -y Maximum_primaries=m

    Specifies the maximum number of active primary nodes allowed for this resource group. If you do not assign a value to this property, the default is 1.

    -y Desired_primaries=n

    Specifies the desired number of active primary nodes allowed for this resource group. If you do not assign a value to this property, the default is 1.

    -y RG_dependencies= resource-group

    Identifies the resource group that contains the shared-address resource on which the resource group being created depends, that is, the name of the failover resource group created in Step 3.

    -h nodelist

    An optional list of nodes that can be primaries for this resource group. You only need to specify this list if some nodes cannot act as primaries for this resource group.

  7. For scalable services only - Create an application resource in the scalable resource group.

    If you run the Sun Cluster HA for Apache data service as a failover data service, proceed to Step 8.


    # scrgadm -a -j resource -g resource-group \
    -t resource-type -y Network_resources_used=network-resource, ... \
    -y Port_list=port-number/protocol[, ...] -y Scalable=True \ 
    -x Confdir_list=config-directory -x Bin_dir=bin-directory
    
    -j resource

    Specifies your choice for the name of the resource to add.

    -g resource-group

    Specifies the name of the scalable resource group into which the resources are to be placed.

    -t resource-type

    Specifies the type of the resource to add.

    -y Network_resources_used= network-resource, ...

    Specifies a comma-separated list of network-resource names that identify the shared addresses that the data service uses.

    -y Port_list=port-number/protocol, ...

    Specifies a comma-separated list of port numbers and protocol to be used, for example, 80/tcp,81/tcp.

    -y Scalable=

    Specifies a required parameter for scalable services. Must be set to True.

    -x Confdir_list=config-directory, ...

    Specifies a comma-separated list of the locations of the Apache configuration files. The Sun Cluster HA for Apache data service requires this extension property.

    -x Bin_dir=bin-directory

    Specifies the location where the Apache binaries are installed. The Sun Cluster HA for Apache data service requires this extension property.


    Note -

    Optionally, you can set additional extension properties that belong to the Apache data service to override the default value. See Table 5-2 for a list of extension properties.


  8. For failover services only - Create an application resource in the failover resource group.

    Perform this step only if you run the Sun Cluster HA for Apache data service as a failover data service. If you run the Sun Cluster HA for Apache data service as a scalable service, you should have performed Step 6 and Step 7 and should now proceed to Step 10.


    # scrgadm -a -j resource -g resource-group \
    -t resource-type -y Network_resources_used=network-resource, ... \
    -y Port_list=port-number/protocol[, ...] -y Scalable=False \ 
    -x Confdir_list=config-directory -x Bin_dir=bin-directory
    
    -j resource

    Specifies your choice for the name of the resource to add.

    -g resource-group

    Specifies the name of the resource group into which the resources are to be placed, created in Step 3.

    -t resource-type

    Specifies the type of the resource to add.

    -y Network_resources_used= network-resource, ...

    Specifies a comma-separated list of network resources that identify the shared addresses that the data service uses.

    -y Port_list=port-number/protocol, ...

    Specifies a comma-separated list of port numbers and protocol to be used, for example, 80/tcp,81/tcp.

    -y Scalable=

    This property is required for scalable services only. Here the value is set to False or can be omitted.

    -x Confdir_list=config-directory

    Specifies the location of the Apache configuration file. The Sun Cluster HA for Apache data service requires this extension property, and the property must have exactly one entry.

    -x Bin_dir=bin-directory

    Specifies the location where the Apache binaries are installed. The Sun Cluster HA for Apache data service requires this extension property.

  9. Bring the failover resource group online.


    # scswitch -Z -g resource-group
    
    -Z

    Enables the shared-address resource and fault monitoring, switches the resource group into a managed state, and brings the resource group online.

    -g resource-group

    Specifies the name of the failover resource group.

  10. For scalable services only - Bring the scalable resource group online.


    # scswitch -Z -g resource-group
    
    -Z

    Enables the resource and monitor, moves the resource group to the managed state, and brings the resource group online.

    -g resource-group

    Specifies the name of the scalable resource group.

Example - Registering Scalable Sun Cluster HA for Apache

For scalable services, you create the following resource groups.

The following example shows how to register a scalable Apache service on a two-node cluster.


Cluster Information
Node names: phys-schost-1, phys-schost-2
Shared address: schost-1
Resource groups: resource-group-1 (for shared addresses), 
	resource-group-2 (for scalable Apache application 
    resources)
Resources: schost-1 (shared address), apache-1 (Apache application 
    resource)
 
(Add a failover resource group to contain shared addresses.)
# scrgadm -a -g resource-group-1
 
(Add the shared address resource to the failover resource group.)
# scrgadm -a -S -g resource-group-1 -l schost-1 
 
(Register the Apache resource type.)
# scrgadm -a -t SUNW.apache
 
(Add a scalable resource group.)
# scrgadm -a -g resource-group-2 -y Maximum_primaries=2 \
-y Desired_primaries=2 -y RG_dependencies=resource-group-1
 
(Add Apache application resources to the scalable resource group.)
# scrgadm -a -j apache-1 -g resource-group-2 \
-t SUNW.apache -y Network_resources_used=schost-1 \
-y Scalable=True -y Port_list=80/tcp \
-x Bin_dir=/opt/apache/bin -x Confdir_list=/opt/apache/conf
 
(Bring the failover resource group online.)
# scswitch -Z -g resource-group-1
 
(Bring the scalable resource group online on both nodes.)
# scswitch -Z -g resource-group-2

Example - Registering Failover Sun Cluster HA for Apache

The following example shows how to register a failover Apache service on a two-node cluster.


Cluster Information
Node names: phys-schost-1, phys-schost-2
Logical hostname: schost-1
Resource group: resource-group-1 (for all resources)
Resources: schost-1 (logical hostname),
	apache-1 (Apache application resource)
 
(Add a failover resource group to contain all resources.)
# scrgadm -a -g resource-group-1
 
(Add the logical hostname resource to the failover resource group.)
# scrgadm -a -L -g resource-group-1 -l schost-1 
 
(Register the Apache resource type.)
# scrgadm -a -t SUNW.apache
 
(Add Apache application resources to the failover resource group.)
# scrgadm -a -j apache-1 -g resource-group-1 \
-t SUNW.apache -y Network_resources_used=schost-1 \
-y Scalable=False -y Port_list=80/tcp \
-x Bin_dir=/opt/apache/bin -x Confdir_list=/opt/apache/conf
 
(Bring the failover resource group online.)
# scswitch -Z -g resource-group-1

Where to Go From Here

Use the information in "How to Verify Data-Service Installation and Configuration" to verify the installation. See "Configuring Sun Cluster HA for Apache Extension Properties" to set or modify resource extension properties.

How to Configure SUNW.HAStorage Resource Type

The SUNW.HAStorage resource type synchronizes actions between HA storage and the data service. The Sun Cluster HA for Apache data service is scalable, and therefore you should configure the SUNW.HAStorage resource type.

See the SUNW.HAStorage(5) man page and "Relationship Between Resource Groups and Disk Device Groups" for background information. See "How to Set Up SUNW.HAStorage Resource Type for New Resources" for the procedure.

How to Verify Data-Service Installation and Configuration

After you configure the Sun Cluster HA for Apache data service, verify that you can open a Web page with the network resources (logical hostnames or shared addresses) and port number from a Web browser. Perform a switchover with the scswitch(1M) command to verify that the service continues to run on a secondary node and can be switched back to the original primary.

Configuring Sun Cluster HA for Apache Extension Properties

The only required extension properties for creating an Apache server resource are the Confdir_list and Bin_dir properties. The Confdir_list property specifies a directory that contains a subdirectory named conf, in which the Apache configuration properties (httpd.conf) reside.

Typically, you use the command-line scrgadm -x parameter=value to configure the extension properties when you create the Apache server resource. You can also follow the procedures described in Chapter 11, Administering Data-Service Resources to configure the properties later.

See Appendix A, Standard Properties for details on all Sun Cluster properties.

You can update some extension properties dynamically. You can update others, however, only when you create the Apache server resource. The following table describes extension properties that you can configure for the Apache server. The Tunable column indicates when you can update the property.

Table 5-2 Sun Cluster HA for Apache Extension Properties

Name/Data Type 

Default 

Range 

Tunable 

Description 

Bin_dir (string)

None 

None 

At creation 

The path to the Apache binaries. The Sun Cluster HA for Apache data service requires this extension property. 

Confdir_list (string array)

None 

None 

At creation 

The directory that contains a subdirectory called conf, which contains the httpd.conf configuration file. The Sun Cluster HA for Apache data service requires this extension property.

Monitor_retry_count (integer)

4

0 - 2,147,483,641

 

-1 indicates an infinite number of retry attempts. 

At creation 

Controls restarts of the fault monitor and indicates the number of times that the process monitor facility (PMF) restarts the fault monitor during the time window that the Monitor_retry_interval property specifies. This property refers to restarts of the fault monitor itself rather than to the resource. The system-defined properties Retry_interval and Retry_count control resource restarts.

Monitor_retry_interval (integer)

2

0 - 2,147,483,641

 

-1 indicates an infinite retry interval.

At creation 

The time (in minutes) over which failures of the fault monitor are counted. If the number of times that the fault monitor fails exceeds the value that is specified in the extension property Monitor_retry_count within this period, the PMF does not restart the fault monitor.

Probe_timeout (integer)

30

0 - 2,147,483,641

At creation 

The time-out value (in seconds) that the fault monitor uses to probe an Apache instance. 

Sun Cluster HA for Apache Fault Monitor

The Sun Cluster HA for Apache probe sends a request to the server to query the health of the Apache server. Before the probe actually queries the Apache server, the probe checks to confirm that network resources are configured for this Apache resource. If no network resources are configured, an error message (No network resources found for resource) is logged, and the probe exits with failure.

The probe executes the following steps.

  1. Uses the time-out value that the resource property Probe_timeout sets to limit the time spent trying to successfully probe the Apache server.

  2. Connects to the Apache server and performs an HTTP 1.0 HEAD check by sending the HTTP request and receiving a response. In turn, the probe connects to the Apache server on each IP address/port combination.

    The result of this query can be either a failure or a success. If the probe successfully receives a reply from the Apache server, the probe returns to its infinite loop and continues the next cycle of probing and sleeping.

    The query can fail for various reasons, such as heavy network traffic, heavy system load, and misconfiguration. Misconfiguration can occur if the Apache server is not configured to be listening on all IP address/port combinations that are being probed. The Apache server should service every port for every IP address specified for this resource. If the reply to the query is not received within the Probe_timeout limit (specified in Step 1 previously), the probe considers this scenario a failure on the part of the Apache data service and records the failure in its history. An Apache probe failure can be a complete failure or a partial failure.

    The following probe failures are considered complete failures.

    • Failure to connect to the server, as the following error message flags, with %s indicating the host name and %d the port number.


      Failed to connect to %s port %d %s
    • Running out of time (exceeding the resource property time-out Probe_timeout) after trying to connect to the server.

    • Failure to successfully send the probe string to the server, as the following error message flags, with the first %s indicating the host name, %d the port number, and the second %s indicating further details about the error.


      Failed to communicate with server %s port %d: %s

    The monitor accumulates two such partial failures within the resource property interval Retry_interval and counts them as one.

    The following probe failures are considered partial failures.

    • Running out of time (exceeding the resource property timeout Probe_timeout) while trying to read the reply from the server to the probe's query.

    • Failing to read data from the server for other reasons, as the following error message flags, with the first %s indicating the host name and %d the port number. The second %s indicates further details about the error.


      Failed to communicate with server %s port %d: %s

  3. Based on the history of failures, a failure can cause either a local restart or a failover of the data service. "Health Checks of the Data Service" further describes this action.