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.
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».
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
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
Modificare /etc/ceph/ceph.conf
e aggiungere le righe seguenti:
[client.rgw.gateway_host] rgw frontends = "civetweb port=80"
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
Riavviare il servizio Object Gateway.
cephadm >
sudo systemctl restart ceph-radosgw@rgw.gateway_host
Per configurare un Object Gateway sono richiesti diversi passaggi.
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.
Creare un portachiavi per il gateway:
cephadm >
sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.rgw.keyringcephadm >
sudo chmod +r /etc/ceph/ceph.client.rgw.keyring
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
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
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
Distribuire il portachiavi al nodo con l'istanza del gateway:
cephadm >
sudo scp /etc/ceph/ceph.client.rgw.keyring ceph@hostname:/home/cephcephadm >
ssh hostnamecephadm >
sudo mv ceph.client.rgw.keyring /etc/ceph/ceph.client.rgw.keyring
Un modo alternativo è creare il portachiavi bootstrap di Object Gateway, quindi creare da qui il portachiavi Object Gateway:
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
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
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
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
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».
Solo il default.rgw.buckets.data
può essere Erasure Coded. Tutti gli altri pool devono essere replicati, in caso contrario il gateway non è accessibile.
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
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
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.
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
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>