X

Neuigkeiten, Best Practices, Hinweise auf Events zu Oracle Solaris auf Deutsch.

Solaris Cluster 4.4 in VirtualBox (2) - Global Cluster and Global ZFS Setup

Detlef Drewanz
Master Principal Sales Consultant

Und hier folgt der 2.Teil aus der Reihe Solaris Cluster in (Virtual)Box. Dieses Mal geht es um:

  • Die Installation der Cluster Software
  • Die Konfiguration des Global Clusters
  • Das Globale ZFS Setup als Proxy Filesystem (PxFS)

Konfigurationsbild

Nach dem Setup von Teil 1 liegt die folgende Konfiguration vor, mit der hier weitergearbeitet wird.

Global Cluster Installation

Die Installation der Global Cluster Software soll mit clinstall - dem Centralized Installer - ausgeführt werden. Dafür richten wir uns nach diesem Teil des Solaris Cluster Installation Guides .

  1. Den externen Zugriff auf Remote Procedure Calls (RPC) erlauben. Die RPC-Kommunikation zwischen Cluster Knoten wird vom Cluster benötigt und muß erlaubt werden. Das muss für jeden Knoten (nodea und nodeb) im Clustrer erledigt werden.
    # svccfg -s network/rpc/bind setprop config/local_only=false
    # svcadm refresh network/rpc/bind:default
    
  2. Das später zu benutzende clinstall-Kommando ist Teil des ha-cluster/system/preinstall-Packages. Dieses Package muss an allen Knoten installiert werden. Da die Publisher bereits in Teil 1 eingerichtet wurden, können wir jetzt hier sofort loslegen.
    # pkg install ha-cluster/system/preinstall
    
  3. Innerhalb des Cluster legt man einen Control Node fest. Das ist der Knoten von dem aus die adminstrativen Kommandos ausgeführt werden sollen. Für diese Installation soll das der Control Node nodea sein. D.h. auf den anderen Knoten (hier nodeb) muss der Konfigurations-Zugriff durch nodea erlaubt werden. Für dieses isolierte VirtualBox Setup wird dafür die einfache Hostnamen-basierte Unix-Authentication Methode gewählt. Dafür muss vorher sichergestellt werden, daß die Host Namensauflösung im Cluster funktioniert. Da hier kein DNS-Server benutzt wird, ist bereits in Teil1 eine identische /etc/hosts Datei erstellt worden.
    @nodeb # /usr/cluster/bin/clauth enable -n nodea
    
  4. Ok, jetzt kann die Installation der Cluster Software durch den Control Knoten im gesamten Cluster erfolgen. Dafür wird hier die Text-basierte Installation verwendet. Die Ausgaben und Menueoptionen von clinstall sind weitgehend selbsterklärend. Deshalb wird hier auf die Darstellung der umfangreichen Ausgaben von clinstall verzichtet.
    @nodea # /usr/cluster/bin/clinstall -t
    
    Die folgenden Eingaben werden verwendet:
    - Menue-Punkt: 1. Initial Installation
    - Nodenamen der Cluster Knoten: nodea nodeb
    - Cluster IPS-Repository: http://srv:10440
    - Installierte Cluster Packages (hier soll alles installiert werden): ha-cluster-full

    Hinweis: clinstall installiert in diesem Fall auch den grafischen Cluster Manager mit, der - neu in Oracle Solaris 4.4 - den Oracle WebLogicServer (WLS) verwendet. Das Starten des WLS benötigt einiges an CPU- und Hauptspeicher-Ressourcen, die hier in diesem kleinen VirtualBox Setup knapp sind. Deshalb wird das Starten der SMF-Services cluster/manager und cluster/manager-wls jetzt und nach jedem Neustart eines Cluster Knotens einige Zeit dauern. Wer nicht so lange warten will, kann die beiden Services zunächst an allen Knoten abschalten (svcadm disable ...) und nur dann am Control Knoten aktivieren, wenn das Cluster Browser Interface benutzt werden soll.
  5. Nachdem die Software installiert ist, kann der Cluster konfiguriert werden. Das erfolgt mit scinstall vom Control Node aus. Auch hier wird auf die Darstellung der umfangreichen Ausgaben von scinstall verzichtet. Der installierte Cluster soll vbox-cluster heißen und direkte Netzwerkverbindungen für den Cluster Interconnect benutzen. Dafür sind die VirtualBox Netzwerkports net1 und net2 vorgesehen. Die automatische Quorum Device Konfiguration erfolgt jetzt nicht, da im kommenden Schritt der Quorum Service von srv eingerichtet wird. Weiterhin sollen eventuelle Cluster Check Fehler ignoriert werden, die hier noch bzgl. einiger Versionskontrollen auftreten.
    @nodea # /usr/cluster/bin/scinstall
    
    Die folgenden Eingaben werden für scinstall verwendet:
    - (1) Create a new cluster or add a cluster node
             - (1) Create a new Cluster
                     - (2) Custom
                             - Clustername: vbox-cluster
                             - Cluster Nodes: nodea nodeb
                             - Use two private networks
                             - Don't use Switches
                                - Use net1, conneted to net1@nodeb
                                - Use net2, conneted to net2@nodeb
                              - Use 172.16.0.0/255.255.240.0 for the Cluster Interconnect
                              - Do not turn off Global Fencing
                              - Disable automatic quorum device selection
                              - Do not Interrupt cluster creation for cluster check errors


    Hinweis: scinstall startet die Knoten nodeb und nodea während der Cluster Konfiguration neu und fährt sie danach im Cluster wieder hoch.
  6. Wenn die beiden Knoten wieder laufen, ist der Global Cluster schon  fast fertig konfiguriert. Es fehlt noch der "Anschluß" an den bereits laufenden Quorum Service (siehe Teil1) auf srv.
    @nodea # /usr/cluster/bin/clsetup
    
    Die folgenden Eingaben werden für scinstall verwendet:
    - Add Quorum Device
      - (2) Add Quorum Server
        - Name quorum device: quorum_srv
        - Quorum Server IP: 192.168.175.200
        - Quorum Server Port: 9000
    - Reset "installmode"
  7. Fertig ! Wie sieht jetzt der Cluster Status aus ?
    @nodea:~# cluster status
    === Cluster Nodes ===
      --- Node Status ---
      Node Name                                       Status
      ---------                                       ------
      nodeb                                           Online
      nodea                                           Online
    
    === Cluster Transport Paths ===
      Endpoint1               Endpoint2            Status
      ---------               ---------            ------
      nodeb:net2              nodea:net2           Path online
      nodeb:net1              nodea:net1           Path online
    
    === Cluster Quorum ===
      Quorum Votes Summary from (latest node reconfiguration)
                Needed   Present   Possible
                ------   -------   --------
                2        3         3
      --- Quorum Votes by Node (current status) ---
      Node Name       Present       Possible       Status
      ---------       -------       --------       ------
      nodeb           1             1              Online
      nodea           1             1              Online
      --- Quorum Votes by Device (current status) ---
      Device Name       Present      Possible      Status
      -----------       -------      --------      ------
      quorum_srv        1            1             Online
    
    === Cluster Device Groups ===
      --- Device Group Status ---
      Device Group Name     Primary     Secondary     Status
      -----------------     -------     ---------     ------
      --- Spare, Inactive, and In Transition Nodes ---
      Device Group Name   Spare Nodes   Inactive Nodes   In Transistion Nodes
      -----------------   -----------   --------------   --------------------
      --- Multi-owner Device Group Status ---
      Device Group Name           Node Name           Status
      -----------------           ---------           ------
    
    === Cluster Resource Groups ===
      Group Name       Node Name       Suspended      State
      ----------       ---------       ---------      -----
    
    === Cluster Resources ===
      Resource Name       Node Name       State       Status Message
      -------------       ---------       -----       ------
    
    === Cluster DID Devices ===
      Device Instance               Node              Status
      ---------------               ----              ------
      /dev/did/rdsk/d1              nodeb             Ok
      /dev/did/rdsk/d3              nodea             Ok
    
    === Zone Clusters ===
      --- Zone Cluster Status ---
      Name   Brand   Node Name   Zone Host Name   Status   Zone Status
      ----   -----   ---------   --------------   ------   -----------
    
  8. Ok, die Ausgabe zeigt noch nicht viel, weil noch keine Cluster Resources und Resource Groups erstellt wurden. Allerdings fällt eine Sache auf. Es sollten lt. VirtualBox Konfiguration 4 Shared Disks mehr sichtbar sein. Mit format sieht man diese Disks ja auch:
    @nodea:~# format
    Searching for disks...done
    AVAILABLE DISK SELECTIONS:
           0. c1t0d0 
              /pci@0,0/pci8086,2829@d/disk@0,0
           1. c2t0d0 
              /pci@0,0/pci1000,8000@16/sd@0,0
           2. c2t1d0 
              /pci@0,0/pci1000,8000@16/sd@1,0
           3. c2t2d0 
              /pci@0,0/pci1000,8000@16/sd@2,0
           4. c2t3d0 
              /pci@0,0/pci1000,8000@16/sd@3,0
    
    Der Grund für diese Unsichtbarkeit als Global Cluster Device sind die Disks, die in Teil 1 hinzugefügt wurden, aber noch nicht gelabelt sind. Das ist in Teil 1 vergessen worden und muss jetzt mit etwas mehr Aufwand nachgeholt werden.

    Da die Disks in format sichtbar sind, kann man sich das devfsadm sparen. Die Disks werden nun auf jedem Knoten mit einem efi-Label versehen. Wenn das auf beiden Knoten nodea und nodeb erfolgt, erreicht man dadurch gleichzeitig die Erkennung des efi-Labels der Platten auf jedem Knoten. Danach wird mit "cldev populate" und "cldev refresh" dafür gesorgt, daß der Cluster seine globalen Deviceeinträge aktualisiert. Danach sind die zusätzlichen Devices sichtbar.
    @nodea # format -L efi -d c2t0d0
    @nodeb # format -L efi -d c2t0d0
    @nodea # format -L efi -d c2t1d0
    @nodeb # format -L efi -d c2t1d0
    @nodea # format -L efi -d c2t2d0
    @nodeb # format -L efi -d c2t2d0
    @nodea # format -L efi -d c2t3d0
    @nodeb # format -L efi -d c2t3d0
    # cldev populate
    # cldev refresh
    # cluster status -t Dev
    === Cluster DID Devices ===
    Device Instance               Node              Status
    ---------------               ----              ------
    /dev/did/rdsk/d1              nodeb             Ok
    /dev/did/rdsk/d3              nodea             Ok
    /dev/did/rdsk/d5              nodea             Ok
                                  nodeb             Ok
    /dev/did/rdsk/d6              nodea             Ok
                                  nodeb             Ok
    /dev/did/rdsk/d7              nodea             Ok
                                  nodeb             Ok
    /dev/did/rdsk/d8              nodea             Ok
                                  nodeb             Ok
    
    Ok, das sieht jetzt viel besser aus. Damit ist der Global Cluster fertig installiert.

ZFS als Globales Filesystem (PxFS) im Cluster

Eines der neuen Features in Oracle Solaris 4.4 ist Möglichkeit, auf gemountete ZFS Filesysteme von allen Knoten im Cluster zuzugreifen.  ... und das aber nicht durch Einrichtung eines HA-Zpools, sondern durch die Nutzung der Proxy Filesystem Funktionalität von Solaris Cluster für ZFS. Das globale ZFS kann auf Grund der Einschränkungen durch das PxFS nicht für jeden Einsatzfall benutzt werden, eignet sich aber z.B. hervorragend zur Verteilung von clusterweiten Konfigurationsdateien oder Templates etc. Da der Cluster schon eingerichtet ist und einige globale Devices bereit stehen, gestaltet sich das Einrichten so eines globalen ZFS sehr einfach.

  1. Das globale ZFS soll in dem Zpool gpool auf c2t2d0 erstellt werden. Mit cldev sieht man diese Disk als globales Device.
    # cldev list -v | grep c2t2d0
    d7                  nodea:/dev/rdsk/c2t2d0
    d7                  nodeb:/dev/rdsk/c2t2d0
    
  2. gpool wird wie üblich erzeugt. Zur Vereinfachung wird in diesem Setup auf Redundanz für den Zpool verzichtet.
    @nodea # zpool create gpool c2t2d0
    
  3. Jetzt wird eine Cluster Device Group gpool mit dem Typ zpool eingerichtet. Durch -n nodea,nodeb werden die primären Nodes festgelegt, die den zpool importieren dürfen (ein Knoten importiert und verteilt via PxFS an alle anderen Knoten via PxFS).
    # cldg create -p poolaccess=global -n nodea,nodeb -t zpool gpool
    
  4. Der zpool soll beim Booten des Clusters importiert werden.
    # cldg set -p import-at-boot=true gpool
    # cldg online gpool
    
  5. Fertig ! Jetzt kann man sich den Status der Device Group ansehen. Der primäre Knoten hält den direkten Import des Zpools. An dem Knoten müssen alle weiteren ZFS erzeugt werden. Die Daten der ZFS sind an allen Knoten der Gruppe in dem entsprechenden Pfad sichtbar.
    # cldg status gpool
    === Cluster Device Groups ===
    --- Device Group Status ---
    Device Group Name     Primary     Secondary     Status
    -----------------     -------     ---------     ------
    gpool                 nodea       nodeb         Online
    
    @nodea # touch /gpool/test1
    @nodea # ls -l /gpool
    total 1
    -rw-r--r--   1 root     root           0 Sep 18 12:33 test1
    @nodea # zfs create gpool/gzfs1
    @nodea # touch /gpool/gzfs1/test2
    
    @nodeb # ls -lR /gpool
    /gpool:
    total 4
    drwxr-xr-x   3 root     root           4 Sep 18 12:34 gzfs1
    -rw-r--r--   1 root     root           0 Sep 18 12:33 test1
    
    /gpool/gzfs1:
    total 1
    -rw-r--r--   1 root     root           0 Sep 18 12:34 test2
    
  6. Jetzt kann man auch einmal die Testmöglichkeiten des Clusters in (Virtual)Box ausprobieren. Wenn der primäre Knoten hier gerade nodea war, so schalten wir diese VirtualBox VM jetzt einfach ab (Power off VM) und prüfen danach am verbliebenen Knoten nodeb, ob sich der primäre Knoten der Device Group verändert hat und die entsprechenden ZFS Pfade noch verfügbar sind.
    @nodeb # cldg status gpool
    === Cluster Device Groups ===
    --- Device Group Status ---
    Device Group Name     Primary     Secondary     Status
    -----------------     -------     ---------     ------
    gpool                 nodeb       -             Degraded
    
    @nodeb # ls -lR /gpool/
    /gpool/:
    total 4
    drwxr-xr-x   3 root     root           4 Sep 18 12:34 gzfs1
    -rw-r--r--   1 root     root           0 Sep 18 12:33 test1
    
    /gpool/gzfs1:
    total 1
    -rw-r--r--   1 root     root           0 Sep 18 12:34 test2
    

Soweit in diesem Beitrag zur Einrichtung des Globalen Clusters und zur Einrichtung eines globalen ZFS. Im nächsten Beitrag geht es mit NFS und Failover Zonen weiter.

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.