Sun Cluster Data Services Planning and Administration Guide for Solaris OS

Enabling Solaris SMF Services to Run With Sun Cluster

The Service Management Facility (SMF) enables you to automatically start and restart SMF services, during a node boot or service failure. SMF facilitates some degree of high availability to the SMF services on a single host. This feature is similar to the Sun Cluster Resource Group Manager (RGM), which facilitates high availability and scalability for cluster applications. SMF services and RGM features are complementary to each other.

Sun Cluster includes three new SMF proxy resource types that can be used to enable SMF services to run with Sun Cluster in a failover, multi-master, or scalable configuration. The following are the proxy resource types:

The SMF proxy resource types enables you to encapsulate a set of interrelated SMF services into a single resource, SMF proxy resource to be managed by Sun Cluster. In this feature, SMF manages the availability of SMF services on a single node. Sun Cluster provides cluster-wide high availability and scalability of the SMF services.

You can use the SMF proxy resource types to integrate your own SMF controlled services into Sun Cluster so that these services have cluster-wide service availability without you rewriting callback methods or service manifest. After you integrate the SMF service into the SMF proxy resource, the SMF service is no longer managed by the default restarter. The restarter that is delegated by Sun Cluster manages the SMF service.

SMF proxy resources are identical to other resources, with no restriction on their usage. For example, an SMF proxy resource can be grouped with other resources into a resource group. SMF proxy resources can be created and managed the same way as other resources. An SMF proxy resource differs from other resources in one way. When you create a resource of any of the SMF proxy resource types, you need to specify the extension property Proxied_service_instances. You must include information about the SMF services to be proxied by the SMF resource. The extension property's value is the path to a file that contains all the proxied SMF services. Each line in the file is dedicated to one SMF service and specifies svc fmri, path of the corresponding service manifest file.

For example, if the resource has to manage two services, restarter_svc_test_1:default and restarter_svc_test_2:default, the file should include the following two lines:


<svc:/system/cluster/restarter_svc_test_1:default>,</var/svc/manifest/system/clus
ter/restarter_svc_test_1.xml>

<svc:/system/cluster/restarter_svc_test_2:default>,</var/svc/manifest/system/clus
ter/restarter_svc_test_2.xml>

The services that are encapsulated under an SMF proxy resource can reside in the global cluster or global-cluster non-voting node. However, all the services under the same proxy resource must be in the same zone.


Caution – Caution –

Do not use SMF svcadm for disabling or enabling SMF services that are encapsulated in a proxy resource. Do not change the properties of the SMF services (in the SMF repository) that are encapsulated in a proxy resource.


ProcedureEncapsulating an SMF Service Into a Failover Proxy Resource Configuration

For information about failover configuration, see Creating a Resource Group


Note –

Perform this procedure from any cluster node.


  1. On a cluster member, become superuser or assume a role that provides solaris.cluster.modify RBAC authorization.

  2. Register the proxy SMF failover resource type.


    # clresourcetype register -f\
    /opt/SUNWscsmf/etc/SUNW.Proxy_SMF_failover SUNW.Proxy_SMF_failover
    
  3. Verify that the proxy resource type has been registered.


    # clresourcetype show 
    
  4. Create the SMF failover resource group.


    # clresourcegroup create [-n node-zone-list] resource-group
    
    -n node-zone-list

    Specifies a comma-separated, ordered list of nodes that can master this resource group. The format of each entry in the list is node:zone. In this format, node specifies the node name and zone specifies the name of a global-cluster non-voting node. To specify the global-cluster voting node, or to specify a node without global-cluster non-voting nodes, specify only node.

    This list is optional. If you omit this list, the resource group is configured on all the global-cluster voting nodes.


    Note –

    To achieve highest availability, specify global-cluster non-voting nodes on different nodes in the node list of an SMF failover resource group instead of different global-cluster non-voting nodes on the same node.


    resource-group

    Specifies your choice of the name of the scalable resource group to add. This name must begin with an ASCII character.

  5. Verify that the SMF resource group has been created.


    # clresourcegroup status resource-group
    
  6. Add an SMF failover application resource to the resource group.


    # clresource create -g resource-group -t SUNW.Proxy_SMF_failover \
    [-p "extension-property[{node-specifier}]"=value, …] [-p standard-property=value, …] resource
    

    The resource is created in the enabled state.

  7. Verify that the SMF failover application resource has been added and validated.


    # clresource show resource
    
  8. Bring the failover resource group online.


    # clresourcegroup online -M +
    

    Note –

    If you use the clresource status command to view the state of the SMF proxy resource type, the status is displayed as online but not monitored. This is not an error message. The SMF proxy resource is enabled and running and this status message is displayed because there is no monitoring support provided for the resources of SMF proxy resource type.



Example 2–51 Registering an SMF Proxy Failover Resource Type

The following example registers the SUNW.Proxy_SMF_failover resource type.


# clresourcetype register SUNW.Proxy_SMF_failover
# clresourcetype show SUNW.Proxy_SMF_failover

Resource Type:              SUNW.Proxy_SMF_failover
RT_description:             Resource type for proxying failover SMF services 
RT_version:                 3.2
API_version:                6
RT_basedir:                 /opt/SUNWscsmf/bin
Single_instance:            False
Proxy:                      False
Init_nodes:                 All potential masters
Installed_nodes:            <All>
Failover:                   True
Pkglist:                    SUNWscsmf 
RT_system:                  False
Global_zone:			       False


Example 2–52 Adding an SMF Proxy Failover Application Resource to a Resource Group

This example shows the addition of a proxy resource type, SUN.Proxy_SMF_failover to a resource group resource-group-1.


# clresource create -g resource-group-1 -t SUNW.Proxy_SMF_failover
-x proxied_service_instances=/var/tmp/svslist.txt resource-1
# clresource show resource-1

=== Resources ===

  Resource:                                  resource-1
  Type:                                      SUNW.Proxy_SMF_failover
  Type_version:                              3.2 
  Group:                                     resource-group-1
  R_description:                             
  Resource_project_name:                     default
  Enabled{phats1}:                           True 
  Monitored{phats1}:                         True
 

ProcedureEncapsulating an SMF Service Into a Multi-Master Proxy Resource Configuration

  1. On a cluster member, become superuser or assume a role that provides solaris.cluster.modify RBAC authorization.

  2. Register the SMF proxy multi-master resource type.


    # clresourcetype register -f\ 
    /opt/SUNWscsmf/etc/SUNW.Proxy_SMF_multimaster SUNW.Proxy_SMF_multimaster
    
  3. Create the SMF multi-master resource group.


    # clresourcegroup create\-p Maximum_primaries=m\-p Desired_primaries=n\
    [-n node-zone-list]\
    resource-group
    
    -p Maximum_primaries=m

    Specifies the maximum number of active primaries for this resource group.

    -p Desired_primaries=n

    Specifies the number of active primaries on which the resource group should attempt to start.

    -n node-zone-list

    Specifies a comma-separated, ordered list of nodes in which this resource group is to be available. The format of each entry in the list is node:zone. In this format, node specifies the node name and zone specifies the name of a global-cluster non-voting node. To specify the global-cluster voting node, or to specify a node without global-cluster non-voting nodes, specify only node.

    This list is optional. If you omit this list, the resource group is configured on the global-cluster voting nodes.

    resource-group

    Specifies your choice of the name of the scalable resource group to add. This name must begin with an ASCII character.

  4. Verify that the SMF proxy multi-master resource group has been created.


    # clresourcegroup show resource-group
    
  5. Add an SMF proxy multi-master resource to the resource group.


    # clresource create -g resource-group -t SUNW.Proxy_SMF_multimaster\
    [-p "extension-property[{node-specifier}]"=value, …] [-p standard-property=value, …] resource
    
    -g resource-group

    Specifies the name of a scalable service resource group that you previously created.

    -p "extension-property[{node-specifier}]"=value, …

    Specifies a comma-separated list of extension properties that you are setting for the resource. The extension properties that you can set depend on the resource type. To determine which extension properties to set, see the documentation for the resource type.

    node-specifier is an optional qualifier to the -p and -x options. This qualifier indicates that the extension property or properties on only the specified node or nodes are to be set when the resource is created. The specified extension properties on other nodes in the cluster are not set. If you do not include node-specifier, the specified extension properties on all nodes in the cluster are set. You can specify a node name or a node identifier for node-specifier. Examples of the syntax of node-specifier include the following:


    -p "myprop{phys-schost-1}"
    

    The braces ({}) indicate that you want to set the specified extension property on only node phys-schost-1. For most shells, the double quotation marks (“) are required.

    You can also use the following syntax to set an extension property in two different global-cluster non-voting nodes on two different nodes:


    -x "myprop{phys-schost-1:zoneA,phys-schost-2:zoneB}"
    
    -p standard-property=value, …

    Specifies a comma-separated list of standard properties that you are setting for the resource. The standard properties that you can set depend on the resource type. For scalable services, you typically set the Port_list, Load_balancing_weights, and Load_balancing_policy properties. To determine which standard properties to set, see the documentation for the resource type and Appendix B, Standard Properties.

    resource

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

    The resource is created in the enabled state.

  6. Verify that the SMF proxy multi-master application resource has been added and validated.


    # clresource show resource
    
  7. Bring the multi-master resource group online.


    # clresourcegroup online -M +
    

    Note –

    If you use the clresource status command to view the state of the SMF proxy resource type, the status is displayed as online but not monitored. This is not an error message. The SMF proxy resource is enabled and running and this status message is displayed because there is no monitoring support provided for the resources of SMF proxy resource type.



Example 2–53 Registering an SMF Proxy Multi-Master Resource Type

The following example registers the SUNW.Proxy_SMF_multimaster resource type.


# clresourcetype register SUNW.Proxy_SMF_multimaster
# clresourcetype show SUNW.Proxy_SMF_multimaster

Resource Type:            SUNW.Proxy_SMF_multimaster
RT_description:           Resource type for proxying multimastered SMF services 
RT_version:               3.2
API_version:              6
RT_basedir:               /opt/SUNWscsmf/bin
Single_instance:          False
Proxy:                    False
Init_nodes:               All potential masters
Installed_nodes:          <All>
Failover:                  True
Pkglist:                   SUNWscsmf 
RT_system:                 False
Global_zone:				   False


Example 2–54 Creating and Adding an SMF Proxy Multi-Master Application Resource to a Resource Group

This example shows the creation and addition of a multi-master proxy resource type SUN.Proxy_SMF_multimaster to a resource group resource-group-1.


# clresourcegroup create\
-p Maximum_primaries=2\
-p Desired_primaries=2\
-n phys-schost-1, phys-schost-2\
resource-group-1
# clresourcegroup show resource-group-1

=== Resource Groups and Resources ===          

Resource Group:                        resource-group-1
RG_description:                        <NULL>
RG_mode:                               multimastered
RG_state:                              Unmanaged
RG_project_name:                       default
RG_affinities:                         <NULL>
Auto_start_on_new_cluster:             True
Failback:                              False
Nodelist:                              phys-schost-1 phys-schost-2
Maximum_primaries:                      2
Desired_primaries:                      2
Implicit_network_dependencies:         True
Global_resources_used:                 <All>
Pingpong_interval:                      3600
Pathprefix:                            <NULL>
RG_System:                             False
Suspend_automatic_recovery:                      False

# clresource create -g resource-group-1 -t SUNW.Proxy_SMF_multimaster
-x proxied_service_instances=/var/tmp/svslist.txt resource-1
# clresource show resource-1

=== Resources ===

  Resource:                               resource-1
  Type:                                  SUNW.Proxy_SMF_multimaster
  Type_version:                          3.2 
  Group:                                 resource-group-1
  R_description:                         
  Resource_project_name:                 default
  Enabled{phats1}:                       True 
  Monitored{phats1}:                     True
 

ProcedureEncapsulating an SMF Service Into a Scalable Proxy Resource Configuration

For information about scalable configuration, see How to Create a Scalable Resource Group


Note –

Perform this procedure from any cluster node.


  1. On a cluster member, become superuser or assume a role that provides solaris.cluster.modify RBAC authorization.

  2. Register the SMF proxy scalable resource type.


    # clresourcetype register -f\
    /opt/SUNWscsmf/etc/SUNW.Proxy_SMF_scalable SUNW.Proxy_SMF_scalable  
    
  3. Create the SMF failover resource group that holds the shared address that the scalable resource group is to use. See How to Create a Failover Resource Group to create the failover resource group.

  4. Create the SMF proxy scalable resource group.


    # clresourcegroup create\-p Maximum_primaries=m\-p Desired_primaries=n\
    -p RG_dependencies=depend-resource-group\
    [-n node-zone-list]\
    resource-group
    
    -p Maximum_primaries=m

    Specifies the maximum number of active primaries for this resource group.

    -p Desired_primaries=n

    Specifies the number of active primaries on which the resource group should attempt to start.

    -p RG_dependencies=depend-resource-group

    Identifies the resource group that contains the shared address-resource on which the resource group that is being created depends.

    -n node-zone-list

    Specifies a comma-separated, ordered list of nodes in which this resource group is to be available. The format of each entry in the list is node:zone. In this format, node specifies the global-cluster voting node and zone specifies the name of a global-cluster non-voting node. To specify the global-cluster voting node, or to specify a node without global-cluster non-voting nodes, specify only node.

    This list is optional. If you omit this list, the resource group is created on all nodes in the cluster.

    The node list of the scalable resource can contain the same list or a subset of nodename:zonename pairs as the node list of the shared address resource

    resource-group

    Specifies your choice of the name of the scalable resource group to add. This name must begin with an ASCII character.

  5. Verify that the scalable resource group has been created.


    # clresourcegroup show resource-group
    
  6. Add an SMF proxy scalable resource to the resource group.


    # clresource create-g resource-group -t SUNW.Proxy_SMF_scalable \
    -p Network_resources_used=network-resource[,network-resource...] \
    -p Scalable=True
    [-p "extension-property[{node-specifier}]"=value, …] [-p standard-property=value, …] resource
    
    -g resource-group

    Specifies the name of a scalable service resource group that you previously created.

    -p Network_resources_used= network-resource[,network-resource...]

    Specifies the list of network resources (shared addresses) on which this resource depends.

    -p Scalable=True

    Specifies that this resource is scalable.

    -p "extension-property[{node-specifier}]"=value, …

    Specifies that you are setting extension properties for the resource. To determine which extension properties to set, see the documentation for the resource type.

    node-specifier is an optional qualifier to the -p and -x options. This qualifier indicates that the extension property or properties on only the specified node or nodes are to be set when the resource is created. The specified extension properties on other nodes in the cluster are not set. If you do not include node-specifier, the specified extension properties on all nodes in the cluster are set. You can specify a node name or a node identifier for node-specifier. Examples of the syntax of node-specifier include the following:


    -p "myprop{phys-schost-1}"
    

    The braces ({}) indicate that you want to set the specified extension property on only node phys-schost-1. For most shells, the double quotation marks (“) are required.

    You can also use the following syntax to set an extension property in two different global-cluster non-voting nodes on two different global-cluster voting nodes:


    -x "myprop{phys-schost-1:zoneA,phys-schost-2:zoneB}"
    
    -p standard-property=value, …

    Specifies a comma-separated list of standard properties that you are setting for the resource. The standard properties that you can set depend on the resource type. For scalable services, you typically set the Port_list, Load_balancing_weights, and Load_balancing_policy properties. To determine which standard properties to set, see the documentation for the resource type and Appendix B, Standard Properties.

    resource

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

    The resource is created in the enabled state.

  7. Verify that the SMF proxy scalable application resource has been added and validated.


    # clresource show resource
    
  8. Bring the SMF proxy scalable resource group online.


    # clresourcegroup online -M +
    

    Note –

    If you use the clresource status command to view the state of the SMF proxy resource type, the status is displayed as online but not monitored. This is not an error message. The SMF proxy resource is enabled and running and this status message is displayed because there is no monitoring support provided for the resources of SMF proxy resource type.



Example 2–55 Registering an SMF Proxy Scalable Resource Type

The following example registers the SUNW.Proxy_SMF_scalable resource type.


# clresourcetype register SUNW.Proxy_SMF_scalable
# clresourcetype show SUNW.Proxy_SMF_scalable

Resource Type:           SUNW.Proxy_SMF_scalable
RT_description:          Resource type for proxying scalable SMF services 
RT_version:              3.2
API_version:             6
RT_basedir:              /opt/SUNWscsmf/bin
Single_instance:          False
Proxy:                    False
Init_nodes:               All potential masters
Installed_nodes:          <All>
Failover:                 True
Pkglist:                  SUNWscsmf 
RT_system:                 False
Global_zone:				  False


Example 2–56 Creating and Adding an SMF Proxy Scalable Application Resource to a Resource Group

This example shows the creation and addition of a scalable proxy resource type SUN.Proxy_SMF_scalalble to a resource group resource-group-1.


# clresourcegroup create\
-p Maximum_primaries=2\
-p Desired_primaries=2\
-p RG_dependencies=resource-group-2\
-n phys-schost-1, phys-schost-2\
resource-group-1
# clresourcegroup show resource-group-1

=== Resource Groups and Resources ===          

Resource Group:                      resource-group-1
RG_description:                     <NULL>
RG_mode:                             Scalable
RG_state:                            Unmanaged
RG_project_name:                     default
RG_affinities:                       <NULL>
Auto_start_on_new_cluster:           True
Failback:                            False
Nodelist:                            phys-schost-1 phys-schost-2
Maximum_primaries:                   2
Desired_primaries:                   2
RG_dependencies:                     resource-group2
Implicit_network_dependencies:       True
Global_resources_used:               <All>
Pingpong_interval:                   3600
Pathprefix:                          <NULL>
RG_System:                            False
Suspend_automatic_recovery:           False

# clresource create -g resource-group-1 -t SUNW.Proxy_SMF_scalable
-x proxied_service_instances=/var/tmp/svslist.txt resource-1
# clresource show resource-1

=== Resources ===

  Resource:                            resource-1
  Type:                                SUNW.Proxy_SMF_scalable
  Type_version:                        3.2 
  Group:                               resource-group-1
  R_description:                       
  Resource_project_name:               default
  Enabled{phats1}:                     True 
  Monitored{phats1}:                   True