Saltar al contenutoSaltar alla navigazione delle pagine: pagina precedente [chiave d’accesso p]/pagina successiva [chiave d’accesso n]
Si applica a SUSE Enterprise Storage 5

9 Ceph Object Gateway

Ceph Object Gateway è un'interfaccia di storage oggetti creata su librgw per fornire applicazioni con un gateway RESTful ai cluster Ceph. Supporta due interfacce:

  • S3-compatibile: fornisce funzionalità di storage oggetti con un'interfaccia compatibile con un ampio subset della API Amazon S3 RESTful.

  • Swift-compatibile: fornisce funzionalità di storage oggetti con un'interfaccia compatibile con un ampio subset della API OpenStack Swift.

Il daemon Object Gateway utilizza un server HTTP integrato (CivetWeb) per interagire con il cluster Ceph. Poiché fornisce interfacce compatibili con OpenStack Swift e Amazon S3, l'Object Gateway ha la propria gestione utente. Object Gateway può memorizzare i dati nello stesso cluster utilizzato per memorizzare i dati dai client CephFS o dai client del dispositivo di blocco RADOS. Le API S3 e Swift condividono uno spazio dei nomi comune, quindi è possibile scrivere i dati con un'API e recuperarli con l'altra.

Importante
Importante: Object Gateway installato da DeepSea

Da SUSE Enterprise Storage 5, Object Gateway viene installato come ruolo DeepSea, perciò non occorre installarlo manualmente.

Per installare Object Gateway durante la distribuzione del cluster, vedere Sezione 4.3, «Distribuzione del cluster».

Per aggiungere un nuovo nodo con Object Gateway al cluster, vedere Sezione 1.2, «Aggiunta di nuovi ruoli ai nodi».

9.1 Installazione minima di Object Gateway

  1. Installare Object Gateway su un nodo che non utilizza la porta 80. Ad esempio, un nodo che esegue già openATTIC sta già utilizzando la porta 80. Il comando seguente installa tutti i componenti richiesti:

    cephadm > sudo zypper ref && sudo zypper in ceph-radosgw
  2. Se è in esecuzione il server Apache della precedente istanza di Object Gateway, arrestarlo e disabilitare il servizio relativo:

    cephadm > sudo systemctl stop disable apache2.service
  3. Modificare /etc/ceph/ceph.conf e aggiungere le righe seguenti:

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

    Se si desidera configurare Object Gateway/CivetWeb per utilizzarlo con crittografia SSL, modificare di conseguenza la riga:

    rgw frontends = civetweb port=7480s ssl_certificate=path_to_certificate.pem
  4. Riavviare il servizio Object Gateway.

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

9.1.1 Configurazione di Object Gateway

Per configurare un Object Gateway sono richiesti diversi passaggi.

9.1.1.1 Configurazione di base

La configurazione di Ceph Object Gateway richiede l'esecuzione del cluster di storage Ceph. Ceph Object Gateway è un client del cluster di storage Ceph. Come client del cluster di storage Ceph, richiede:

  • Un nome host per l'istanza del gateway, ad esempio gateway.

  • Un nome utente del cluster di storage con autorizzazioni appropriate e un portachiavi.

  • Pool per memorizzarne i dati.

  • Una directory dati per l'istanza del gateway.

  • Una voce di istanza nel file di configurazione Ceph.

Ogni istanza deve avere un nome utente e una chiave per comunicare con un cluster di storage Ceph. Nei passaggi seguenti, si utilizza un nodo monitor per creare un portachiavi di bootstrap, quindi si crea il portachiavi utente dell'istanza di Object Gateway sul bootstrap uno. Quindi, si crea una chiave e un nome utente del client. Si aggiunge in seguito la chiave al cluster di storage Ceph. Infine, si distribuisce il portachiavi al nodo contenente l'istanza del gateway.

  1. Creare un portachiavi per il gateway:

    cephadm > sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.rgw.keyring
    cephadm > sudo chmod +r /etc/ceph/ceph.client.rgw.keyring
  2. Generare una chiave e un nome utente di Ceph Object Gateway per ogni istanza. Ad esempio, verrà utilizzato il nome gateway dopo client.radosgw:

    cephadm > sudo ceph-authtool /etc/ceph/ceph.client.rgw.keyring \
      -n client.rgw.gateway --gen-key
  3. Aggiungere capacità alla chiave:

    cephadm > sudo ceph-authtool -n client.rgw.gateway --cap osd 'allow rwx' \
      --cap mon 'allow rwx' /etc/ceph/ceph.client.rgw.keyring
  4. Dopo aver creato un portachiavi e una chiave per abilitare il Ceph Object Gateway con accesso al cluster di storage Ceph, aggiungere la chiave al cluster di storage Ceph. Ad esempio:

    cephadm > sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.gateway \
      -i /etc/ceph/ceph.client.rgw.keyring
  5. Distribuire il portachiavi al nodo con l'istanza del gateway:

    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
Suggerimento
Suggerimento: utilizzare il portachiavi bootstrap

Un modo alternativo è creare il portachiavi bootstrap di Object Gateway, quindi creare da qui il portachiavi Object Gateway:

  1. Creare un portachiavi bootstrap di Object Gateway su uno dei seguenti nodi monitor:

    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. Creare la directory /var/lib/ceph/radosgw/ceph-rgw_name per memorizzare il portachiavi bootstrap:

    cephadm > sudo mkdir \
    /var/lib/ceph/radosgw/ceph-rgw_name
  3. Creare un portachiavi Object Gateway dal portachiavi bootstrap appena creato:

    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. Copiare il portachiavi Object Gateway sull'host Object Gateway:

    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 Creare pool (facoltativo)

I Ceph Object Gateway richiedono pool del cluster di storage Ceph per memorizzare dati del gateway specifici. Se l'utente creato dispone delle corrette autorizzazioni, il gateway crea automaticamente i pool. Tuttavia, accertare di aver impostato un numero appropriato di default di gruppi di posizionamento per pool nel file di configurazione Ceph.

I nomi dei pool seguono il ZONE_NAME.Sintassi di POOL_NAME. Quando si configura un gateway con zona e regione di default, il nome zona di default è "default" come nell'esempio:

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

Per creare manualmente i pool, vedere Sezione 7.2.2, «Creazione di un pool».

Importante
Importante: pool Object Gateway ed Erasure Coded

Solo il default.rgw.buckets.data può essere Erasure Coded. Tutti gli altri pool devono essere replicati, in caso contrario il gateway non è accessibile.

9.1.1.3 Aggiunta della configurazione del gateway a Ceph

Aggiungere la configurazione di Ceph Object Gateway al file di configurazione Ceph. La configurazione di Ceph Object Gateway richiede di identificare l'istanza di Ceph Object Gateway. Specificare, quindi, il nome host dove è stato installato il daemon Ceph Object Gateway, un portachiavi (da utilizzare con cephx) ed eventualmente un file di registro. Ad esempio:

[client.rgw.instance-name]
host = hostname
keyring = /etc/ceph/ceph.client.rgw.keyring
Suggerimento
Suggerimento: file di registro di Object Gateway

Per ignorare il file di registro di default di Object Gateway, includere quanto segue:

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

La parte [client.rgw.*] dell'istanza del gateway identifica questa parte del file di configurazione Ceph come configurando un client del cluster di storage Ceph dove il tipo di client è un Ceph Object Gateway (radosgw). Segue il nome dell'istanza. Ad esempio:

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

L'host deve essere il nome host del computer, escluso il nome di dominio.

Disattivare quindi print continue. Se è stato impostato su true, potrebbero riscontrarsi problemi con le operazioni PUT:

rgw print continue = false

Per utilizzare un Ceph Object Gateway con chiamate di sottodominio S3 (ad esempio http://bucketname.hostname), occorre aggiungere il nome DNS del Ceph Object Gateway nella sezione [client.rgw.gateway] del file di configurazione Ceph:

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

Considerare anche di installare un server DNS come Dnsmasq sul computer client quando si utilizza http://bucketname.Sintassi di hostname. Il file dnsmasq.conf deve includere le impostazioni seguenti:

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

Aggiungere quindi l'indirizzo IP client-loopback-ip come il primo server DNS sul(i) computer client.

9.1.1.4 Creare la directory dati

Gli script di distribuzione potrebbero non creare la directory dati di default di Ceph Object Gateway. Se non è già stato fatto, creare directory dati per ogni istanza di un daemon radosgw. Le variabili host nel file di configurazione Ceph determinano quale host esegue ciascuna istanza di un daemon radosgw. La forma tipica specifica il daemon radosgw, il nome del cluster e l'ID del daemon.

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

Utilizzando le impostazioni ceph.conf dell'esempio precedente, eseguire:

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

9.1.1.5 Riavviare i servizi e avviare il gateway

Per accertare che tutti i componenti abbiano ricaricato le proprie configurazioni, si consiglia di riavviare il servizio del cluster di storage Ceph. Avviare quindi il servizio radosgw. Per ulteriori informazioni, vedere Capitolo 2, Introduzione e Sezione 11.3, «Funzionamento del servizio Object Gateway».

Quando il servizio è attivo e in esecuzione, è possibile effettuare una richiesta anonima GET per vedere se il gateway restituisce una risposta. Una semplice richiesta HTTP al nome di dominio dovrebbe restituire:

<ListAllMyBucketsResult>
      <Owner>
              <ID>anonymous</ID>
              <DisplayName/>
      </Owner>
      <Buckets/>
</ListAllMyBucketsResult>
Stampa pagina