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

9 Ceph Object Gateway Edit source

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 greift standardmäßig auf das „Beast“-HTTP-Front-End zurück. Das HTTP-Parsing wird mit der Boost.Beast-Bibliothek durchgeführt und die asynchrone Netzwerk-E/A mit der Boost.Asio-Bibliothek.

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

Das Object Gateway wird 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 5.3, „Cluster-Bereitstellung“.

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

9.1 Manuelle Installation von Object Gateway Edit source

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

    cephadm@ogw > sudo zypper ref && 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@ogw >  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 = "beast port=80"
    Tipp
    Tipp

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

    rgw frontends = beast ssl_port=7480 ssl_certificate=PATH_TO_CERTIFICATE.PEM
  4. Starten Sie den Object Gateway Service neu.

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

9.1.1 Konfiguration des Object Gateway Edit source

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

9.1.1.1 Basiskonfiguration Edit source

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@adm > ceph-authtool --create-keyring /etc/ceph/ceph.client.rgw.keyring
    cephadm@adm > 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@adm > ceph-authtool /etc/ceph/ceph.client.rgw.keyring \
      -n client.rgw.gateway --gen-key
  3. Fügen Sie Capabilities zum Schlüssel hinzu:

    cephadm@adm > 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@adm > 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@adm > scp /etc/ceph/ceph.client.rgw.keyring  ceph@HOST_NAME:/home/ceph
    cephadm@adm > ssh ceph@HOST_NAME
    cephadm@ogw > 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@mon > 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@mon > mkdir \
    /var/lib/ceph/radosgw/ceph-RGW_NAME
  3. Erstellen Sie einen Object Gateway-Schlüsselbund aus dem neu erstellten Bootstrap-Schlüsselbund:

    cephadm@mon > 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@mon > 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) Edit source

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 11.2.2, „Erstellen eines Pools“.

Wichtig
Wichtig: Object Gateway und Pools mit Löschcodierung

Nur der Pool default.rgw.buckets.data kann ein Pool mit Löschcodierung 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 Edit source

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 = HOST_NAME
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_NAME 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 = HOST_NAME

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

address=/HOST_NAME/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 Edit source

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.

root # mkdir -p /var/lib/ceph/radosgw/CLUSTER_ID

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

root # mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway

9.1.1.5 Neustarten der Services und Starten des Gateways Edit source

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 4, Einführung und im Abschnitt 17.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