Saltar a contenidoSaltar a navegación de páginas: página anterior [tecla acceso p]/página siguiente [tecla acceso n]
Se aplica a SUSE Enterprise Storage 5

9 Ceph Object Gateway

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 de Object Gateway utiliza un servidor HTTP incrustado (CivetWeb) para interactuar con el clúster de Ceph. Puesto que proporciona interfaces compatible 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.

Importante
Importante: Object Gateway distribuida por DeepSea

Desde SUSE Enterprise Storage 5, 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 4.3, “Distribución del clúster”.

Para añadir un nodo nuevo con Object Gateway para el clúster, consulte el Sección 1.2, “Adición de nuevas funciones a los nodos”.

9.1 Instalación manual de Object Gateway

  1. Instale Object Gateway en un nodo que no esté utilizando el puerto 80. Por ejemplo, en un nodo donde se ejecute openATTIC ya se está utilizando el puerto 80. El comando siguiente instala todos los componentes necesarios:

    cephadm > sudo zypper ref && sudo zypper in ceph-radosgw
  2. Si se está ejecutando el servidor Apache de la instancia anterior de Object Gateway, deténgalo e inhabilite el servicio correspondiente:

    cephadm > sudo systemctl stop disable apache2.service
  3. Edite /etc/ceph/ceph.conf y añada las líneas siguientes:

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

    Si desea configurar Object Gateway/CivetWeb para su uso con el cifrado SSL, modifique la línea así:

    rgw frontends = civetweb port=7480s ssl_certificate=path_to_certificate.pem
  4. Reinicie el servicio de Object Gateway.

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

9.1.1 Configuración de Object Gateway

Se requieren varios pasos para configurar una instancia de Object Gateway.

9.1.1.1 Configuración básica

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.

  1. Cree un anillo de claves para la pasarela:

    cephadm > sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.rgw.keyring
    cephadm > sudo chmod +r /etc/ceph/ceph.client.rgw.keyring
  2. 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 > sudo ceph-authtool /etc/ceph/ceph.client.rgw.keyring \
      -n client.rgw.gateway --gen-key
  3. Añada funciones a la clave:

    cephadm > sudo ceph-authtool -n client.rgw.gateway --cap osd 'allow rwx' \
      --cap mon 'allow rwx' /etc/ceph/ceph.client.rgw.keyring
  4. 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 > sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.gateway \
      -i /etc/ceph/ceph.client.rgw.keyring
  5. Distribuya el anillo de claves al nodo que contiene la instancia de la pasarela:

    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
Sugerencia
Sugerencia: uso del anillo de claves bootstrap

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:

  1. Cree un anillo de claves bootstrap de Object Gateway en uno de los nodos de 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. Cree el directorio /var/lib/ceph/radosgw/ceph-rgw_name para almacenar el anillo de claves bootstrap:

    cephadm > sudo mkdir \
    /var/lib/ceph/radosgw/ceph-rgw_name
  3. Cree un anillo de claves de Object Gateway a partir del anillo de claves bootstrap recién creado:

    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. Copie el anillo de claves de Object Gateway en el host de 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 Creación de repositorios (opcional)

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 7.2.2, “Creación de repositorios”.

Importante
Importante: Object Gateway y repositorios codificados de borrado

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.

9.1.1.3 Adición de la configuración de la pasarela a Ceph

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 = hostname
keyring = /etc/ceph/ceph.client.rgw.keyring
Sugerencia
Sugerencia: archivo de registro de Object Gateway

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
Nota
Nota

El 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 = hostname

También debe plantearse la instalación de un servidor DNS como Dnsmasq en los equipos cliente cuando utilice la sintaxis http://bucketname.hostname. El archivo dnsmasq.conf debe incluir los siguientes ajustes:

address=/hostname/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.

9.1.1.4 Creación del directorio de datos

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.

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

Con el ejemplo del valor de ceph.conf descrito anteriormente, debería ejecutarse lo siguiente:

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

9.1.1.5 Reinicio de los servicios e inicio de la pasarela

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 2, Introducción y la Sección 11.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>
Imprimir esta página