Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
Bezieht sich auf SUSE Enterprise Storage 5

12 Installation von NFS Ganesha

NFS Ganesha ermöglicht den NFS-Zugriff auf das Object Gateway oder das CephFS. In SUSE Enterprise Storage 5 werden die NFS-Versionen 3 und 4 unterstützt. NFS Ganesha wird im Benutzerbereich statt im Kernel-Bereich ausgeführt und interagiert direkt mit dem Object Gateway oder dem CephFS.

12.1 Vorbereitung

12.1.1 Allgemeine Informationen

Zur erfolgreichen Bereitstellung von NFS Ganesha müssen Sie eine role-ganesha zu /srv/pillar/ceph/proposals/policy.cfg hinzufügen. Weitere Informationen finden Sie in Abschnitt 4.5.1, „Die Datei policy.cfg. Für NFS Ganesha muss entweder eine role-rgw oder einerole-mds in der Datei policy.cfg vorhanden sein.

Es ist zwar möglich, den NFS Ganesha-Server in einem bereits vorhandenen Ceph Node zu installieren und auszuführen, wir empfehlen jedoch, ihn auf einem dedizierten Host mit Zugriff auf den Ceph Cluster auszuführen. Die Client-Hosts sind normalerweise nicht Teil des Clusters, doch sie müssen Netzwerkzugriff auf den NFS Ganesha-Server haben.

Fügen sie zur Aktivierung des NFS Ganesha-Servers zu einem beliebigen Zeitpunkt nach der ersten Installation die role-ganesha zu policy.cfg hinzu und führen Sie mindestens die DeepSea-Phasen 2 und 4 erneut aus. Weitere Informationen finden Sie in Abschnitt 4.3, „Cluster-Bereitstellung“.

NFS Ganesha wird über die Datei /etc/ganesha/ganesha.conf konfiguriert, die im NFS Ganesha Node vorhanden ist. Diese Datei wird jedoch bei jeder Ausführung der DeepSea-Phase 4 überschrieben. Wir empfehlen daher, die von Salt verwendeten Vorlagen zu bearbeiten, bei der es sich um die Datei /srv/salt/ceph/ganesha/files/ganesha.conf.j2 am Salt Master handelt. Detaillierte Informationen zur Konfigurationsdatei finden Sie im Abschnitt 14.2, „Konfiguration“.

12.1.2 Anforderungen im Überblick

Die folgenden Anforderungen müssen erfüllt sein, bevor DeepSea-Phasen 2 und 4 zur Installation von NFS Ganesha ausgeführt werden können:

  • Die role-ganesha muss mindestens einem Node zugewiesen sein.

  • Sie können nur eine role-ganesha pro Minion definieren.

  • NFS Ganesha benötigt entweder ein Object Gateway oder ein CephFS.

  • Wenn NFS Ganesha das Object Gateway als Schnittstelle zum Cluster verwenden soll, dann muss die Datei /srv/pillar/ceph/rgw.sls am Salt Master entsprechend aufgefüllt sein.

12.2 Installationsbeispiel

In diesem Installationsbeispiel werden sowohl das Objekt Gateway als auch die CephFS File System Abstraction Layers (FSAL) von NFS Ganesha verwendet.

  1. Wenn Ihnen dies nicht geläufig ist, führen Sie zunächst die DeepSea-Phasen 0 und 1 aus, bevor Sie mit diesem Verfahren fortfahren.

    root # salt-run state.orch ceph.stage.0
    root # salt-run state.orch ceph.stage.1
  2. Bearbeiten Sie nach Ausführung der Phase 1 von DeepSea die Datei/srv/pillar/ceph/proposals/policy.cfg und fügen Sie folgende Zeile hinzu:

    role-ganesha/cluster/NODENAME

    Ersetzen Sie NODENAME durch den Namen eines Nodes in Ihrem Cluster.

    Stellen Sie außerdem sicher, dass eine role-mds und eine role-rgw zugewiesen sind.

  3. Erstellen Sie die Datei /srv/pillar/ceph/rgw.sls und fügen Sie den folgenden Inhalt ein:

    rgw_configurations:
      rgw:
        users:
          - { uid: "demo", name: "Demo", email: "demo@demo.nil" }
          - { uid: "demo1", name: "Demo1", email: "demo1@demo.nil" }

    Diese Benutzer werden später als Object Gateway-Benutzer erstellt. Außerdem werden API-Schlüssel generiert. Im Object Gateway Node können Sie später radosgw-admin user list ausführen, um alle erstellten Benutzer aufzulisten, sowie radosgw-admin user info --uid=demo, um detaillierte Informationen zu einzelnen Benutzern abzurufen.

    DeepSea stellt sicher, dass sowohl Object Gateway als auch NFS Ganesha die Berechtigungsnachweise aller Benutzer erhalten, die in Abschnitt rgw von rgw.sls aufgelistet sind.

    Das exportierte NFS verwendet diese Benutzernamen auf der ersten Ebene des Dateisystems. In diesem Beispiel würden die Pfade /demo und /demo1 exportiert werden.

  4. Führen Sie mindestens die Phasen 2 und 4 von DeepSea aus. Wir empfehlen, dazwischen auch Phase 3 auszuführen.

    root # salt-run state.orch ceph.stage.2
    root # salt-run state.orch ceph.stage.3 # optional but recommended
    root # salt-run state.orch ceph.stage.4
  5. Verifizieren Sie, dass NFS Ganesha funktioniert. Hängen Sie dazu die NFS-Freigabe von einem Client Node aus ein:

    root # mount -o sync -t nfs GANESHA_NODE:/ /mnt
    root # ls /mnt
    cephfs  demo  demo1

    /mnt sollte alle exportierten Pfade enthalten. Für CephFS- und Object Gateway-Benutzer sollten Verzeichnisse vorhanden sein. Für jeden Bucket, den ein Benutzer besitzt, würde ein Pfad /mnt/USERNAME/BUCKETNAME exportiert werden.

12.3 Hochverfügbare Aktiv-Passiv-Konfiguration

In diesem Abschnitt finden Sie ein Beispiel, wie eine Aktiv-Passiv-Konfiguration mit zwei Nodes des NFS Ganesha-Servers eingerichtet wird. Für die Einrichtung ist die SUSE Linux Enterprise High Availability Extension erforderlich. Die beiden Nodes werden earth und mars genannt.

Detaillierte Informationen zu SUSE Linux Enterprise High Availability Extension finden Sie unter https://www.suse.com/documentation/sle-ha-12/.

12.3.1 Standardinstallation

In dieser Einrichtung hat earth die IP-Adresse 192.168.1.1 und mars die Adresse 192.168.1.2.

Außerdem können Clients über zwei virtuelle IP-Adressen nach dem Floating-IP-Prinzip eine Verbindung mit dem Service herstellen, und zwar unabhängig davon, auf welchem physischen Node er ausgeführt wird. 192.168.1.10 wird für die Cluster-Verwaltung mit Hawk2 verwendet und 192.168.2.1 exklusiv für die NFS-Exporte. Dies erleichtert später die Anwendung von Sicherheitsbeschränkungen.

Das folgende Verfahren beschreibt das Installationsbeispiel. Weitere Informationen finden Sie unter https://www.suse.com/documentation/sle-ha-12/install-quick/data/install-quick.html.

  1. Bereiten Sie die NFS Ganesha Nodes am Salt Master vor:

    1. Führen Sie die DeepSea-Phasen 0 und 1 am Salt Master aus.

      root@master # salt-run state.orch ceph.stage.0
      root@master # salt-run state.orch ceph.stage.1
    2. Weisen Sie den Nodes earth und mars die role-ganesha in Datei/srv/pillar/ceph/proposals/policy.cfg zu:

      role-ganesha/cluster/earth*.sls
      role-ganesha/cluster/mars*.sls
    3. Führen Sie die DeepSea-Phasen 3 und 4 am Salt Master aus.

      root@master # salt-run state.orch ceph.stage.3
      root@master # salt-run state.orch ceph.stage.4
  2. Registrieren Sie die SUSE Linux Enterprise High Availability Extension in earth und mars.

    root # SUSEConnect -r ACTIVATION_CODE -e E_MAIL
  3. Installieren Sie ha-cluster-bootstrap in beiden Nodes:

    root # zypper in ha-cluster-bootstrap
    1. Initialisieren Sie den Cluster in earth:

      root@earth # ha-cluster-init
    2. Lassen Sie mars dem Cluster beitreten:

      root@mars # ha-cluster-join -c earth
  4. Prüfen Sie den Status des Clusters. Sie sollten zwei Nodes sehen, die im Cluster hinzugefügt wurden:

    root@earth # crm status
  5. Deaktivieren Sie in beiden Nodes den automatischen Start des NFS Ganesha Service beim Booten des Systems:

    root # systemctl disable nfs-ganesha
  6. Starten Sie die crm-Shell im Node earth:

    root@earth # crm configure

    Die nächsten Kommandos werden in der crm-Shell ausgeführt.

  7. Führen Sie in earth die crm-Shell aus, um die folgenden Kommandos zur Konfiguration der Ressource für NFS Ganesha Daemons als Klon des Ressourcentyps "systemd" auszuführen:

    crm(live)configure# primitive nfs-ganesha-server systemd:nfs-ganesha \
    op monitor interval=30s
    crm(live)configure# clone nfs-ganesha-clone nfs-ganesha-server meta interleave=true
    crm(live)configure# commit
    crm(live)configure# status
        2 nodes configured
        2 resources configured
    
        Online: [ earth mars ]
    
        Full list of resources:
             Clone Set: nfs-ganesha-clone [nfs-ganesha-server]
             Started:  [ earth mars ]
  8. Erstellen Sie eine einfache IPAddr2 mit der crm-Shell:

    crm(live)configure# primitive ganesha-ip IPaddr2 \
    params ip=192.168.2.1 cidr_netmask=24 nic=eth0 \
    op monitor interval=10 timeout=20
    
    crm(live)# status
    Online: [ earth mars  ]
    Full list of resources:
     Clone Set: nfs-ganesha-clone [nfs-ganesha-server]
         Started: [ earth mars ]
     ganesha-ip    (ocf::heartbeat:IPaddr2):    Started earth
  9. Wir stellen eine Beziehung zwischen dem NFS Ganesha-Server und der Floating-IP-Adresse über Kollokation und Anordnung her.

    crm(live)configure# colocation ganesha-ip-with-nfs-ganesha-server inf: ganesha-ip nfs-ganesha-clone
    crm(live)configure# order ganesha-ip-after-nfs-ganesha-server Mandatory: nfs-ganesha-clone ganesha-ip
  10. Führen Sie das Kommando mount am Client aus, um sicherzustellen, dass die Cluster-Einrichtung vollständig ist:

    root # mount -t nfs -v -o sync,nfsvers=4 192.168.2.1:/ /mnt

12.3.2 Bereinigen der Ressourcen

Falls ein NFS Ganesha, wie zum Beispiel earth, in einem der Nodes ausfällt, beheben Sie das Problem und bereinigen Sie die Ressource. Erst nach Bereinigung der Ressource kann ein Failback der Ressource zu earth ausgeführt werden, falls NFS Ganesha in mars ausfällt.

So bereinigen Sie die Ressource:

root@earth # crm resource cleanup nfs-ganesha-clone earth
root@earth # crm resource cleanup ganesha-ip earth

12.3.3 Einrichten der Ping-Ressource

Es kann vorkommen, dass der Server den Client aufgrund eines Netzwerkproblems nicht erreicht. Eine Ping-Ressource kann dieses Problem erkennen und abschwächen. Die Konfiguration dieser Ressource ist optional.

  1. Definieren Sie die Ping-Ressource:

    crm(live)configure# primitive ganesha-ping ocf:pacemaker:ping \
            params name=ping dampen=3s multiplier=100 host_list="CLIENT1 CLIENT2" \
            op monitor interval=60 timeout=60 \
            op start interval=0 timeout=60 \
            op stop interval=0 timeout=60

    host_list ist eine Liste mit IP-Adressen, die durch Leerzeichen getrennt sind. Die IP-Adressen werden regelmäßig gepingt, um nach Netzwerkausfällen zu suchen. Wenn ein Client ständig Zugriff auf den NFS-Server haben muss, fügen Sie ihn zu host_list hinzu.

  2. Erstellen Sie einen Klon:

    crm(live)configure# clone ganesha-ping-clone ganesha-ping \
            meta interleave=true
  3. Das folgende Kommando erstellt eine Einschränkung für den NFS Ganesha-Service. Der Node wird dadurch gezwungen, zu einem anderen Node zu wechseln, wenn host_list nicht erreichbar ist.

    crm(live)configure# location nfs-ganesha-server-with-ganesha-ping
            nfs-ganesha-clone \
            rule -inf: not_defined ping or ping lte 0

12.3.4 NFS Ganesha HA und DeepSea

DeepSea unterstützt nicht die Konfiguration von NFS Ganesha HA. Um zu verhindern, dass DeepSea nach der Konfiguration von NFS Ganesha HA ausfällt, schließen Sie Starten und Stoppen des NFS Ganesha-Service von DeepSea Phase 4 aus:

  1. Kopieren Sie /srv/salt/ceph/ganesha/default.sls zu /srv/salt/ceph/ganesha/ha.sls.

  2. Entfernen Sie den Eintrag .service aus /srv/salt/ceph/ganesha/ha.sls, sodass sie wie folgt aussieht:

    include:
    - .keyring
    - .install
    - .configure
  3. Fügen Sie die folgende Zeile zu /srv/pillar/ceph/stack/global.yml hinzu:

    ganesha_init: ha

12.4 Weitere Informationen

Weitere Informationen finden Sie im Kapitel 14, NFS Ganesha: Exportieren von Ceph-Daten über NFS.

Diese Seite drucken