Ilimitado almacenamiento distribuido con CEPH

Almacenamiento ilimitado

Última actualización:

Wetopi Infrastructure Series Posts

¿Te imaginas un almacenamiento infinitamente escalable?

¡Ya no es un sueño, es una realidad!

Tabla de contenidos

El almacenamiento es EL PROBLEMA

El almacenamiento de datos suele ser EL PROBLEMA cuando diseñamos la arquitectura de una plataforma, con más razón aún si estamos hablando de una plataforma de servicios de alojamiento.

Nos dimos cuenta de eso ya en 2015, cuando migramos Wetopi a una infraestructura escalable.

Desde principios del siglo XXI, las personas hemos comenzado a utilizar la tecnología en todos los aspectos de la vida, adoptándola cada vez más para facilitarles la vida.

Con este creciente uso, la demanda de almacenar y preservar los datos también ha aumentado exponencialmente.

“El almacenamiento es el habilitador fundamental de la civilización. La escritura (la primera forma de almacenamiento) permitió la civilización. El almacenamiento digital permite ahora la civilización digital».

Robin Harris from StorageMojo.

Utilizamos nuestro teléfono para tomar fotos, vídeos, almacenar conversaciones, nuestros documentos y para atesorar estos recuerdos los subimos a servicios online como el que ofrece Google por ejemplo.

El año pasado, Twitter anunció que esperaba transferir más de 300 petabytes de almacenamiento de datos a la nube. A modo de comparación, a fines de 2017, todo el Archivo de Internet contenía casi 40 petabytes.

Este ejemplo nos da una idea de la magnitud del problema de almacenamiento de datos al que estas compañías deben estar enfrentándose.

Con estas cifras, puedes imaginar que las soluciones de almacenamiento de datos necesitan evolucionar hacia modelos escalables y flexibles para adaptarse a esta necesidad cada vez mayor de recursos de almacenamiento.

El almacenamiento en servidores «bare-metal» es rápido y fácil, hoy en día podemos elegir discos SSD (disco de almacenamiento sólido) y listos.

El problema con los servidores «bare metal» es que necesitan mantenimiento, lo que también implica tiempo de inactividad y no son fácilmente escalables.

La solución pasa por el almacenamiento Distribuido

¿Pero que entendemos por Almacenamiento distribuido?

Revisemos Wikipedia para darle una definición clara:

«Un almacenamiento de datos distribuido es una red de servidores donde la información se almacena en más de un nodo, a menudo de manera replicada. Por lo general, se usa específicamente para referirse a una base de datos distribuida donde los usuarios almacenan información en varios nodos, o un servidor en el que los usuarios almacenan información y este la almacena repartida en nodos de su red».

Wikipedia

De forma simplificada podemos imaginarlo como un grupo de servidores «bare metal» en una red (lo que llamamos un cluster), y sobre estos bare metal utilizar un Software de Virtualización* que permita organizar los procesadores o «potencia de cálculo» por un lado y agrupar y distribuir el almacenamiento por otro.

(*) El software de virtualización te permite ejecutar dos o más sistemas operativos usando solo una ordenador. Es una manera eficiente de dividir un servidor.

El disponer de un almacenamiento distribuido, te permite gran flexibilidad. Puedes cambiar el servidor virtual de tamaño, ubicación, Sistema Operativo, … y siempre vincularle tu almacenamiento de datos pues los datos al estar distribuidos los puedes recuperar en cualquier punto.

En pocas palabras, un almacenamiento de datos distribuidos significa que tu volumen de datos se puede mover instantáneamente de una ubicación a otra.

¿Es fiable el almacenamiento distribuido?

En el pasado, el almacenamiento portable, rápido y escalable generalmente se proporcionaba con una SAN («Storage Area Network») o NAS («Network Attached Storage»). Estos enormes sistemas centralizados de almacenamiento eran caros y difíciles de administrar y actualizar.

Escalar y actualizar este tipo de plataformas de almacenamiento resulta difícil, y la arquitectura susceptible al bloqueo «lock-in» por parte del proveedor o incluso de la obsolescencia programada de componentes.

Durante estos últimos 15 años, el modelo de Almacenamiento distribuido, ha ido ganando poco a poco popularidad, rendimiento, estabilidad y funcionalidades hasta convertirse en el modelo de referencia.

La idea detrás del término «distribuido» consiste en utilizar multitud de servidores estándar interconectados consiguiendo que se comporten como un gran sistema de almacenamiento virtual.

En los sistemas de almacenamiento distribuido, la información necesita ser transportada a través de redes estándar, sufriendo el problema de la latencia de las redes. No obstante, los sistemas distribuidos generalmente trabajan con redundancia y la latencia queda contrarrestada con la capacidad de poder leer desde múltiples fuentes al mismo tiempo.

Nuestra selección: Ceph

Wetopi uses Ceph to manage scalable distributed stora

En wetopi, durante la primera etapa en la que diseñamos la arquitectura escalable empezamos trabajando con clusters de GlusterFS.

GlusterFS proporcionaba rendimiento y simplicidad. En una segunda etapa, persiguiendo mayor flexibilidad y capacidad para el escalado nos adentramos en la arquitectura de almacenamiento de Ceph.

Ceph es hoy en día nuestra plataforma de almacenamiento clusterizado y no podemos estar más contentos con la elección. !Ceph es una bestia! y no hay dia que no nos deje de sorprender.

Algunas de las razones por las que Ceph es una solución tan buena son: porque es flexible, económico, tolerante a fallas, neutral en hardware e infinitamente escalable, lo que lo convierte en una excelente opción para organizaciones de cualquier tamaño.

Ceph es «LA solución» open-source de Almacenamiento Distribuido líder en el mercado. Son muchos los centros de investigación y las industrias que basan su arquitectura de almacenamiento en Ceph: CERN, VISA, Bloomberg, Yahoo, …

El algoritmo de Ceph, CRUSH, libera los clústeres de almacenamiento de las limitaciones de escalabilidad y rendimiento impuestas por los dispositivos de datos centralizados.

De forma simplificada, la gracia del algoritmo CRUSH, destinado a organizar los objetos, es que permite asignar el emplazamiento, equilibrar y replicar los datos dentro del clúster de forma descentralizada, liberando de esta tediosa tarea a los administradores o «metadata managers».

Ceph es el resultado de cientos de contribuyentes y organizaciones que trabajan juntos en las mejores prácticas de código abierto. Algunas de estas organizaciones son Intel, Fujitsu, Sandisk, solo por nombrar algunas.

Beneficios del almacenamiento distribuido Ceph

Como mencionamos antes, Ceph es flexible, económico, tolerante a fallas, neutral en hardware e infinitamente escalable. Además de todo esto, Ceph nos proporciona:

  • Soporte para múltiples tipos de almacenamiento: objetos, bloques y sistemas de archivos. Independientemente del tipo de trabajo que se realice, los archivos, bloques y/o objetos resultantes pueden vivir en armonía en Ceph.
  • Soporte nativo de entornos cloud híbridos.
  • Open-source software – Libere de lock-in y obsolescencia programada.
  • Tolerancia al fallo: no es necesario comprar hardware redundante en caso de que falle un componente. La funcionalidad de recuperación automática de Ceph replica rápidamente el nodo fallido, garantizando una alta disponibilidad y redundancia de datos.

El único inconveniente de Ceph es que es extraordinariamente complicado por lo que tiene un ciclo de aprendizaje largo. En otras palabras, para aprovechar esta herramienta tan increíble necesitas una comprensión profunda de Ceph.

Intentaremos resumir lo más claramente posible cómo trabajamos con Ceph.

Infraestructura Ceph de Wetopi

En Wetopi, todos los clústeres de máquinas virtuales se abastecen de almacenamiento distribuido CEPH. Es decir todos los discos de los servidores los proporciona CEPH.

Como hay distintos usos de disco, en Wetopi se sirven dos tipos o pools:

  1. SATA (Serial Advanced Technology Attachment storage: almacenamiento basado en múltiples discos SATA), el «no performante». Ésta «pool» de almacenamiento se consume en servidores de infraestructura con tareas que no requieren de un elevado rendimiento.
  2. El SSD “super rendimiento”. Basado en un agregado de discos de almacenamiento sólido. Este grupo proporciona almacenamiento a todas las máquinas virtuales utilizadas por el usuario final de WordPress y a todas las máquinas virtuales de infraestructura que requieren máximo rendimiento.

Tus datos se guardan 3 veces

Ambas «pools» están configuradas para almacenar los datos en la réplica 3. De esta forma, en el caso prácticamente imposible de que uno o incluso dos servidores de almacenamiento se rompieran, tu servidor WordPress no se detendría ni se perdería ningún dato.

¡Con 3 copias tu WordPress está seguro!

Veamos qué sucede con tus datos cuando guardas algo en un servidor con almacenamiento que trabaja con Ceph:

  1. Los datos van al grupo SSD y el algoritmo CRUSH lo rompe asignando diferentes datos a diferentes Grupos de Ubicaciones, «Placement Group».
  2. El «Placement Group» utiliza el algoritmo CRUSH para enviar sus datos al OSD primario (Object Storage Daemon).
  3. El OSD Primario replica nuestro «Placement Group» a un segundo y a un tercer OSD
  4. Cuando tu servidor recibe la confirmación de «escritura» del ODS primario y secundario, es entonces cuando los datos se consideran «seguros».

Liderando la integración de Ceph con Docker Swarm

WordPress servers at Wetopi are containerized using Docker

En Wetopi, tus servidores WordPress están en contenedores Docker.

Docker Swarm es el orquestador del clúster de contenedores. Se encarga de mantener vivo tu servidor WordPress. Si tu servidor se detiene debido a un problema:

  1. El orquestador intentará rescatarlo casi al instante.
  2. Si el servicio falla debido a un problema con su ubicación, el orquestador busca una nueva ubicación física, moviendo tu servidor a un nuevo nodo.

Para permitir que Docker pueda orquestar y mover libremente tu servidor alrededor del clúster, Docker debe ser capaz de lidiar con los volúmenes de almacenamiento.

Para hacer esto de manera eficiente, desarrollamos nuestro propio controlador de discos rbd Ceph para Docker.

No encontramos el controlador de almacenamiento perfecto, ¡así que lo creamos!

¿Por qué?

  1. Docker es una plataforma en constante evolución. Necesitábamos un plugin de almacenamiento capaz de avanzar con los últimos cambios de docker.
  2. Los plugins ya existentes para controlar volúmenes RBD (RADOS Block Device) eran antiguos, y con muchas dependencias con software externo. Nuestro propósito era disponer de un driver RBD ligero y rápido.  

Aquí puedes ver el repositorio git y descargar el plugin Docker Swarm RBD https://github.com/wetopi/docker-volume-rbd

El código está bajo licencia MIT, por lo que puedes usarlo gratis o incluso contribuir.

Esperamos que después de leer esta publicación, tengas una mejor idea de cómo funciona el almacenamiento distribuido y por qué los clusters distribuidos son «LA» solución al problema de almacenamiento.

Escríbenos si tienes alguna duda o comentario. Estaremos encantados de ayudar!

¿No tienes una cuenta en wetopi?

Incluye servidores desarrollo Gratis.
Sin tarjeta de crédito.

Compara wetopi con tu hosting actual

Date de alta, pide una migración y compara.

Hacemos una copia de tu web gratis y sin esfuerzo por tu parte.

Sin letra pequeña.
Sin compromisos.
Sin tarjeta de crédito.