Ceph Object Gateway es una interfaz de almacenamiento de objetos creada en librgw
a fin de proporcionar aplicaciones con una pasarela RESTful a los clústeres de Ceph. Admite dos interfaces:
Compatible con S3: proporciona la función de almacenamiento de objetos con una interfaz que es compatible con un subconjunto extenso de la API RESTful de Amazon S3.
Compatible con Swift: proporciona la función de almacenamiento de objetos con una interfaz que es compatible con un subconjunto extenso de la API de OpenStack Swift.
El daemon Object Gateway utiliza el front-end HTTP "Beast" por defecto. Utiliza la biblioteca Boost.Beast para el análisis HTTP y la biblioteca Boost.Asio para operaciones de E/S de red asíncronas.
Puesto que proporciona interfaces compatibles con OpenStack Swift y Amazon S3, Object Gateway tiene su propia de gestión de usuarios. Object Gateway puede almacenar datos en el mismo clúster que se utiliza para almacenar datos de clientes de CephFS o clientes del dispositivo de bloques RADOS. Las API S3 y Swift comparten un espacio de nombre común, de forma que es posible escribir datos con una API y recuperarlos con la otra.
Object Gateway se instala como una función de DeepSea; por lo tanto, no es necesario realizar una instalación manual.
Para instalar Object Gateway durante la distribución del clúster, consulte la Sección 5.3, “Distribución del clúster”.
Para añadir un nodo nuevo con Object Gateway para el clúster, consulte el Sección 2.2, “Adición de nuevas funciones a los nodos”.
Instale Object Gateway en un nodo que no esté utilizando el puerto 80. El comando siguiente instala todos los componentes necesarios:
cephadm@ogw >
sudo zypper ref && zypper in ceph-radosgw
Si se está ejecutando el servidor Apache de la instancia anterior de Object Gateway, deténgalo e inhabilite el servicio correspondiente:
cephadm@ogw >
sudo systemctl stop disable apache2.service
Edite /etc/ceph/ceph.conf
y añada las líneas siguientes:
[client.rgw.gateway_host] rgw frontends = "beast port=80"
Si desea configurar Object Gateway/Beast para su uso con el cifrado SSL, modifique la línea así:
rgw frontends = beast ssl_port=7480 ssl_certificate=PATH_TO_CERTIFICATE.PEM
Reinicie el servicio de Object Gateway.
cephadm@ogw >
sudo systemctl restart ceph-radosgw@rgw.gateway_host
Se requieren varios pasos para configurar una instancia de Object Gateway.
Para configurar una instancia de Ceph Object Gateway se requiere que haya un clúster de almacenamiento de Ceph en ejecución. Ceph Object Gateway es un cliente del clúster de almacenamiento de Ceph y, por lo tanto, requiere lo siguiente:
Un nombre de host para la instancia de la pasarela; por ejemplo, gateway
.
Un nombre de usuario del clúster de almacenamiento con un anillo de claves y los permisos adecuados.
Repositorios para almacenar sus datos.
Un directorio de datos para la instancia de la pasarela.
Una entrada de la instancia en el archivo de configuración de Ceph.
Cada instancia debe tener un nombre de usuario y una clave para comunicarse con un clúster de almacenamiento de Ceph. En los pasos siguientes, se utiliza un nodo de monitor para crear un anillo de claves bootstrap y, a continuación, se crea el anillo de claves del usuario de la instancia de Object Gateway según el anillo de claves bootstrap. Después, se crea un nombre de usuario y una clave de cliente. A continuación, se añade la clave al clúster de almacenamiento de Ceph. Por último, se distribuye el anillo de claves al nodo que contiene la instancia de la pasarela.
Cree un anillo de claves para la pasarela:
cephadm@adm >
ceph-authtool --create-keyring /etc/ceph/ceph.client.rgw.keyringcephadm@adm >
sudo chmod +r /etc/ceph/ceph.client.rgw.keyring
Genere un nombre de usuario de Ceph Object Gateway y la clave para cada instancia. Por ejemplo, se utilizará el nombre gateway
después de client.radosgw
:
cephadm@adm >
ceph-authtool /etc/ceph/ceph.client.rgw.keyring \
-n client.rgw.gateway --gen-key
Añada funciones a la clave:
cephadm@adm >
ceph-authtool -n client.rgw.gateway --cap osd 'allow rwx' \
--cap mon 'allow rwx' /etc/ceph/ceph.client.rgw.keyring
Después de que haya creado un anillo de claves y la clave para dar acceso a Ceph Object Gateway al clúster de almacenamiento de Ceph, añada la clave al clúster de almacenamiento de Ceph. Por ejemplo:
cephadm@adm >
ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.gateway \
-i /etc/ceph/ceph.client.rgw.keyring
Distribuya el anillo de claves al nodo que contiene la instancia de la pasarela:
cephadm@adm >
scp /etc/ceph/ceph.client.rgw.keyring ceph@HOST_NAME:/home/cephcephadm@adm >
ssh ceph@HOST_NAMEcephadm@ogw >
mv ceph.client.rgw.keyring /etc/ceph/ceph.client.rgw.keyring
Un método alternativo consiste en crear el anillo de claves bootstrap de Object Gateway y, a continuación, crear el anillo de claves de Object Gateway a partir de aquel:
Cree un anillo de claves bootstrap de Object Gateway en uno de los nodos de monitor:
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
Cree el directorio /var/lib/ceph/radosgw/ceph-NOMBRE_RGW
para almacenar el anillo de claves bootstrap:
cephadm@mon >
mkdir \
/var/lib/ceph/radosgw/ceph-RGW_NAME
Cree un anillo de claves de Object Gateway a partir del anillo de claves bootstrap recién creado:
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
Copie el anillo de claves de Object Gateway en el host de Object Gateway:
cephadm@mon >
scp \
/var/lib/ceph/radosgw/ceph-RGW_NAME/keyring \
RGW_HOST:/var/lib/ceph/radosgw/ceph-RGW_NAME/keyring
Ceph Object Gateway requiere repositorios del clúster de almacenamiento de Ceph para almacenar datos específicos de la pasarela. Si el usuario que ha creado tiene los permisos adecuados, la pasarela creará automáticamente los repositorios. Sin embargo, asegúrese de que ha configurado un número por defecto adecuado de grupos de colocación por cada repositorio presente en el archivo de configuración de Ceph.
Los nombres de repositorio tienen la sintaxis: NOMBRE_DE_ZONA.NOMBRE_DE_REPOSITORIO
. Cuando configure una pasarela con la región y la zona por defecto, el nombre de la zona por defecto es "default", como en este ejemplo:
.rgw.root default.rgw.control default.rgw.meta default.rgw.log default.rgw.buckets.index default.rgw.buckets.data
Para crear manualmente los repositorios, consulte el Sección 11.2.2, “Creación de repositorios”.
Solo el repositorio default.rgw.buckets.data
puede tener codificación de borrado. Es preciso replicar todos los demás repositorios; de lo contrario, no será posible acceder a la pasarela.
Añada la configuración de Ceph Object Gateway al archivo de configuración de Ceph. La configuración de Ceph Object Gateway requiere que identifique la instancia de Ceph Object Gateway. A continuación, especifique el nombre de host donde ha instalado el daemon de Ceph Object Gateway, un anillo de claves (para usar con cephx) y, opcionalmente, un archivo de registro. Por ejemplo:
[client.rgw.INSTANCE_NAME] host = HOST_NAME keyring = /etc/ceph/ceph.client.rgw.keyring
Para sustituir el archivo de registro de Object Gateway por defecto, incluya lo siguiente:
log file = /var/log/radosgw/client.rgw.INSTANCE_NAME.log
La sección [client.rgw.*]
de la instancia de la pasarela identifica esta parte del archivo de configuración de Ceph y sirve para configurar un cliente del clúster de almacenamiento de Ceph donde el tipo de cliente es Ceph Object Gateway (radosgw). Después se incluye el nombre de instancia. Por ejemplo:
[client.rgw.gateway] host = ceph-gateway keyring = /etc/ceph/ceph.client.rgw.keyring
NOMBRE_DE_HOST debe ser el nombre de host del equipo, excluido el nombre del dominio.
Desactive print continue
. Si tiene definido el valor true (verdadero) para este parámetro, pueden producirse problemas con las operaciones PUT:
rgw print continue = false
Para utilizar Ceph Object Gateway con llamadas S3 de subdominio (por ejemplo http://bucketname.hostname
), debe añadir el nombre DNS de Ceph Object Gateway en la sección [client.rgw.gateway]
del archivo de configuración de Ceph:
[client.rgw.gateway] ... rgw dns name = HOST_NAME
También debe plantearse la instalación de un servidor DNS como Dnsmasq en los equipos cliente cuando utilice la sintaxis http://NOMBRE_DEPÓSITO.NOMBRE_HOST
. El archivo dnsmasq.conf
debe incluir los siguientes ajustes:
address=/HOST_NAME/HOST_IP_ADDRESS listen-address=CLIENT_LOOPBACK_IP
A continuación, añada la dirección IP CLIENT_LOOPBACK_IP como primer servidor DNS en los equipos cliente.
Puede que los guiones de distribución no creen el directorio de datos por defecto de Ceph Object Gateway. Si no se han creado ya, cree directorios de datos para cada instancia de un daemon radosgw. Las variables host
del archivo de configuración de Ceph determinan qué host ejecuta cada instancia de un daemon radosgw. El formato típico especifica el daemon radosgw, el nombre de clúster y el ID del daemon.
root #
mkdir -p /var/lib/ceph/radosgw/CLUSTER_ID
Con el ejemplo del valor de ceph.conf
descrito anteriormente, debería ejecutarse lo siguiente:
root #
mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway
Para asegurarse de que todos los componentes vuelven a cargar sus configuraciones, se recomienda reiniciar el servicio del clúster de almacenamiento de Ceph. A continuación, inicie el servicio radosgw
. Para obtener más información, consulte la Capítulo 4, Introducción y la Sección 17.3, “Funcionamiento del servicio de Object Gateway”.
Cuando el servicio esté activo y en ejecución, puede realizar una petición GET anónima para comprobar si la pasarela devuelve una respuesta. Una petición HTTP sencilla del nombre del dominio debe devolver la información siguiente:
<ListAllMyBucketsResult> <Owner> <ID>anonymous</ID> <DisplayName/> </Owner> <Buckets/> </ListAllMyBucketsResult>