Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Almacenamiento de objetos en Ceph y su API S3

Javier
October 19, 2017

Almacenamiento de objetos en Ceph y su API S3

LibreCon 2017
October 2017 @ Santiago de Compostela (Spain)

https://librecon.io/

Javier

October 19, 2017
Tweet

More Decks by Javier

Other Decks in Technology

Transcript

  1. • ¿Quién soy? – Javier – Igalia • Cloud &

    Virtualization team – Ing. Informático • software developer, networking, distributed systems… – Social media • twitter: @javimunhoz • LinkedIn: linkedin/in/javiermunhoz • blog: javiermunhoz.com/blog
  2. • La estructura de la charla – Ceph en 20

    minutos – La API S3 en 6 transparencias – Dos casos de uso basados en Ceph y RGW/S3 – Instalando y probando Ceph fácilmente – Algunos comandos habituales en Ceph – Ceph RGW S3 con Apache Libcloud, Ansible y Minio – Almacenamiento hyperescalable y diferenciación – Q&A
  3. • ¿Qué es Ceph? • Los bloques fundamentales • Principales

    abstracciones lógicas • Arquitectura • Extensiones
  4. • ¿Qué es Ceph? – Una solución de almacenamiento Open

    Source distribuído, escalable y tolerante a fallos – La magia detrás de Ceph • Almacenamiento basado en objetos • CRUSH – Sistema de ficheros, dispositivos de bloques y objetos de alto nivel (ej. API S3) son interfaces sobre objetos nativos
  5. • ¿Qué es Ceph? – Cephalopd – Sage Weil (Universidad

    de California, Santa Cruz) – Red Hat compra Inktank en 2014 – En 2015 se forma el ‘Ceph Community Advisory Board’ (Canonical, CERN, Cisco, Fujitsu, Intel, Red Hat, SanDisk y SUSE) – ‘Releases’ • Argonaut, Bobtail, Cuttlefish… • Jewel (v10.2.0), Kraken (v11.2.0) and Luminous (v12.2.0)
  6. • ¿Qué desafíos estamos tratando de resolver? – El almacenamiento

    masivo de datos – Un crecimiento en hyperescala – Arquitecturas de almacenamiento tradicionales rígidas y poco flexibles • ¿Quién tiene este problema? – Actores de nube • Centros Científicos (ej. CERN) • Las llamadas ‘GAFA’ (Google, Apple, Facebook, Amazon) • Universidades (ej. OpenStack) • Proveedores Cloud independientes • ...
  7. • ¿A qué desafíos técnicos nos enfrentamos? – Arquitecturas de

    almacenamiento tradicionales • No gestionan de forma inteligente los metadatos • Usan y mantienen tablas de búsqueda para gestionar los metadatos • Los metadatos son datos que permiten conocer donde se almacenan los datos • Para sistemas de almacenamiento modestos puede no apreciarse problemas de rendimiento pero esto limita la escalabilidad del sistema
  8. • ¿Cómo trata de resolver estos desafíos Ceph? – A

    través de una arquitectura de almacenamiento de datos basada en objetos – Arquitectura diseñada para retener cantidades masivas de datos – Objeto • datos, metadatos y un identificador global único
  9. • ¿Cómo trata de resolver estos desafíos Ceph? – Ceph

    emplea la abstracción de objeto como un bloque de construcción – Cualquier tipo de dato (bloque, fichero, objeto, etc) se almacena en forma de objeto en el cluster – Solución a las necesidades actuales y futuras de almacenamiento no estructurado – Ceph replica estos objetos nativos para mejorar la disponibilidad y confiabilidad de los datos – El almacenamiento de los objetos es flexible y no está predeterminado a nivel físico – Este diseño permite escalar linealmente del petabyte al exabyte
  10. • ¿Cómo trata de resolver estos desafíos Ceph? – Ceph

    no trata de buscar la localización de un objeto a través de tablas y estructuras intermedias. Ceph computa esta localización a través de CRUSH – CRUSH es un algoritmo y un conjunto de reglas que se aplican a un estado conocido del cluster – Controlled Replication Under Scalable Hashing – CRUSH es consciente de la geometría del cluster y gestiona las zonas de fallo a través de su mapa de forma autónoma
  11. • Los bloques fundamentales – Los ‘MON’ • Monitores •

    Gestionan los mapa/s del cluster (CRUSH) • Un cluster suele tener más de un monitor. En este caso llegan a consenso a través de Paxos • Mantienen un diálogo con todos los componentes que necesiten conocer la geometría del cluster y sus actualizaciones
  12. • Los bloques fundamentales – Los ‘OSD’ • ‘Object Storage

    Device’ • Su responsabilidad principal es almacenar los bloques de datos y los metadatos • Para garantizar la disponibilidad por replicación se necesitan 3 replicas • Mantienen un diálogo entre ellos para acordar su estado de replicación, comprobar que sus datos no están corruptos, etc. • Mantienen un diálogo con los monitores para actualizar la geometría del cluster
  13. • Principales abstracciones lógicas – El ‘pool’ • Particiona el

    almacenamiento global en ‘pools’ • Un ‘pool’ es una división lógica • Sobre esta abstracción se aplican las políticas de replicación, el control de acceso, etc • Ceph crea un ‘pool’ por defecto tras la instalación
  14. • Principales abstracciones lógicas – El ‘placement group’ (PG) •

    Grupo de colocación • Cada objeto es asignado a un PG durante su distribución • El sistema los genera automaticamente
  15. • Reliable Autonomic Distributed Object Store (RADOS) – Denominado también

    ‘Ceph storage cluster’ – Características • Disponibilidad • Confiabilidad • autogestionado • ‘self-healing’ • ningún punto único de fallo
  16. • Extensiones y Aplicaciones sobre RADOS – Librados • Paradigma

    cliente-cluster – Ceph FileSystem (CephFS) • Requiere un servidor de metadatos (MDS) – Rados Block Device (RBD) • Dispositivos de bloque (Block Device) – Object Gateway (RadosGW or RGW) • ‘Traduce’ los objetos nativos de Ceph a objetos S3/Swift
  17. • ¿Qué es Amazon S3? – Simple Storage Service (S3)

    – Almacenamiento para Internet – Web service interface (REST, SOAP) – Permite almacenar objetos (1 byte a 5 GB) – Los objetos contienen datos y metadatos – Los objetos son almacenados y recuperados usando una clave (key) – Los objetos son accesibles vía http, bittorrent, etc.
  18. • ¿Qué es Amazon S3? – Todos los objetos son

    almacenados en ‘buckets’ – Un bucket es un contenedor para objetos • mybucket.s3.amazonaws.com – Los buckets son útiles para particionar a nivel raíz – Una ‘key’ (clave) es el identificador único para un objeto dentro de un ‘bucket’ – Ejemplo: • http://mybucket.s3.amazonaws.com/myhome.html
  19. • ¿Qué es Amazon S3? – Ventajas • Escalable •

    Alta disponibilidad • Almacenamiento “ilimitado” • Económico • Accesible desde cualquier localización • ...
  20. • ¿Qué es Amazon S3? – Principales casos de uso

    • Website estáticos • Media storage (videos, fotos, etc) • Backups • Almacenamiento intermedio (transcoding, etc) • ...
  21. • ¿Qué es Amazon S3? – La API S3 •

    http://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html • Algunas operaciones en ‘buckets’ y ‘objects’ – CRUD – Casos de uso • autenticación, ‘browser uploads’, analíticas, ciclos de vida, métricas, replicación, ‘tagging’, website support, logging, versionado, ‘multipart uploads’, ‘requestPayment’, ‘torrent support’, ‘copy-part support’...
  22. • ¿Qué es Amazon S3? – Un ejemplo de llamada

    a la API S3 (GET Object) • Obtiene los primeros 10 bytes de un objeto (test.txt) en el bucket ‘examplebucket’ GET /test.txt HTTP/1.1 Host: examplebucket.s3.amazonaws.com x-amz-date:20130524T000000Z Authorization: SignatureToBeCalculated Range: bytes=0-9 x-amz-content- sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 x-amz-date: 20130524T000000Z
  23. • La forma tradicional – http://docs.ceph.com/docs/master/start/ – Tres pasos •

    prevuelo (requisitos) • cluster de almacenamiento • los clientes (bloque, filesystem, etc)
  24. • Archivos e imágenes de Docker para ejecutar Ceph en

    contenedores – https://github.com/ceph/ceph-dock – https://hub.docker.com/r/ceph/demo/ – docker run -d –net=host -v /etc/ceph:/etc/ceph -e MON_IP=192.168.0.20 -e CEPH_PUBLIC_NETWORK=192.168.0.0/24 ceph/demo
  25. • pool quotas – ceph osd pool set-quota {pool-name} [max_objects

    {obj-count}] [max_bytes {bytes}] – $ ceph osd pool set-quota data max_objects 10000
  26. • Número de replicas – $ ceph osd pool set

    data size 3 – $ ceph osd pool set data min_size 2
  27. • RADOS Block Devices (RBD) – $ rbd create [image

    name] --size [size in MB] – $ rbd --pool mypool create my-image --size 10 – $ rbd ls – Map & Mount • $ sudo modprobe rbd • $ rbd map my-image –name client.admin -m node1 • $ sudo mkfs.ext4 -m0 /dev/rbd/rbd/my-image • $ sudo mkdir /mnt/my-ceph-block-device • $ sudo mount /dev/rbd/rbd/my-image /mnt/my-ceph-block-device
  28. • Apache Libcloud – libcloud.apache.org – Librería de Python para

    interactuar con proveedores de servicio de cloud – API unificada – ‘One interface to rule them all’
  29. • Ceph RGW storage driver – upstream en Apache Libcloud

    1.0.0 http://javiermunhoz.com/blog/2016/05/17/the-ceph-rgw-storage-driver-goes-upstream-in-libcloud.html
  30. • Minio client – github.com/minio/mc – cliente S3 ligero –

    ls, cat, cp, diff, etc http://javiermunhoz.com/blog/2016/12/16/ceph-rgw-aws4-presigned-urls-working-with-the-minio-cloud-client.html
  31. • Ansible – www.ansible.com – motor de automatización • aprovisionamiento

    • gestión de la configuración • despliegue de aplicaciones • orquestación • ...
  32. • Ansible – Soporte para RGW upstream – Parte del

    módulo core de Amazon S3 http://javiermunhoz.com/blog/2016/06/21/ansible-aws-s3-core-module-now-supports-ceph-rgw-s3.html
  33. • La capa de valor de almacenamiento – diferenciación, funcionalidades,

    etc. (RGW/S3) • Estrategia de líder frente a perseguidor – innovación vs interoperabilidad – cobertura de RGW/S3 vs AWS/S3 • Riesgos – obsolescencia/sustitución de funcionalides • ej. AWS2/AWS4 • Innovación • ej. ‘Smart Buckets’