Beispielinstallation eines SUN 2 Node Cluster mit SunCluster 3.1
Author:Frank
Datum:01.03.2004 letztes Update 02.03.2004
Zusammenfassung: Der Beispiel-Cluster besteht physikalisch aus zwei Workstation, den sogenannten Nodes, und zwei Array.
Auf diesen Maschinen wird eine Datenbank installiert.
Durch den Einsatz der Clustersoftware wird die Hardware so zu einem logischen Host verstrickt,
dass möglichst alle Fehlersituationen umgangen werden können.
Inhalt:
  1. Installation Admin Station und Terminalconcentrator
  2. Aufsetzen der beiden Cluster Node
  3. Installation der eigentlichen Cluster Software
  4. Resetten des installmode
  5. Installation von Veritas
  6. Konfiguration der shared Disk Groups und Volumen
  7. IPMP anlegen
  8. Installation der ORACLE Software
  9. Einbau von Oracle in das Clusterframework
  10. Beispiel zum Hinzufügen des Oracle Internet Directory

 Schritt A.

[Installation Admin Station und Terminalconcentrator]

Vor der Installation sollte ein Datenblatt generiert werden, in dem für den gesammten Cluster die elemtaren Dinge (IP, Disklayout etc) definiert werden.
Eine Adminworkstation braucht man nicht unbedingt, der Cluster läuft auch ohne. Mit der Adminworkstation kann man ihn aber wesentlich angenehmer administrieren. Als zuerst die Adminworkstation aufsetzen.
 
Hostname:dba01
IP-Adresse:192.168.3.6 /24

  1. Installation der Hardware
  2. Installation von Solaris 9 Enduser
  3. Installation der aktuellen Recommended Patche von sunsolve
  4. Installation der Cluster Clientsoftware. Auf der Cluster-CD befindet sich das Paket SUNWccon
    das kann man einfach mit pkgadd -d . SUNWccon
  5. Anlegen einer /.profile Datei. In dieser Datei wird der Path um /opt/SUNWcluster/bin erweitert.
  6. In der Datei /etc/hosts müssen alle Maschinen des Clusteres eingetragen werden.
  7. Anlegen der Datei /etc/clusters mit den Daten des Clusters.
  8. Anlegen der Datei /etc/serialports mit den Daten des Clusters.
    In der Form "Node" "TC-Name" "500x", wobei x der Port am TC ist auf dem der jeweilige Node steckt.
  9. Hinzufügen eines Eintrages in die Datei /etc/remote:
    	node1:\
    	:dv=/dev/term/a:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D:
    	node2:\
    	:dv=/dev/term/b:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D:
    	

 Schritt B.

[Aufsetzen der beiden Cluster Node]

Durch Eingabe des Kommandos cconsole ocsp auf der Admin Workstation erhält man auf beiden Nodes ein Terminalfenster in dem man gleichzeitig ;-) schreiben kann. Absolut coole Sache. So kann man beide Nodes zur selben Zeit aufsetzen und stellt somit sicher dass beide auch wirklich identisch sind.
Hostname Node 1:db1
IP-Adresse Node 1:192.168.3.1 /24
Hostname Node 2:db2
IP-Adresse Node 2:192.168.3.2 /24

  1. Installation der Hardware, beide Workstation und beide Array´s
    Vor der Installation von Solaris können schon alle Verbindungen gesteckt sein.
    Beim Einsatz eines A5100 und nur 7 Platten muss man genau auf die Verteilung achten. Die würde wie folgt aussehen:
    Vorn: 0, 5 und 10
    Hinten: 0, 3, 6 und 10

  2. Die Karten sollten wie folgt verteilt werden:
     
    Steckplatz PCI 1Quad Ethenet
    Steckplatz PCI 2Grafik
    Steckplatz PCI 3Fibre Channel
    Steckplatz PCI 4Fibre Channel
  3. Direkt am ersten Arrays wird die BOX-ID auf 0 (null) gesetzt und der Array-Name "links" vergeben.
  4. Am zweiten Arrays wird die BOX-ID auf 1 (eins) gesetzt und der Array-Name "rechts" vergeben.
  5. Installation von Solaris 9 (Entire Distribution plus OEM support 64-bit 2212.00 MB)
  6. Bei der Partitionierung der Festplatte gibt es folgendes zu Bedenken.
    Wenn wir Veritas VM verwenden benötigen wir zwei freie Slizes (default:3 und 4)
    Der Cluster selbst braucht für sein Globalfilesystem einen Slize der ca. 512 MB gross sein sollte.
    Falls wir doch mal mit SDS rumspielen wollen brauchen wir einen freien Slize und ca 20MB Platz.
    ===============================================
      Slice	 Mount Point                 Size (MB)
    	0  /                               28052
    	1  swap                             6144
    	2  overlap                         34730
    	3                                       0
    	4                                       0
    	5                                       0
    	6  /globaldevices                    512
    	7  /bla                               21
    ================================================
    	
  7. Installation der aktuellen Recommended Patche von sunsolve
  8. Jetzt brauchen wir noch ein paar weitere Patche. Die erhalten wir von PatchPro. An dieser Stelle installieren wir die PreSunClusterPatches.tar. Die Installationsreihenfolge der Patche steht in der enthaltenen Readme Datei. Die öffnen und alles ausser den Patchnummern entfernen. Dann kann man die Patche per Schleife installieren
    # for i in `cat README.txt`
    > do
    > echo "installiere $i" ; unzip -q $i ; patchadd $i
    > done
    	
  9. Sicherung der Dateien
    /etc/system, /etc/path_to_inst, /etc/vfstab, /etc/named_to_major
 Schritt C.

[Installation der eigentlichen Cluster Software]

  1. Auf der CD in Verzeichnis /cdrom/suncluster_3_1_u1/SunCluster_3.1/Sol_9/Tools wechseln und das Script ./scinstall ausführen.
  2. 1) Install a cluster or cluster node
  3. 2) Install just this machine as the first node of a new cluster
  4. Is it okay to continue (yes/no) [yes]? yes
    ** Installing SunCluster 3.1 framework **
            SUNWscr.....done
            SUNWscu.....done
            SUNWscsck...done
            SUNWscnm....done
            SUNWscdev...done
            SUNWscgds...done
            SUNWscman...done
            SUNWscsal...done
            SUNWscsam...done
            SUNWscvm....done
            SUNWmdm.....done
            SUNWscva....done
            SUNWscvr....done
            SUNWscvw....done
            SUNWscrsm...done
            SUNWfsc.....done
            SUNWfscvw...done
            SUNWjsc.....done
            SUNWjscman..done
            SUNWjscvw...done
            SUNWksc.....done
            SUNWkscvw...done
            SUNWcsc.....done
            SUNWcscvw...done
            SUNWhsc.....done
            SUNWhscvw...done
            SUNWexplo...done
    
        
    Press Enter to continue:
  5. >Do you want scinstall to install patches for you (yes/no) [yes]? no
  6. >What is the name of the cluster you want to establish? ocsp
  7. >Do you want to run sccheck (yes/no) [yes]?
    sccheck: Requesting explorer data and node report from db1.
    sccheck: db1: Explorer finished.
    sccheck: db1: Starting single-node checks.
    sccheck: db1: Single-node checks finished.
    
        
    
        
    Press Enter to continue:
  8. Node name:  db2
        Node name (Control-D to finish):  ^D
    
    
        This is the complete list of nodes:
    
            db1
            db2
    
        Is it correct (yes/no) [yes]? 
  9. Do you need to use DES authentication (yes/no) [no]?
  10. Is it okay to accept the default network address (yes/no) [yes]?
  11. Is it okay to accept the default netmask (yes/no) [yes]?
  12. Does this two-node cluster use transport junctions (yes/no) [yes]? no
  13. >>> Cluster Transport Adapters and Cables <<<
    
        You must configure at least two cluster transport adapters for each
        node in the cluster. These are the adapters which attach to the
        private cluster interconnect.
    
        Select the first cluster transport adapter:
    
            1) hme0
            2) qfe0
            3) qfe2
            4) qfe3
            5) Other
    
        Option:  1
    
        Adapter "hme0" is an Ethernet adapter.
    
        Searching for any unexpected network traffic on "hme0" ... done
        Verification completed. No traffic was detected over a 10 second
        sample period.
    
        The "dlpi" transport type will be set for this cluster.
    
        Select the second cluster transport adapter:
    
            1) hme0
            2) qfe0
            3) qfe2
            4) qfe3
            5) Other
    
        Option:  2
    
  14. >>> Global Devices File System <<<
    
        Each node in the cluster must have a local file system mounted on
        /global/.devices/node@ before it can successfully participate
        as a cluster member. Since the "nodeID" is not assigned until
        scinstall is run, scinstall will set this up for you.
    
        You must supply the name of either an already-mounted file system or
        raw disk partition which scinstall can use to create the global
        devices file system. This file system or partition should be at least
        512 MB in size.
    
        If an already-mounted file system is used, the file system must be
        empty. If a raw disk partition is used, a new file system will be
        created for you.
    
        The default is to use /globaldevices.
    
        Is it okay to use this default (yes/no) [yes]? 
    
  15. >Do you want scinstall to reboot for you (yes/no) [yes]? no
  16. Der Cluster wird jetzt einige Konfigurationen vornehmen. Vor dem notwendigen reboot können wir noch die SunClusterPatches.tar und die PostSunClusterPatches.tar installieren
  17. reboot
  18. Als nächstes wird die Clustersoftware auf dem zweiten Node installiert
 Schritt D.

[Resetten des installmode]

  1. Zuerst sollten wir prüfen ob der DID Treiber auf allen Nodes die selbe Major Nummer hat:
    # grep did /etc/name_to_major
    did 300
    
  2. Ausserdem sollte man auf beiden Seiten prüfen ob alle Nodes auch alle Platten sehen können:
     scdidadm -L
    1        db1:/dev/rdsk/c0t0d0           /dev/did/rdsk/d1     
    2        db1:/dev/rdsk/c0t6d0           /dev/did/rdsk/d2     
    3        db1:/dev/rdsk/c1t19d0          /dev/did/rdsk/d3     
    3        db2:/dev/rdsk/c1t19d0          /dev/did/rdsk/d3     
    4        db1:/dev/rdsk/c1t22d0          /dev/did/rdsk/d4     
    4        db2:/dev/rdsk/c1t22d0          /dev/did/rdsk/d4     
    5        db1:/dev/rdsk/c1t26d0          /dev/did/rdsk/d5     
    5        db2:/dev/rdsk/c1t26d0          /dev/did/rdsk/d5     
    6        db1:/dev/rdsk/c1t0d0           /dev/did/rdsk/d6     
    6        db2:/dev/rdsk/c1t0d0           /dev/did/rdsk/d6     
    7        db1:/dev/rdsk/c1t16d0          /dev/did/rdsk/d7     
    7        db2:/dev/rdsk/c1t16d0          /dev/did/rdsk/d7     
    8        db1:/dev/rdsk/c1t5d0           /dev/did/rdsk/d8     
    8        db2:/dev/rdsk/c1t5d0           /dev/did/rdsk/d8     
    9        db1:/dev/rdsk/c1t10d0          /dev/did/rdsk/d9     
    9        db2:/dev/rdsk/c1t10d0          /dev/did/rdsk/d9     
    10       db1:/dev/rdsk/c2t51d0          /dev/did/rdsk/d10    
    10       db2:/dev/rdsk/c2t51d0          /dev/did/rdsk/d10    
    11       db1:/dev/rdsk/c2t58d0          /dev/did/rdsk/d11    
    11       db2:/dev/rdsk/c2t58d0          /dev/did/rdsk/d11    
    12       db1:/dev/rdsk/c2t48d0          /dev/did/rdsk/d12    
    12       db2:/dev/rdsk/c2t48d0          /dev/did/rdsk/d12    
    13       db1:/dev/rdsk/c2t32d0          /dev/did/rdsk/d13    
    13       db2:/dev/rdsk/c2t32d0          /dev/did/rdsk/d13    
    14       db1:/dev/rdsk/c2t42d0          /dev/did/rdsk/d14    
    14       db2:/dev/rdsk/c2t42d0          /dev/did/rdsk/d14    
    15       db1:/dev/rdsk/c2t54d0          /dev/did/rdsk/d15    
    15       db2:/dev/rdsk/c2t54d0          /dev/did/rdsk/d15    
    16       db1:/dev/rdsk/c2t37d0          /dev/did/rdsk/d16    
    16       db2:/dev/rdsk/c2t37d0          /dev/did/rdsk/d16    
    17       db2:/dev/rdsk/c0t0d0           /dev/did/rdsk/d17    
    18       db2:/dev/rdsk/c0t6d0           /dev/did/rdsk/d18 
    
  3. Danach sollte NTP konfiguriert werden. Falls es keinen Zeitserver geben sollte kann auch die Beispieldatei /etc/inet/ntp.conf.cluster nach /etc/inet/ntp.conf kopiert werden. Alle unnötigen Einträge kann man auch entfernen.
  4. Um sich das Leben etwas zu vereinfachen kann man die IP Adressen für den Interconnect in die /etc/hosts eintragen.
    #  grep 172 /etc/cluster/ccr/infrastructure
    cluster.properties.private_net_number   172.16.0.0
    cluster.nodes.1.adapters.1.properties.ip_address        172.16.0.129
    cluster.nodes.1.adapters.2.properties.ip_address        172.16.1.1
    cluster.nodes.2.adapters.1.properties.ip_address        172.16.0.130
    cluster.nodes.2.adapters.2.properties.ip_address        172.16.1.2
    
  5. Bis jetzt befindet sich der Cluster noch im sogenannten "initialmode", d.h. die Clustersoftware ist nicht aktiviert. Mit scsetup kann man den Cluster scharf schalten. vorher/gleichzeitig sollte man aber ein Quorum Device festlegen. In diesem Beispeil nehmen die d3, weil es die erste Platte ist die beide Cluster sehen (siehe scdidadm -L)
     >>> Initial Cluster Setup <<<
    
        This program has detected that the cluster "installmode" attribute is
        still enabled. As such, certain initial cluster setup steps will be
        performed at this time. This includes adding any necessary quorum
        devices, then resetting both the quorum vote counts and the
        "installmode" property.
    
        Please do not proceed if any additional nodes have yet to join the
        cluster.
    
        Is it okay to continue (yes/no) [yes]?  
    
     Do you want to add any quorum disks (yes/no) [yes]?
    
    Dual-ported SCSI-2 disks may be used as quorum devices in two-node
        clusters. However, clusters with more than two nodes require that
        SCSI-3 PGR disks be used for all disks with more than two
        node-to-disk paths. You can use a disk containing user data or one
        that is a member of a device group as a quorum device.
    
        Each quorum disk must be connected to at least two nodes. Please
        refer to the Sun Cluster documentation for more information on
        supported quorum device topologies.
    
        Which global device do you want to use (d)?  d3
    
    Is it okay to proceed with the update (yes/no) [yes]?
    
    scconf -a -q globaldev=d3
    
        Command completed successfully.
    
    Do you want to add another quorum disk (yes/no)?  no
    
    Once the "installmode" property has been reset, this program will
        skip "Initial Cluster Setup" each time it is run again in the future.
        However, quorum devices can always be added to the cluster using the
        regular menu options. Resetting this property fully activates quorum
        settings and is necessary for the normal and safe operation of the
        cluster.
    
        Is it okay to reset "installmode" (yes/no) [yes]?
    
    scconf -c -q reset
    scconf -a -T node=.
    
        Cluster initialization is complete.
    
 Schritt E.

[Installation von Veritas]

  1. Bei der Veritas Installation sollten beide Node im Cluster sein und laufen.
  2. Veritas CD einlegen und Software über den Clusterbefehl scvxinstall installieren.
    Do you want Volume Manager to encapsulate root [no]?  yes
    Where is the Volume Manager cdrom [/cdrom/cdrom0]?  
    
    Disabling DMP.
    Installing packages from /cdrom/cdrom0/pkgs.
    Installing VRTSvlic.
    Installing VRTSvxvm.
    Installing VRTSvmman.
    Obtaining the clusterwide vxio number...
    Using 315 as the vxio major number.
    Volume Manager installation is complete.
    
        One or more Volume Manager features are already licensed.
        Use the "vxlicrep" command to get a report of Veritas license keys 
        installed.
        If you do not want to supply an additional license key, just
        press ENTER.  Otherwise, you may provide one additional key.
    
    Please enter a Volume Manager license key [none]:  
    
    Verifying encapsulation requirements.
    
    The Volume Manager root disk encapsulation step will begin in 20 seconds.
    Type Ctrl-C to abort ....................
    Arranging for Volume Manager encapsulation of the root disk.
    The vxconfigd daemon has been started and is in disabled mode...
    Reinitialized the volboot file...
    Created the rootdg...
    Added the rootdisk to the rootdg...
    The setup to encapsulate rootdisk is complete...
    Updating /global/.devices entry in /etc/vfstab.
    
    Wenn alles richtig gemacht wurde, rebootet die Maschine nun zweimal wie von Zauberhand.
  3. Wenn der erste Node wieder oben ist, dann auf beiden Maschinen ein domainname tralala.de absetzen. ,ansonsten kann der zweite Node nicht die VXIO Major/Minor Nummer vom Ersten abfragen.
  4. Mit scxvinstall auch hier Veritas installieren.
  5. Manchmal kann der Node nach dem zweiten Reboot seinen swap nicht finden kann, weil die Minor Nummer nicht übernommen worden ist. Hier hilft ein dritter Reboot - wir haben ja Zeit :-)
 Schritt F.

[Konfiguration der shared Disk Groups und Volumen]

  1. Welche Platten haben wir denn:
    # vxdisk -o alldgs list
    DEVICE       TYPE      DISK         GROUP        STATUS
    c0t0d0s2     sliced    rootdisk_1   rootdg       online
    c1t0d0s2     sliced    -            -            error
    c1t5d0s2     sliced    -            -            error
    c1t10d0s2    sliced    -            -            error
    c1t16d0s2    sliced    -            -            error
    c1t19d0s2    sliced    -            -            error
    c1t22d0s2    sliced    -            -            error
    c1t26d0s2    sliced    -            -            error
    c2t32d0s2    sliced    -            -            error
    c2t37d0s2    sliced    -            -            error
    c2t42d0s2    sliced    -            -            error
    c2t48d0s2    sliced    -            -            error
    c2t51d0s2    sliced    -            -            error
    c2t54d0s2    sliced    -            -            error
    c2t58d0s2    sliced    -            -            error
    
  2. error bedeutet nicht Fehler, sondern das die Platten nicht unter Veritas Kontrolle stehen. Mit dem Befehl vxdisksetup -i c1t0d0 für alle Platten können wir das ändern.
  3. Nun sollten alle Platten drin sein:
    # vxdisk -o alldgs list  
    DEVICE       TYPE      DISK         GROUP        STATUS
    c0t0d0s2     sliced    rootdisk_1   rootdg       online
    c1t0d0s2     sliced    -            -            online
    c1t5d0s2     sliced    -            -            online
    c1t10d0s2    sliced    -            -            online
    c1t16d0s2    sliced    -            -            online
    c1t19d0s2    sliced    -            -            online
    c1t22d0s2    sliced    -            -            online
    c1t26d0s2    sliced    -            -            online
    c2t32d0s2    sliced    -            -            online
    c2t37d0s2    sliced    -            -            online
    c2t42d0s2    sliced    -            -            online
    c2t48d0s2    sliced    -            -            online
    c2t51d0s2    sliced    -            -            online
    c2t54d0s2    sliced    -            -            online
    c2t58d0s2    sliced    -            -            online
    
  4. Wir benötigen 2 Diskgruppen. Eine für die eigentliche Oracle Installation (oradg) eine zweite für einen Dienst den wir zusätzlich schreiben.(protdg)
    Hier macht es sich besonders nett wenn man die Plattenaufteilung vorher ausdenkt. Wenn man eine Oracle-Admin hat sollten man den vorher fragen, erfahrungsgemäß haben die eigene Vorstellungen vom Plattenlayout. Auch sollte man sich ein Namensschema ausdenken. Die Platte lv0 steht für:
    l Array mit Namen links
    v Platteneinschub vorn
    0 Steckplatz 0
    # vxdg init protdg lv0=c1t0d0s2
    # vxdg -g protdg adddisk rv0=c2t32d0s2
    #
    # vxdg init oradg lv5=c1t5d0s2        
    # vxdg -g oradg adddisk lv10=c1t10d0s2
    # vxdg -g oradg adddisk lh0=c1t16d0s2 
    # vxdg -g oradg adddisk lh3=c1t19d0s2
    # vxdg -g oradg adddisk lh6=c1t22d0s2
    # vxdg -g oradg adddisk lh10=c1t26d0s2
    # vxdg -g oradg adddisk rv5=c2t37d0s2
    # vxdg -g oradg adddisk rv10=c2t42d0s2
    # vxdg -g oradg adddisk rh0=c2t48d0s2 
    # vxdg -g oradg adddisk rh3=c2t51d0s2
    # vxdg -g oradg adddisk rh6=c2t54d0s2
    # vxdg -g oradg adddisk rh10=c2t58d0s2
    
  5. Und auch nach diesem Schritt nachsehen ob alles so aussieht wie wir denken:
    # vxdisk -o alldgs list               
    DEVICE       TYPE      DISK         GROUP        STATUS
    c0t0d0s2     sliced    rootdisk_1   rootdg       online
    c1t0d0s2     sliced    lv0          protdg       online
    c1t5d0s2     sliced    lv5          oradg        online
    c1t10d0s2    sliced    lv10         oradg        online
    c1t16d0s2    sliced    lh0          oradg        online
    c1t19d0s2    sliced    lh3          oradg        online
    c1t22d0s2    sliced    lh6          oradg        online
    c1t26d0s2    sliced    lh10         oradg        online
    c2t32d0s2    sliced    rv0          protdg       online
    c2t37d0s2    sliced    rv5          oradg        online
    c2t42d0s2    sliced    rv10         oradg        online
    c2t48d0s2    sliced    rh0          oradg        online
    c2t51d0s2    sliced    rh3          oradg        online
    c2t54d0s2    sliced    rh6          oradg        online
    c2t58d0s2    sliced    rh10         oradg        online
    
  6. Nun bauen wir die Volumen für Oracle
    # vxassist -g oradg make redolog01 512m layout=mirror-concat lv5 rv5 &
    # vxassist -g oradg make redolog02 512m layout=mirror-concat lv10 rv10 &
    # vxassist -g oradg make redolog03 512m layout=mirror-concat lh0 rh0 &
    # vxassist -g oradg make rbs 3072m layout=mirror-stripe lh3 lh6 rh3 rh6 &
    # vxassist -g oradg make tools 1536m layout=mirror-concat lv5 rv5 &
    # vxassist -g oradg make temp01 1536m layout=mirror-concat lv10 rv10 &
    # vxassist -g oradg make user 1536m layout=mirror-concat  lh0 rh0 &
    # vxassist -g oradg make index01 1024m layout=mirror-stripe lh3 lh6 rh3 rh6 &
    
  7. Für das letzte Volumen wollen wir den restlichen Platz verbraten. Aber wie viel Platz ist noch ?
    # vxassist -g oradg maxsize layout=mirror-stripe lv5 lv10 lh0 lh3 lh6 rv5 rv10 rh0 rh3 rh6
    Maximum volume size: 155777024 (76063Mb)
    
    Mit dieser Info (76063Mb) bauen wir das letzte Volumen
    vxassist -g oradg make system01 76063m layout=mirror-stripe nstripe=5 mirror=ctlr ctlr:c1 ctlr:c2 \
    lv5 lv10 lh0 lh3 lh6 rv5 rv10 rh0 rh3 rh6
    
  8. Das selbe für die protdg
    vxassist -g protdg make prot01 10240m layout=mirror-concat lv0 rv0 &
    
  9. Ausserdem legen wir zwei Spare Platten an
    vxedit -g oradg set spare=on lh10
    vxedit -g oradg set spare=on rh10
    
    # vxdisk list |grep spare          
    c1t26d0s2    sliced    lh10         oradg        online spare
    c2t58d0s2    sliced    rh10         oradg        online spare
    
  10. Mit dem nächsten Schritt sollten wir warten bis alle Volumen gebaut sind:
    # vxtask list
    TASKID  PTID TYPE/STATE    PCT   PROGRESS
       170         RDWRBACK/R 30.81% 0/155777024/48001392 VOLSTART system01
       172         RDWRBACK/R 58.61% 0/20971520/12291624 VOLSTART prot01
    
  11. Normalerweise würden wir jetzt ein Filesystem auf die Volumen legen. Das wird aber nicht funktionieren, weil der Cluster den Zugriff auf alle device blockiert. Von den eben mühsam erstellen Volumen weiss der Cluster aber nichts
    # scstat -D
    -- Device Group Servers --
                             Device Group        Primary             Secondary
                             ------------        -------             ---------
    
    -- Device Group Status --
                                  Device Group        Status              
                                  ------------        ------  
    
  12. Wir erzählen also unserem Cluster was von seinen Disk Gruppen
    # scconf -a -D type=vxvm,name=protdg,nodelist=db1:db2
    # scconf -a -D type=vxvm,name=oradg,nodelist=db1:db2
    
    Und hat er er die nun ?
    # scstat -D 
    -- Device Group Servers --
                             Device Group        Primary             Secondary
                             ------------        -------             ---------
      Device group servers:  protdg              db1                 db2
      Device group servers:  oradg               db1                 db2
    
    
    -- Device Group Status --
                                  Device Group        Status              
                                  ------------        ------              
      Device group status:        protdg              Online
      Device group status:        oradg               Online
    
  13. Dann können wir jetzt ja das Filsystem anlegen
    newfs /dev/vx/rdsk/protdg/prot01
    newfs /dev/vx/rdsk/oradg/rbs
    newfs /dev/vx/rdsk/oradg/tools
    newfs /dev/vx/rdsk/oradg/temp01 
    newfs /dev/vx/rdsk/oradg/user
    newfs /dev/vx/rdsk/oradg/index01
    newfs /dev/vx/rdsk/oradg/system01
    newfs /dev/vx/rdsk/oradg/redolog01
    newfs /dev/vx/rdsk/oradg/redolog02
    newfs /dev/vx/rdsk/oradg/redolog03
    
 Schritt G.

[IPMP anlegen]

  1. Das Public Network liegt momentan nur auf qfe1
    # ifconfig qfe1
    qfe1: flags=1000843 mtu 1500 index 2
            inet 192.168.3.1 netmask ffffff00 broadcast 192.168.3.255
    
    # more /etc/hostname.qfe1 
    db1
    
  2. Im Cluster sollte alles redundant sein, deshalb stecken wir qfe3 auch in das Public Network. Dazu benutzen wir das unter Solaris übliche IP Multipathing. Wir legen beide Interface in eine IPMP Gruppe names "ocsp-net"
    # grep db1 /etc/hosts
    192.168.3.1     db1 db1.d-frust.de
    192.168.3.101   db1-qfe1
    192.168.3.201   db1-qfe3
    172.16.0.129    db1-priv1
    172.16.1.1      db1-priv2
    
    # more /etc/hostname.qfe1 
    db1 group ocsp-net up
    addif db1-qfe1 -failover deprecated up
    
    # more /etc/hostname.qfe3 
    db1-qfe3 group ocsp-net -failover deprecated up
    
    Wenn die drei Datein entsprechend geändert wurden können wir diesen Node rebooten:
    init 6
  3. Wenn der erste Node wieder oben ist kann man sich die IPMP Gruppe ansehen:
    # ifconfig -a
    qfe1: flags=1000843 mtu 1500 index 2
            inet 192.168.3.1 netmask ffffff00 broadcast 192.168.3.255
            groupname ocsp-net
    qfe1:1: flags=9040843 mtu 1500 index 2
            inet 192.168.3.101 netmask ffffff00 broadcast 192.168.3.255
    qfe3: flags=9040843 mtu 1500 index 3
            inet 192.168.3.201 netmask ffffff00 broadcast 192.168.3.255
            groupname ocsp-net
    
  4. Jetzt das ganze auf dem zweiten Node
 Schritt H.

[ORACLE]

  1. In die Datei /etc/hosts wird die logische IP des Oracle Servers eingetragen
    # grep 3.5 /etc/hosts
    192.168.3.5     db db.d-frust.de
    
  2. Die Gruppe dba und der User oracle wird angelegt:
    groupadd -g 2005 dba
    useradd -m -c "oracle user" -g dba -u 2005 -d /opt/oracle oracle
    passwd oracle
    
  3. Alle Diskgruppen sollten Oracle gehören. Das muss man per vxedit einstellen, und diese Änderungen auch per scconf dem Cluster mitteilen:
    # vxprint -l -v redolog01 |more 
    Disk group: oradg
    Volume:   redolog01
    info:     len=1048576
    type:     usetype=fsgen
    state:    state=ACTIVE kernel=ENABLED cdsrecovery=0/0 (clean)
    assoc:    plexes=redolog01-01,redolog01-02
    policies: read=SELECT (round-robin) exceptions=GEN_DET_SPARSE
    flags:    closed writeback
    logging:  type=REGION loglen=0 serial=0/0 (disabled)
    apprecov: seqno=0/0
    recovery: mode=default
    recov_id=0
    device:   minor=24000 bdev=315/24000 cdev=315/24000 path=/dev/vx/dsk/oradg/redolog01
    perms:    user=root group=root mode=0600
    
    # vxedit -g oradg set user=oracle group=dba redolog01
    # vxedit -g oradg set user=oracle group=dba redolog02
    # vxedit -g oradg set user=oracle group=dba redolog03
    ---usw.-----
    
    #  vxprint -l -v redolog01 |grep perms               
    perms:    user=oracle group=dba mode=0600
    
    # scconf -c -D name=oradg,sync
    
  4. Dann auf beiden Seiten die Mount- Point anlegen
    # mkdir -p /global/oracle/system
    # mkdir -p /global/oracle/index
    # mkdir -p /global/oracle/rbs
    # mkdir -p /global/oracle/temp
    # mkdir -p /global/oracle/tools
    # mkdir -p /global/oracle/user
    # mkdir -p /global/oracle/redolog01
    # mkdir -p /global/oracle/redolog02
    # mkdir -p /global/oracle/redolog03
    
  5. dann diese Punkte in die /etc/vfstab eintragen:
    /dev/vx/dsk/oradg/system01  /dev/vx/rdsk/oradg/system01  /global/oracle/system    ufs 2 yes logging,global
    /dev/vx/dsk/oradg/index01   /dev/vx/rdsk/oradg/index01   /global/oracle/index     ufs 2 yes logging,global
    /dev/vx/dsk/oradg/rbs       /dev/vx/rdsk/oradg/rbs       /global/oracle/rbs       ufs 2 yes logging,global
    /dev/vx/dsk/oradg/temp01    /dev/vx/rdsk/oradg/temp01    /global/oracle/temp      ufs 2 yes logging,global
    /dev/vx/dsk/oradg/tools     /dev/vx/rdsk/oradg/tools     /global/oracle/tools     ufs 2 yes logging,global
    /dev/vx/dsk/oradg/user      /dev/vx/rdsk/oradg/user      /global/oracle/user      ufs 2 yes logging,global
    /dev/vx/dsk/oradg/redolog01 /dev/vx/rdsk/oradg/redolog01 /global/oracle/redolog01 ufs 2 yes logging,global
    /dev/vx/dsk/oradg/redolog02 /dev/vx/rdsk/oradg/redolog02 /global/oracle/redolog02 ufs 2 yes logging,global
    /dev/vx/dsk/oradg/redolog03 /dev/vx/rdsk/oradg/redolog03 /global/oracle/redolog03 ufs 2 yes logging,global
    
    Die Filesysteme werden im Cluster durch die s.g. HAStoragePlus Resource verwaltet. Diese holt Ihre Informationen aus der /etc/vfstab.
    Steht dort ufs 2 yes logging,global dann handelt es sich um ein globales Filesystem, das von allen Nodes gemountet wird.
    Steht dort ufs 2 no logging handelt es sich um ein lokales Filesystem was von HAStoragePlus immer (nur) an den aktiven Node gehängt wird..
  6. folgende Änderung in die /etc/system eintragen:
    * Start aenderung fuer oracle
    set shmsys:shminfo_shmmax=4294967295
    set shmsys:shminfo_shmmin=1
    set shmsys:shminfo_shmmni=200
    set shmsys:shminfo_shmseg=40
    set semsys:seminfo_semmni=200
    set semsys:seminfo_semmsl=1000
    set semsys:seminfo_semmns=3000
    set semsys:seminfo_semopm=200
    set semsys:seminfo_semvmx=32767
    * End aenderung fuer oracle
    
    und rebooten init 6
  7. Auf einem Node sollten nun Platten gemountet werden.
  8. Als User oracle kann nun die Oracle Software installiert werden. Dabei ist zu beachten das, keine Standardinstallation vorgenommen wird. Die Oracle Binaries kommen nach /opt/oracle und die eigentliche Datenbank nach /global/oracle
  9. als nächsten benötigen wir ein paar Anpassungen für den Fehlermonitor
    $ sqlplus /nolog
    SQL> connect / as sysdba
    SQL> create user sc_fm identified by sc_fm;
    SQL> grant create session, create table to sc_fm;
    SQL> grant select on v_$sysstat to sc_fm;
    SQL> alter user sc_fm default tablespace users quota 1m on users;
    SQL> quit
    
    Das Passwort identified by sc_fm ist natürlich nur ein Beispiel, und sollte auf etwas sicherem gestellt werden. Die Tabelle v_$sysstate wird erst nach einiger Zeit erstellt. Wenn diese Tabelle noch nicht da sein sollte, muss man eben eine Kaffepause machen.
  10. Überprüfen ob der Account auch wirklich funktioniert:
    $ sqlplus sc_fm/sc_fm
    SQL> select * from sys.v_$sysstat;
    SQL> quit
    
  11. Eine weitere Tabelle anlegen
    $ sqlplus /nolog
    SQL> connect / as sysdba
    SQL> create table mytable (mykey VARCHAR2(10), myval NUMBER(10));
    SQL> insert into mytable values (´off´, 0);
    SQL> insert into mytable values (´on´, 1);
    SQL> commit;
    SQL> select * from mytable;
    
    MYKEY           MYVAL
    ---------- ----------
    off                 0
    on                  1
    SQL> quit
    
  12. die beiden Dateien:
    $ORACLE_HOME/network/admin/listener.ora und
    $ORACLE_HOME/network/admin/listener.ora
    müssen so angepasst werden das sie auf den logischen Hostnamen des Dienstes hören.
  13. jetzt sollte die Datenbank runtergefahren werden.
  14. Es müssen die drei Verzeichnisse mit den Oracle Binaries auf alle anderen Nodes kopiert werden:
    /opt/oracle, /var/opt/oracle und /usr/local/bin
 Schritt I.

[Einbau von Oracle in das Clusterframework]

  1. Registrieren des Platten-Service beim Clusterframework
    scrgadm -a -t SUNW.HAStoragePlus
  2. Auf allen Nodes installieren des Oracle Service von der CD
    cd /cdrom/scdataservices_3_1_vb/components/SunCluster_HA_Oracle_3.1/Sol_9/Packages
    pkgadd -d . SUNWscor
    
  3. Registrieren der beiden Oracle Service beim Clusterframework. Alle Service die beim Cluster angemeldet sind liegen unter /usr/cluster/lib/rgm/rtreg. Das sind nur links auf die eigentlichen Verzeichnisse.
    scrgadm -a -t SUNW.oracle_server
    scrgadm -a -t SUNW.oracle_listener
    
  4. Jetzt bauen wir eine leere Resourcegruppe. Das ist so eine Art Umzugskiste, in die wiederum kleinere Kisten (=Resourcen) gepackt werden, die bei einem Umzug von Oracle auf den anderen Node mitgenommen werden müssen.
    Dabei bedeutet:
    -g Name der Resource Gruppe
    -h alle Node die darauf Zugriff haben
    scrgadm -a -g oracle-rg -h db1,db2
  5. Als erste kleine Kiste kommt in diese Umzugskiste die IP-Adresse des logischen Host. Sie muss in der /etc/hosts auf allen Nodes aufgelöst werden können.
    -L zeigt an das es sich um den logischen Host Eintrag handelt
    -g Name der Resource Gruppe
    -l logischer Hostname aus /etc/hosts
    scrgadm -a -L -g oracle-rg -l db
  6. Nun bauen wir eine Resource die alle notwendigen Filesystem enthät. Man sollte in ein Scipt schreiben, weil der Befehl etwas länger sein wird.
    -j Name der Resource
    -g Name der Resource Gruppe
    -t Typ der Resource (HAStoragePlus)
    -x FilesystemMountpoints Alle Filesystem die mitgeschwenkt werden sollen
    -x AffinityOn=true Mountpoint und Filesystem sollen auf dem selben Node liegen. Wenn das auf false steht kann es passieren das z.B. Node1 die Oracle Datenbank hat, Node2 aber die Diskgruppen. Der Zugriff würde dann über den Clusterinterconnect laufen.
     scrgadm -a -j oracle-hasp-res -g oracle-rg -t HAStoragePlus \
    -x FilesystemMountpoints=/global/oracle/system,\
    /global/oracle/index,/global/oracle/rbs,\
    /global/oracle/temp,/global/oracle/tools,\
    /global/oracle/user,/global/oracle/redolog01,\
    /global/oracle/redolog02,/global/oracle/redolog03 \
    -x AffinityOn=true
     
  7. Das folgende Scipt baut die Oracle Datenbank Resource.
    -j Name der Resource
    -g Name der Resource Gruppe
    -t Typ der Resource (oracle_server)
    -y resource_dependencies Diese Resource ist abhängig von der Resource für das Filesystem.
    -x Connect_string Username/Passwort Kombination mit der sich der Agent mit der Datenbank verbindet.
     scrgadm -a -j oracle-db-rs -g oracle-rg \
    -t oracle_server \
    -y resource_dependencies=oracle-hasp-res \
    -x Oracle_sid=oid1 -x Oracle_home=/opt/oracle/product/8.1.7 \
    -x Alert_log_file=/opt/oracle/product/8.1.7/admin/oid1/bdump/alert_oid1.log \
    -x Parameter_file=/global/oracle/user/oid1/pfile/initoid1.ora
    -x Connect_string=sc_fm/sc_fm
     
    In allen Fällen steht der Schalter -a für hinzufügen. Falls man sich mal vertippt haben sollte kann man das mit dem Schalter -c gerade ziehen So ändert man z.B. mit folgendem Befehl den Link auf das Oracle Parameterfile.
    scrgadm -c -j oracle-db-rs -x Parameter_file="/global/oracle/user/oid1/pfile/initoid1.ora"
  8. Als nächstes bauen wir die Resource für den Listner
    -j Name der Resource
    -g Name der Resource Gruppe
    -t Typ der Resource (oracle_listener)
    scrgadm -a -j oracle-list-rs -g oracle-rg -t oracle_listener -x Oracle_home=/opt/oracle/product/8.1.7 -x Listener_name=LISTENER
  9. Wenn alles ok ist, dann kann die komplette Resource Gruppe aktiviert werden
    scswitch -Z -g oracle-rg
  10. Oracle sollte nun anstarten
 Schritt J.

[Beispiel zum Hinzufügen des Oracle Internet Directory]

Bis jetzt war alles Standard. Was ist aber nun, wenn man nicht nur eine Oracle Datenbank hat, sondern den Oracle Internet Directory (OID) verwenden möchte. OID ist ein LDAP Aufsatz für die Orcale DB. Dafür gibt es keine Agenten
  1. Mit Hilfe des SunPlex Agent Builders kann man sich seinen eigenen Agenten schreiben. Man benötigt mindestens ein Start- und ein Stopscript. Diese Scripte müssen auf allen Nodes in irgendeinem Verzeichniss liegen und ausführbar sein. Wichtig ist das diese Scripte im Normalfall einen exit Status von null zuückgeben.
  2. Den eigenen Agenten muss per pkgadd -d auf beiden Seiten installieren.
  3. Danach im Cluster registrieren
    scrgadm -a -t DFRU.oid
  4. Und nun wird eine neue Resource definiert. Da der OID nur startet wenn seine Datenbank gestartet ist, sollte man die entsprechende Abhängigkeit einbauen.
    -j Name der Resource
    -g Name der Resource Gruppe
    -t Typ der Resource (DFRU.oid)
    -x Das angegebene Verzeichniss muss online sein
    -y abhängig von der Oracle Datenbank Resource
    scrgadm -a -j oracle-oid-rs -g oracle-rg -t DFRU.oid /
     -x Confdir_list=/global/oracle/system /
     -y Resource_dependencies=oracle-db-rs
     
    Sollte das nicht funktionieren liegt es meist am Validierungs Script welches unter /opt/DFRU.oid/bin/oid_validate.ksh liegt. Das muss man sich dann sehr genau ansehen, um zu verstehen was der Cluster eigentlich von einem erwartet.
  5. Nun kann man den Dienst anschalten
    scswitch -e -j oracle-oid-rs
  6. Mit den folgenden 3 Befehlen überprüft man wie es den Resourcen geht
    scgradm -p
    pfmadm -l ""
    scstat -g