JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
Oracle Solaris Cluster Data Service for SAP NetWeaver Guide     Oracle Solaris Cluster 4.1
search filter icon
search icon

Document Information

Preface

1.  Installing and Configuring HA for SAP NetWeaver

A.  HA for SAP NetWeaver Extension Properties

B.  Deployment Example: How to Configure the Oracle Solaris Cluster HA for SAP NetWeaver Agent

Index

Appendix B

Deployment Example: How to Configure the Oracle Solaris Cluster HA for SAP NetWeaver Agent

This example shows how to install a dual stack with enqueue replication on a two-node cluster consisting of the nodes pbono1 and pbono2. The chosen enqueue replication model requires different instance numbers between central services and the replicated enqueue server.

In this example, the primary application instance is installed in a failover resource group. Two additional dialog instances are deployed on the physical hosts, pbono1 and pbono2, in a multiple-master resource group.

Pick a database that can be made highly available. Depending on your choice, you might need a different resource group layout for the database.

The logical host are as follows:

The following instance numbers will be installed.

You need the following resource groups:

How to Prepare the Hosts

  1. On all Oracle Solaris 11 hosts, add the following packages to install SAP:

    # pkg set-publisher -O your repository solaris
    # pkg install solaris-large-server
    # pkg install solaris-desktop
    # pkg install motif
    # pkg install unrar
    # pkg install xclock
    # pkg install expect
    # pkg install library/medialib
    # pkg install pkg:/developer/library/lint
    # svcadm enable svc:/application/graphical-login/gdm:default
    # pkg install pkg:/compatibility/ucb
    # svcadm enable svc:/network/login:rlogin
    # svcadm enable telnet
    For additional locales, do the following:
    # pkg change-facet facet.locale.*=True
    # pkg install system/input-method/iiim
    # pkg install pkg:/system/locale/extra
    # pkg install pkg:/library/motif/libdpstkxm
  2. On all hosts, add modifications for SAP to the /etc/system directory and reboot.

    # set rlim_fd_cur=8192
  3. For 7.3, add 40 GBytes swap space per node.

  4. Add a fully qualified domain name to all hostnames and logical hosts in the /etc/hosts directory.

  5. Add the following groups.

    # groupadd -g 700 sapinst
    # groupadd -g 701 sapsys
    # groupadd -g 702 sdba
  6. Add the users as follows:

    # useradd -o -u 0 -g 1 -d / -c "validation" -s /bin/tcsh emroot
    
    On Oracle Solaris 11: 
    # useradd -o -u 699 -g 1 -d / -c "validation" -s /bin/tcsh emroot
    # useradd -u 700 -g 701 -m -d /export/qe3adm  \
    -c "SAP system administrator" -s /bin/tcsh qe3adm
    # useradd -u 701 -g 702 -m -d /export/sdb  \
    -c "SAPDB software owner" -s /bin/tcsh sdb
    # useradd -u 702 -g 701 -m -d /export/sqdqe3  \
    -c "Owner of the database instance QE3" -s /bin/tcsh sqdqe3
    # useradd -u 703 -g 701 -m -d /export/sapadm  \
    -c "SAP system administrator" -s /bin/tcsh sapadm
    # useradd -u 704 -g 701 -m -d /export/daaadm  \
    -c "owner of the instance DAA" -s /bin/tcsh daaadm

    Depending on the database of your choice, you might need different users other than sdb and sqdqe1.

  7. Place all the users except sdb and emroot in the sapinst group.

    You must place sqdqe3 in the sdba group. Whether you need the sdb user or others will depend on the database that you choose.

  8. Give daaadm a password that is the same as the master password you will choose later on.


    Note - On all nodes, QE3 is the SAP system name in this example.


    Do not give a password to the sdb user.

  9. Add the users, qe3adm and sapadm, to the sapinst group in the /etc/group directory.

  10. Add the user, sqdqe3, to the sdba group in the /etc/group directory.

  11. Define the project for QE3 on all the nodes.

    QE3:223:SAP System QE3:daaadm,emroot,qe3adm,sapadm,\
    sdb,sqdqe3::process.max-file-descriptor=(basic,65536,deny) \
    ;process.max-sem-nsems=(priv,2048,deny) \
    ;project.max-sem-ids=(priv,9216,deny) \
    ;project.max-shm-ids=(priv,256,deny) \
    ;project.max-shm-memory=(priv,18446744073709551615,deny) 
  12. Define the project in the /etc/user_attr directory on all the nodes.

    qe3adm::::project=QE3
    sqdqe3::::project=QE3
    sdb::::project=QE3
    emroot::::project=QE3
    sapadm::::project=QE3
  13. Give the sidadm user cluster administration rights on all the nodes.

    # usermod -A solaris.cluster.admin qe3adm # for 7.30 (kernel 7.20_EXT)

Note - If you want to do the installation as root, root must have project limits of QE3. On Oracle Solaris 11 systems, the alternative to the root user is sudo su as UID 0 will not work for emroot. The alternate user requires a modification in the /etc/sudoers directory.


The following links are assumed on the global mount at /sapstore.

# mkdir /sapstore/sap
# mkdir /sapstore/sapmnt
# mkdir /sapstore/sapdb
# ln -s /sapstore/sapdb /sapdb
# ln -s /sapstore/sap /usr/sap
# ln -s /sapstore/sapmnt /sapmnt

This example is based on a lab storage layout. On production systems, the process will be different. In this example, you need only one HAStoragePlus resource. On production systems, you will need a different layout.

How to Create Resource Groups

  1. Create a resource group scs-rg containing the HAStoragePlus resource, and a logical host to contain the central services like the message server, the enqueue server, and a logical host.

  2. Ensure that the resource group containing the HAStoragePlus resource is online on the node where you want to install SAP.

  3. Set the AffinityOn property to TRUE, if it is not done already.

    # clrt register HAStoragePlus
    # clrg create scs-rg
    # clrslh create -g scs-rg bono-1
    Note: Create the HAStoragePlus resource here, if appropriate.
    # clrg online -eM +
  4. Create a resource group with a logical host db-rg, to contain the database.

    # clrg create db-rg
    # clrslh create -g db-rg bono-2
    Note: Create the HAStoragePlus resource here, if appropriate.
    # clrg online -eM db-rg
  5. Create a resource group with a logical host rep-rg, to contain the replicated enqueue server.

    # clrg create rep-rg
    # clrslh create -g rep-rg bono-3
    Note: Create the HAStoragePlus resource here, if appropriate.
    # clrg online -eM rep-rg
  6. Set the affinity from scs-rg to rep-rg.

    # clrg set -p rg_affinities=+rep-rg scs-rg
  7. Create a resource group with a logical host pas-rg, to contain the primary application instance DVBEMGS02.

    # clrg create pas-rg
    # clrslh create -g pas-rg bono-4
    Note: Create the HAStoragePlus resource here, if appropriate.
    # clrg online -eM pas-rg
  8. Create a multiple-master resource group dia-rg, for the additional application instances.

    # clrg create -p maximum_primaries=2 -p desired_primaries=2 dia-rg
  9. Ensure that no logical host is deprecated.

    For all deprecated interfaces of the logical hosts, do the following:

    ifconfig if -deprecated up

Notes about SAP installation

Configure SAP for the Java stack

As long as the JAVA stack does not detect that the database is online on a remote node, unset the database start from the application instance's start profile.

# Start_Program_00 = immediate $(_DB)

Configure SAP for the enqueue server

To recover the enqueue replication after network outages, add the following to the instance profile of the enqueue replication server.

# enque/enrep/keepalive_count = 1

Register the resource types

# clrt register sapstartsrv
# clrt register sapcentr
# clrt register saprepenq
# clrt register sapdia
# clrt register saprepenq_preempt

Make the database highly available

Follow the instructions in the appropriate Oracle Solaris Cluster documentation. Name the database as db-rs.

Register the SAP resources with the appropriate commands

Follow the instructions in the appropriate Oracle Solaris Cluster documentation. Name the database as db-rs.

Create the sapstartsrv resource for the ABAP central services resource

As qe3adm:

# clrs create -d -g scs-rg -t sapstartsrv \
-p sid=QE3 \
-p sap_user=qe3adm \
-p instance_number=00 \
-p instance_name=ASCS00 \
-p HOST=bono-1 \
-p timeout_return=20 \
-p debug_level=0 \
-p resource_dependencies_offline_restart=hsp-rs \
abapscs-strt-rs

Create the ABAP central services resource

# clrs create -d -g scs-rg -t sapcentr \
-p sid=QE3 \
-p sap_user=qe3adm \
-p instance_number=00 \
-p instance_name=ASCS00 \
-p HOST=bono-1 \
-p yellow=20 \
-p debug_level=0 \
-p resource_dependencies_offline_restart=hsp-rs \
-p resource_dependencies=db-rs,abapscs-strt-rs \
abapscs-rs
# clrg online -eM +

Create the sapstartsrv resource for the JAVA Central Services Resource

As qe3adm:

# clrs create -d -g scs-rg -t sapstartsrv \
-p sid=QE3 \
-p sap_user=qe3adm \
-p instance_number=01 \
-p instance_name=SCS01 \
-p HOST=bono-1 \
-p timeout_return=20 \
-p debug_level=0 \
-p resource_dependencies_offline_restart=hsp-rs \
javascs-strt-rs

Create the JAVA central services resource

# clrs create -d -g scs-rg -t sapcentr \
-p sid=QE3 \
-p sap_user=qe3adm \
-p instance_number=01 \
-p instance_name=SCS01 \
-p HOST=bono-1 \
-p yellow=20 \
-p debug_level=0 \
-p resource_dependencies_offline_restart=hsp-rs \
-p resource_dependencies=db-rs,javascs-strt-rs \
javascs-rs
# clrg online -eM +

Create the sapstartsrv resource for the ABAP replicated enqueue service

As qe3adm:

# clrs create -d -g rep-rg -t sapstartsrv \
-p sid=QE3 \
-p sap_user=qe3adm \
-p instance_number=10 \
-p instance_name=ERS10 \
-p HOST=bono-3 \
-p timeout_return=20 \
-p debug_level=0 \
-p resource_dependencies_offline_restart=hsp-rs \
abaprep-strt-rs

Create the ABAP replicated enqueue service resource

# /usr/cluster/bin/clrs create -d -g rep-rg -t saprepenq \
-p sid=QE3 \
-p sap_user=qe3adm \
-p instance_number=10 \
-p instance_name=ERS10 \
-p HOST=bono-3 \
-p debug_level=0 \
-p resource_dependencies_offline_restart=hsp-rs \
-p resource_dependencies=abapscs-rs,abaprep-strt-rs \
abaprep-rs
# clrg online -eM +

Create the sapstartsrv resource for the JAVA replicated enqueue service

As qe3adm:

# clrs create -d -g rep-rg -t sapstartsrv \
-p sid=QE3 \
-p sap_user=qe3adm \
-p instance_number=11 \
-p instance_name=ERS11 \
-p HOST=bono-3 \
-p timeout_return=20 \
-p debug_level=0 \
-p resource_dependencies_offline_restart=hsp-rs \
javarep-strt-rs

Create the JAVA replicated enqueue resource

# /usr/cluster/bin/clrs create -d -g rep-rg -t saprepenq \
-p sid=QE3 \
-p sap_user=qe3adm \
-p instance_number=11 \
-p instance_name=ERS11 \
-p HOST=bono-3 \
-p debug_level=0 \
-p resource_dependencies_offline_restart=hsp-rs \
-p resource_dependencies=javascs-rs,javarep-strt-rs \
javarep-rs
# clrg online -eM +

Create the replicated pre-empter

# /usr/cluster/bin/clrs create -d -g scs-rg -t saprepenq_preempt \
-p sid=QE3 \
-p sap_user=qe3adm \
-p repenqres=abaprep-rs \
-p enq_instnr=00,01 \
-p debug_level=0 \
-p resource_dependencies_offline_restart=hsp-rs,abapscs-rs,javascs-rs \
-p resource_dependencies=db-rs \
preempt-rs

Create the sapstartsrv resource for the primary application server resource

As qe3adm:

# /usr/cluster/bin/clrs create -d -g pas-rg -t sapstartsrv \
-p sid=QE3 \
-p sap_user=qe3adm \
-p instance_number=02 \
-p instance_name=DVEBMGS02 \
-p HOST=bono-4 \
-p timeout_return=20 \
-p debug_level=0 \
-p resource_dependencies_offline_restart=hsp-rs \
pas-strt-rs

Create the primary application server resource

# /usr/cluster/bin/clrs create -d -g pas-rg -t sapdia \
-p sid=QE3 \
-p sap_user=qe3adm \
-p instance_number=02 \
-p instance_name=DVEBMGS02 \
-p HOST=bono-4 \
-p debug_level=0 \
-p resource_dependencies_offline_restart=hsp-rs \
-p resource_dependencies=db-rs,abapscs-rs,javascs-rs,pas-strt-rs \
pas-rs
# clrg online -eM +

Create the sapstartsrv resource for the additional application server

On the first node, as qe3adm:

On the second node, as qe3adm:

# /usr/cluster/bin/clrs create -d -g dia-rg -t sapstartsrv \
-p sid=QE3 \
-p sap_user=qe3adm \
-p instance_number{pbono1}=03 \
-p instance_number{pbono2}=04 \
-p instance_name{pbono1}=D03 \
-p instance_name{pbono2}=D04 \
-p timeout_return=20 \
-p debug_level=0 \
-p resource_dependencies_offline_restart=hsp-rs \
dia-strt-rs

Create the additional application server resource

# /usr/cluster/bin/clrs create -d -g dia-rg -t sapdia \
-p sid=QE3 \
-p sap_user=qe3adm \
-p instance_number{pbono1}=03 \
-p instance_number{pbono2}=04 \
-p instance_name{pbono1}=D03 \
-p instance_name{pbono2}=D04 \
-p HOST{pbono1}=pbono1 \
-p HOST{pbono2}=pbono2 \
-p debug_level=0 \
-p resource_dependencies_offline_restart=hsp-rs \
-p resource_dependencies=db-rs,abapscs-rs,javascs-rs,dia-strt-rs \
dia-rs
# clrg online -eM +

How to Integrate Oracle Solaris Cluster Management and SAP Instance Management

Download and install the latest hostagent.

  1. Configure every instance profile with the following lines, assuming that saphascriptco.co is in the /usr/sap/hostctrl/exe/saphascriptco directory.

    #
    # SAP HA Script Connector
    #
    service/halib = /usr/sap/hostctrl/exe/saphascriptco.so
    service/halib_cluster_connector = /
    /opt/ORCLscsapnetw/saphacmd/bin/sap_orcl_cluster_connector
    service/halib_debug_level = 1
  2. Create the /usr/local/bin directory on every node.

  3. Create the following symbolic links under the /usr/local/bin directory on every node.

    # ls -la /usr/local/bin
    total 8
    drwxr-xr-x   2 root     root           4 May 29 02:22 .
    drwxr-xr-x   3 root     root           3 May 29 02:13 ..
    lrwxrwxrwx   1 root     root          48 May 29 02:22 /
    functions_sap_ha -> /opt/ORCLscsapnetw/saphacmd/bin/functions_sap_ha
    lrwxrwxrwx   1 root     root          58 May 29 02:14 /
    sap_cluster_connector -> /opt/ORCLscsapnetw/saphacmd/bin/sap_orcl_cluster_connector
    
    # cd /usr/local/bin
    # ln -s  /opt/ORCLscsapnetw/saphacmd/bin/functions_sap_ha /
    ./functions_sap_ha
    # ln -s /opt/ORCLscsapnetw/saphacmd/bin/sap_orcl_cluster_connector /
    sap_orcl_cluster_connector
  4. Restart the instances and the corresponding sapstartsrv process.

Generic test case

For all sapstartsrv resources, kill the sapstartsrv process. The underlying instance will be restarted as well.

For all instance resources, kill the instance processes. The underlying instance will be restarted or failed over in case of a central service.