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

9 Ceph Object Gateway

Das Ceph Object Gateway ist eine Objektspeicherschnittstelle, die zusätzlich zu librgw erstellt wurde, um für Anwendungen ein RESTful Gateway zu Ceph Clustern zur Verfügung zu stellen. Es unterstützt zwei Schnittstellen:

  • S3-compatible: Bietet die Objektspeicherfunktionalität mit einer Schnittstelle, die mit einem Großteil der Amazon S3 RESTful API kompatibel ist.

  • Swift-compatible: Bietet die Objektspeicherfunktionalität mit einer Schnittstelle, die mit einem Großteil der OpenStack Swift API kompatibel ist.

Der Object Gateway Daemon nutzt einen eingebetteten HTTP-Server (CivetWeb) zur Interaktion mit dem Ceph Cluster. Das Object Gateway verfügt über eine eigene Benutzerverwaltung, weil es Schnittstellen zur Verfügung stellt, die mit OpenStack Swift und Amazon S3 kompatibel sind. Das Object Gateway speichert Daten im Cluster, das auch zum Speichern von Daten von den CephFS Clients oder den RADOS Blockgeräte-Clients verwendet wird. Die S3 und Swift APIs nutzen einen gemeinsamen Namespace. Somit können Sie Daten mit einer API schreiben und mit der anderen API abrufen.

Wichtig
Wichtig: Object Gateway bereitgestellt von DeepSea

Ab SUSE Enterprise Storage 5 wird das Object Gateway als DeepSea-Rolle installiert. Daher müssen Sie es nicht manuell installieren.

Informationen zur Installation von Object Gateway während der Cluster-Bereitstellung finden Sie in Abschnitt 4.3, „Cluster-Bereitstellung“.

Informationen zum Hinzufügen eines neuen Nodes mit Object Gateway zum Cluster finden Sie im Abschnitt 1.2, „Hinzufügen neuer Rollen zu Nodes“,

9.1 Manuelle Installation von Object Gateway

  1. Installieren Sie Object Gateway in einem Node, in dem Port 80 nicht genutzt wird. Beispielsweise wird in einem Node, in dem bereits openATTIC ausgeführt wird, Port 80 bereits genutzt. Mit dem folgenden Kommando werden alle erforderlichen Komponenten installiert:

    cephadm > sudo zypper ref && sudo zypper in ceph-radosgw
  2. Wenn der Apache-Server der früheren Object Gateway-Instanz ausgeführt wird, stoppen Sie ihn und deaktivieren Sie den entsprechenden Service:

    cephadm > sudo systemctl stop disable apache2.service
  3. Bearbeiten Sie /etc/ceph/ceph.conf und fügen Sie die folgenden Zeilen hinzu:

    [client.rgw.gateway_host]
     rgw frontends = "civetweb port=80"
    Tipp
    Tipp

    Wenn Sie Object Gateway/CivetWeb zur Verwendung der SSL-Verschlüsselung konfigurieren möchten, bearbeiten Sie die Zeile entsprechend:

    rgw frontends = civetweb port=7480s ssl_certificate=path_to_certificate.pem
  4. Starten Sie den Object Gateway Service neu.

    cephadm > sudo systemctl restart ceph-radosgw@rgw.gateway_host

9.1.1 Konfiguration des Object Gateway

Zum Konfigurieren eines Object Gateways müssen einige Schritte ausgeführt werden.

9.1.1.1 Basiskonfiguration

Zur Konfiguration eines Ceph Object Gateways ist ein aktiver Ceph Storage Cluster erforderlich. Das Ceph Object Gateway ist ein Client des Ceph Storage Cluster. Als Ceph Storage Cluster-Client benötigt es Folgendes:

  • Einen Hostnamen für die Gateway-Instanz, beispielsweise gateway.

  • Einen Benutzernamen für den Speicher-Cluster mit den entsprechenden Berechtigungen sowie einen Schlüsselbund.

  • Pools zum Speichern seiner Daten.

  • Ein Datenverzeichnis für die Gateway-Instanz.

  • Einen Instanzeintrag in der Ceph-Konfigurationsdatei.

Jede Instanz muss zur Kommunikation mit einem Ceph Storage Cluster über einen Benutzernamen und einen Schlüssel verfügen. In den folgenden Schritten verwenden wir einen Monitor Node zum Erstellen eines Bootstrap-Schlüsselbunds. Dann erstellen wir den Schlüsselbund für den Benutzer der Object Gateway-Instanz basierend auf dem Bootstrap-Schlüsselbund. Danach erstellen wir einen Client-Benutzernamen und -Schlüssel. Als nächstes fügen wir den Schlüssel zum Ceph Storage Cluster hinzu. Zuletzt verteilen wir den Schlüsselbund an den Node, der die Gateway-Instanz enthält.

  1. Erstellen Sie einen Schlüsselbund für das Gateway:

    cephadm > sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.rgw.keyring
    cephadm > sudo chmod +r /etc/ceph/ceph.client.rgw.keyring
  2. Generieren Sie für jede Instanz einen Ceph Object Gateway-Benutzernamen und -Schlüssel. Als Beispiel verwenden wir den Namen gateway nach client.radosgw:

    cephadm > sudo ceph-authtool /etc/ceph/ceph.client.rgw.keyring \
      -n client.rgw.gateway --gen-key
  3. Fügen Sie Capabilities zum Schlüssel hinzu:

    cephadm > sudo ceph-authtool -n client.rgw.gateway --cap osd 'allow rwx' \
      --cap mon 'allow rwx' /etc/ceph/ceph.client.rgw.keyring
  4. Sobald Sie einen Schlüsselbund und Schlüssel zum Aktivieren des Ceph Object Gateway mit Zugriff auf den Ceph Storage Cluster erstellt haben, fügen Sie den Schlüssel zu Ihrem Ceph Storage Cluster hinzu. Beispiel:

    cephadm > sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.gateway \
      -i /etc/ceph/ceph.client.rgw.keyring
  5. Verteilen Sie den Schlüsselbund an den Node mit der Gateway-Instanz:

    cephadm > sudo scp /etc/ceph/ceph.client.rgw.keyring  ceph@hostname:/home/ceph
    cephadm > ssh hostname
    cephadm > sudo mv ceph.client.rgw.keyring /etc/ceph/ceph.client.rgw.keyring
Tipp
Tipp: Bootstrap-Schlüsselbund verwenden

Als alternative Methode erstellen Sie den Bootstrap-Schlüsselbund für das Object Gateway und verwenden diesen zum Erstellen des Object Gateway-Schlüsselbunds:

  1. Erstellen sie einen Bootstrap-Schlüsselbund für das Object Gateway in einem der Monitor Nodes:

    cephadm > sudo ceph \
     auth get-or-create client.bootstrap-rgw mon 'allow profile bootstrap-rgw' \
     --connect-timeout=25 \
     --cluster=ceph \
     --name mon. \
     --keyring=/var/lib/ceph/mon/ceph-node_host/keyring \
     -o /var/lib/ceph/bootstrap-rgw/keyring
  2. Erstellen Sie das Verzeichnis /var/lib/ceph/radosgw/ceph-rgw_name zum Speichern des Bootstrap-Schlüsselbunds:

    cephadm > sudo mkdir \
    /var/lib/ceph/radosgw/ceph-rgw_name
  3. Erstellen Sie einen Object Gateway-Schlüsselbund aus dem neu erstellten Bootstrap-Schlüsselbund:

    cephadm > sudo ceph \
     auth get-or-create client.rgw.rgw_name osd 'allow rwx' mon 'allow rw' \
     --connect-timeout=25 \
     --cluster=ceph \
     --name client.bootstrap-rgw \
     --keyring=/var/lib/ceph/bootstrap-rgw/keyring \
     -o /var/lib/ceph/radosgw/ceph-rgw_name/keyring
  4. Kopieren Sie den Object Gateway-Schlüsselbund zum Object Gateway Host:

    cephadm > sudo scp \
    /var/lib/ceph/radosgw/ceph-rgw_name/keyring \
    rgw_host:/var/lib/ceph/radosgw/ceph-rgw_name/keyring

9.1.1.2 Erstellen von Pools (optional)

Ceph Object Gateways benötigen Ceph Storage Cluster-Pools zum Speichern spezifischer Gateway-Daten. Das Gateway erstellt die Pools automatisch, wenn der erstellte Benutzer über die richtigen Berechtigungen verfügt. Stellen Sie jedoch sicher, dass Sie in der Ceph-Konfigurationsdatei eine entsprechende Standardanzahl von Placement Groups pro Pool festgelegt haben.

Die Namen der Pools entsprechen der ZONE_NAME.POOL_NAME-Syntax. Wenn ein Gateway mit der Standardregion und -zone konfiguriert wird, lautet der Standardzonenname "default" wie in unserem Beispiel:

.rgw.root
default.rgw.control
default.rgw.meta
default.rgw.log
default.rgw.buckets.index
default.rgw.buckets.data

Informationen zum manuellen Erstellen von Pools finden Sie im Abschnitt 7.2.2, „Erstellen eines Pools“.

Wichtig
Wichtig: Object Gateway und Erasure Coded Pools

Nur der Pool default.rgw.buckets.data kann ein Erasure Coded Pool sein. Alle anderen Pools müssen reproduziert werden, ansonsten wäre ein Zugriff auf das Gateway nicht möglich.

9.1.1.3 Hinzufügen einer Gateway-Konfiguration zu Ceph

Fügen Sie die Ceph Object Gateway-Konfiguration zur Ceph-Konfigurationsdatei hinzu. Für die Ceph Object Gateway-Konfiguration müssen Sie die Ceph Object Gateway-Instanz finden. Geben Sie dann den Namen des Hosts an, auf dem Sie den Ceph Object Gateway Daemon installiert haben, einen Schlüsselbund (zur Verwendung mit cephx) und optional eine Protokolldatei. Beispiel:

[client.rgw.instance-name]
host = hostname
keyring = /etc/ceph/ceph.client.rgw.keyring
Tipp
Tipp: Object Gateway-Protokolldatei

Fügen Sie zum Überschreiben der Object Gateway-Protokolldatei folgende Zeile hinzu:

log file = /var/log/radosgw/client.rgw.instance-name.log

Der Teil [client.rgw.*] der Gateway-Instanz erkennt diesen Teil der Ceph-Konfigurationsdatei als Konfiguration eines Ceph Storage Cluster-Clients, bei dem der Client-Typ ein Ceph Object Gateway (radosgw) ist. Der Name der Instanz lautet entsprechend. Beispiel:

[client.rgw.gateway]
host = ceph-gateway
keyring = /etc/ceph/ceph.client.rgw.keyring
Anmerkung
Anmerkung

Der host muss der Hostname Ihres Rechners sein, der Domänenname ausgenommen.

Schalten Sie dann print continue aus. Wenn Sie dies auf "true" festgelegt haben, treten möglicherweise Probleme mit PUT-Operationen auf:

rgw print continue = false

Zur Verwendung eines Ceph Object Gateway mit Aufrufen der Unterdomäne S3 (beispielsweise http://bucketname.hostname) müssen Sie den DNS-Namen des Ceph Object Gateways im Abschnitt [client.rgw.gateway] der Ceph-Konfigurationsdatei hinzufügen:

[client.rgw.gateway]
...
rgw dns name = hostname

Sie sollten auch in Erwägung ziehen, einen DNS-Server wie Dnsmasq auf Ihren Client-Rechnern zu installieren, wenn Sie die Syntax http://bucketname.hostname verwenden. Die Datei dnsmasq.conf sollte die folgenden Einstellungen enthalten:

address=/hostname/host-ip-address
listen-address=client-loopback-ip

Fügen Sie dann die IP-Adresse client-loopback-ip als ersten DNS-Server auf den Client-Rechnern hinzu.

9.1.1.4 Erstellen eines Datenverzeichnisses

Bereitstellungsskripts erstellen möglicherweise kein standardmäßiges Datenverzeichnis für das Ceph Object Gateway. Erstellen Sie Datenverzeichnisse für jede Instanz eines radosgw-Daemons, falls nicht bereits erfolgt. Durch die host-Variablen in der Ceph-Konfigurationsdatei wird festgelegt, auf welchem Host die einzelnen Instanzen eines radosgw-Daemons ausgeführt werden. Die normale Form gibt den radosgw-Daemon, den Cluster-Namen und die Daemon-ID an.

cephadm > sudo mkdir -p /var/lib/ceph/radosgw/cluster-id

Mit den oben im Beispiel genannten ceph.conf-Einstellungen würden Sie Folgendes ausführen:

cephadm > sudo mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway

9.1.1.5 Neustarten der Services und Starten des Gateways

Wir empfehlen, den Ceph Storage Cluster-Service neu zu starten, um sicherzustellen, dass alle Komponenten ihre Konfigurationen neu geladen haben. Starten Sie dann den Service radosgw. Weitere Informationen hierzu finden Sie im Kapitel 2, Einführung und im Abschnitt 11.3, „Ausführen des Object Gateway Service“.

Wenn der Service ausgeführt wird, können Sie eine anonyme GET-Anforderung stellen, um zu sehen, ob das Gateway eine Antwort zurückgibt. Eine einfache HTTP-Anforderung an den Domänennamen sollte Folgendes zurückgeben:

<ListAllMyBucketsResult>
      <Owner>
              <ID>anonymous</ID>
              <DisplayName/>
      </Owner>
      <Buckets/>
</ListAllMyBucketsResult>
Diese Seite drucken