How to Create a Failover Zone in a Cluster

Using Oracle Solaris Cluster 4.0 on Oracle Solaris 11

by Venkat Chennuru, December 2011

How to quickly and easily configure an Oracle Solaris Zone in failover mode using the Oracle Solaris Cluster High Availability agent for Oracle Solaris Zones.


Oracle Solaris Zones technology isolates software applications and services using flexible, software-defined boundaries, which enables you to create many private execution environments within a single instance of Oracle Solaris. Deploying applications within Oracle Solaris Zones offers many advantages, such as fault and security isolation, optimization of hardware compute resource utilization, and reduction of software licenses through resource capping.

OTN is all about helping you become familiar enough with Oracle technologies to make an informed decision. Articles, software downloads, documentation, and more. Join up and get the technical resources you need to do your job.

When you deploy mission-critical applications, you can combine the advantages of Oracle Solaris Zones with clustering technologies to obtain the appropriate application service level. Oracle Solaris Cluster, the high availability (HA) solution for Oracle Solaris, offers close integration with Oracle Solaris Zones and extends Oracle Solaris 11 to provide a highly available infrastructure for deploying virtualized workloads.

Oracle Solaris Cluster provides two different types of configuration for Oracle Solaris Zones on Oracle Solaris. Oracle Solaris Zones clusters extends the Oracle Solaris Zones model across multiple clustered nodes to a virtual cluster. This feature allows you to protect applications running within the zones through policy-based monitoring and failover. It also enables reliable operation of multitiered workloads in isolated "virtual" zone clusters. (For more information, see the Zone Clusters—How to Deploy Virtual Clusters and Why white paper.)

In addition to zone clusters, Oracle Solaris Cluster offers a means for protecting the zone itself: the failover zone. This zone is considered to be a black box, and it is monitored and controlled by the Oracle Solaris Cluster HA agent for zones, which starts, stops, and probes the zone. The agent also moves the zone between servers in the event of a failure or upon an on-demand request.

This article describes how to set up a failover zone on a two-node cluster. For more details, check the Oracle Solaris Cluster Software Installation Guide.

Assumptions and Preinstallation Checks

This section discusses preinstallation checks and configuration assumptions for two-node clusters.

Configuration Assumptions

This article assumes the following conditions are met:

  • The cluster is already installed and configured with Oracle Solaris 11 and Oracle Solaris Cluster 4.0.
  • The repositories for Oracle Solaris and Oracle Solaris Cluster are already configured on the cluster nodes.
  • The cluster hardware is a supported configuration for Oracle Solaris Cluster 4.0 software.
  • A two-node SPARC cluster is installed. However, the installation procedure is applicable to x86 clusters as well.
  • Each node has two spare network interfaces to be used as private interconnects, also known as transports, and at least one network interface that is connected to the public network.
  • SCSI shared storage is connected to the two nodes.
  • Your setup looks like Figure 1, although you might have fewer or more devices, depending on your system or network configuration.

Note: It is recommended, but not required, that you have console access to the nodes during administration.

Figure 1

Figure 1. Oracle Solaris Cluster Hardware Configuration

Preinstallation Checks

The zonepath of an Oracle Solaris Zone in an HA zone configuration must reside on a highly available local file system. The zone must be configured on each cluster node on which the zone can reside. The zone is active on only one node at a time, and the zone's address is plumbed on only one node at a time.

Make sure you have a shared disk available to host the zonepath for the failover zone (see in Listing 1). You can use /usr/cluster/bin/scdidadm -L or /usr/cluster/bin/cldevice list to see the shared disks. Each cluster node has a path to the shared disk.

Listing 1. Verifying Availability of Shared Disk
root@phys-schost-1:~# /usr/cluster/bin/cldevice show d3

=== DID Device Instances ===

DID Device Name:                                /dev/did/rdsk/d3
  Full Device Path:                                phys-schost-2:/dev/rdsk/c0t60080E5000
  Full Device Path:                                phys-schost-1:/dev/rdsk/c0t60080E5000
  Replication:                                     none
  default_fencing:                                 global


Enabling an Oracle Solaris Zone to Run in a Failover Configuration

In a failover configuration, the zone's zonepath must be on a highly available file system. Oracle Solaris Cluster provides a specific service for managing failover systems: the SUNW.HAStoragePlus resource type.

  1. Register the SUNW.HAStoragePlus (HASP) resource type:

    phys-schost-1# /usr/cluster/bin/clrt register SUNW.HAStoragePlus
  2. Create the failover resource group:

    phys-schost-1# /usr/cluster/bin/clrg create zone-rg
  3. Create a zpool on a shared disk to host the zonepath for the failover zone:

    phys-schost-1# zpool create -m /ha-zones ha-zones \ /dev/rdsk/c0t60080E500017B52C00002B9D4EB40DB5d0
    phys-schost-1# zpool export ha-zones
  4. Register the zpool with the HASP resource, and create a resource (of type HASP) for the zones's disk storage (the zpool).

    phys-schost-1# /usr/cluster/bin/clrs create -t SUNW.HAStoragePlus -g zone-rg \ -p zpools=ha-zones ha-zones-hasp-rs
    phys-schost-1# /usr/cluster/bin/clrg online -emM -n phys-schost-1 zone-rg
    phys-schost-1# zfs create ha-zones/solaris
  5. Create and configure the zone on all nodes that can host this failover zone.

    There is no restriction on the zone configuration except the zpool hosting the zonepath must be on a shared disk.

    For our two-node cluster, the zone configuration, which is done using zonecfg, must be executed on both nodes, phys-schost-1 and phys-schost-2. Here is an example using phys-schost-1. Perform the same actions on phys-schost-2.

    phys-schost-1# zonecfg -z solarisfz1 \ 'create -b;
    set zonepath=/ha-zones/solaris/solarisfz1;
    set autoboot=false; set ip-type=shared;
    add attr; set name=osc-ha-zone; set type=boolean; set value=true; end;
    add net; set address=zone-hostname ; set physical=sc_ipmp0; end;'
  6. Verify that the zone is configured on both nodes:

    phys-schost-1# zoneadm list -cv
      ID NAME             STATUS      PATH                             BRAND    IP
       0 global           running       /                              solaris  shared
       - solarisfz1       configured    /ha-zones/solaris/solarisfz1   solaris  shared
    phys-schost-2# zoneadm list -cv
      ID NAME             STATUS      PATH                             BRAND    IP
       0 global           running       /                              solaris  shared
       - solarisfz1       configured    /ha-zones/solaris/solarisfz1   solaris  shared
  7. Install the zone using zoneadm on phys-schost-1, which is where the ha-zones zpool is online. The output from the installation is shown in Listing 2.

    Listing 2. Installing the Zone
    phys-schost-1:~# zoneadm -z solarisfz1 install
    Progress being logged to /var/log/zones/zoneadm.20030401T184050Z.solarisfz1.inst
           Image: Preparing at /ha-zones/solaris/solarisfz1/root.
     Install Log: /system/volatile/install.3349/install_log
     AI Manifest: /tmp/manifest.xml.QGa4Gg
      SC Profile: /usr/share/auto_install/sc_profiles/enable_sci.xml
        Zonename: solarisfz1
    Installation: Starting ...
                  Creating IPS image
                  Installing packages from:
                          origin:  http://localhost:1008/ha-cluster/2c76b8fe7512dde3
    DOWNLOAD                                  PKGS       FILES    XFER (MB)
    Completed                              167/167 32062/32062  175.8/175.8$<3>
    PHASE                                        ACTIONS
    Install Phase                            44313/44313
    PHASE                                          ITEMS
    Package State Update Phase                   167/167
    Image State Update Phase                         2/2
    Installation: Succeeded
            Note: Man pages can be obtained by installing pkg:/system/manual
            Done: Installation completed in 550.217 seconds.
      Next Steps: Boot the zone, then log into the zone console (zlogin -C)
                  to complete the configuration process.
    Log saved in non-global zone as /ha-zones/solaris/solarisfz1/root/var/log/zones/
  8. Verify that the zone was successfully installed and can boot up successfully on phys-schost-1.
    1. First, verify that the zone was installed:

      phys-schost-1# zoneadm list -cv
        ID NAME             STATUS      PATH                             BRAND    IP
         0 global           running       /                              solaris  shared
         - solarisfz1       installed     /ha-zones/solaris/solarisfz1   solaris  shared
    2. Then, in a different window (for example, from an ssh, rlogin, or telnet window), log in to the zone's console and then boot the zone:

      phys-schost-1# zlogin -C solarisfz1 
      phys-schost-1# zoneadm -z solarisfz1 boot
    3. Follow the prompts through system configuration interactive screens to configure the zone.
    4. Shut down the zone and switch the resource group to another node in the resource group nodelist.

      phys-schost-1# zoneadm -z solarisfz1 shutdown
      phys-schost-1# /usr/cluster/bin/clrg switch -n phys-schost-2 zone-rg
      phys-schost-1# zoneadm -z solarisfz1 detach -F
      phys-schost-1# zoneadm list -cv
        ID NAME             STATUS      PATH                             BRAND    IP
         0 global           running       /                              solaris  shared
         - solarisfz1       configured    /ha-zones/solaris/solarisfz1   solaris  shared
  9. Assign the UUID for the active boot environment (BE) from the first node, phys-schost-1, to the active BE on the second node, phys-schost-2.
    1. First, get the universally unique identifier (UUID) for the active BE on phys-schost-1.

      phys-schost-1:~# beadm list -H
      phys-schost-2:~# beadm list -H
    2. Set the UUID for the active BE of the global zone on phys-schost-2 to the same as that of phys-schost-1. The active BE has flag N in the third field separated by a semicolon. The UUID is set on the data set of the BE. You can get the UUID by running df -b /.

      phys-schost-2:~# df -b /
      Filesystem                       avail
      rpool/ROOT/s11_175b   131328596
      phys-schost-2:~# zfs set org.opensolaris.libbe:uuid=b5d7b547-180d-467e-b2c4-87499cfc1e9d \ rpool/ROOT/s11_175b
  10. Attach the zone and verify the zone can boot on the second node.
    1. First, attach the zone:

      phys-schost-2# zoneadm -z solarisfz1 attach -F
    2. From another session, connect to the zone console:

      phys-schost-2# zlogin -C solarisfz1 
    3. Boot the zone and observe the boot messages on the console:

      phys-schost-2# zoneadm -z solarisfz1 boot
  11. If the bootup succeeded, shut down and detach the zone:

    phys-schost-2# zoneadm -z solarisfz1 shutdown
    phys-schost-2# zoneadm -z solarisfz1 detach -F
  12. On both nodes, install the failover container agent if it is not already installed. The following example shows performing this on phys-schost-1:

    phys-schost-1# pkg install ha-cluster/data-service/ha-zones
  13. Create the resource from any one node (in the example below, phys-schost-1 is shown). Then edit the sczbt_config file and set the parameters on both nodes.
    1. First, register the resource:

      phys-schost-1# clrt register SUNW.gds
    2. Then, on both nodes, edit the sczbt_config file and set the parameters. (In the example in Listing 3, phys-schost-1 is shown.)

      Listing 3. Setting the Parameters
      phys-schost-1# cd /opt/SUNWsczone/sczbt/util
      phys-schost-1# cp -p sczbt_config sczbt_config.solarisfz1-rs
      phys-schost-1# vi sczbt_config.solarisfz1-rs
    3. On phys-schost-2, create the params directory, as shown in the sczbt_config file.

      phys-schost-2# mkdir /ha-zones/solaris/solarisfz1/params
    4. On one node, configure the zone-boot resource. The resource is configured with the parameters that you set in the sczbt_config file.

      phys-schost-2# ./sczbt_register -f ./sczbt_config.solarisfz1-rs
    5. One one node, enable the failover zone resource that was created.

      phys-schost-2# /usr/cluster/bin/clrs enable solarisfz1-rs
    6. One one node, check the status of the resource groups and resources, as shown in Listing 4.

      Listing 4. Checking the Status
      phys-schost-2# /usr/cluster/bin/clrs status -g zone-rg
      === Cluster Resources ===
      Resource Name         Node Name      State      Status Message
      -------------------   -------------  -----      -------------------
      solarisfz1-rs         phys-schost-1  Offline    Offline
                            phys-schost-2  Online     Online
      ha-zones-hasp-rs      phys-schost-1  Offline    Offline
                            phys-schost-2  Online     Online
  14. Verify with zlogin -C solarisfz1 that the zone successfully boots up, and then switch to other the node to test the switchover capability, as shown in Listing 5.

    Listing 5. Checking Swithover Capability
    phys-schost-2# /usr/cluster/bin/clrg switch -n phys-schost-1 zone-rg
    phys-schost-2# /usr/cluster/bin/clrs status -g zone-rg
    === Cluster Resources ===
    Resource Name         Node Name      State       Status Message
    -------------------   -------------  -----       -------------------
    solarisfz1-rs         phys-schost-1  Online      Online
                          phys-schost-2  Offline     Offline
    ha-zones-hasp-rs      phys-schost-1  Online      Online
                          phys-schost-2  Offline     Offline
  15. Verify with zlogin -C solarisfz1 that zone has successfully switched over to the other node.


This article described how to set up a failover zone on a two-node cluster with Oracle Solaris Cluster 4.0 on Oracle Solaris 11. It also described how to verify that the cluster is behaving correctly by switching over the zone from one node to the other.

For More Information

For more information on configuring Oracle Solaris Cluster components, see the resources listed in Table 2.

Table 2. Resources
Resource URL
Oracle Solaris Cluster 4.0 documentation library
Oracle Solaris Cluster Software Installation Guide
Oracle Solaris Cluster Data Services Planning and Administration Guide
Oracle Solaris Cluster 4.0 Release Notes
Oracle Solaris Cluster training
Oracle Solaris Cluster downloads

Revision 1.0, 12/02/2011

Follow us on Facebook, Twitter, or Oracle Blogs.