Il·limitat emmagatzematge distribuït amb CEPH

Emmagatzematge distribuït

Darrera actualització:

Wetopi Infrastructure Sèries Posts

T’imagines un emmagatzematge infinitament escalable?

Ja no és un somni, és una realitat!

Table of Contents

L’emmagatzematge és EL PROBLEMA

L’emmagatzematge de dades sol ser EL PROBLEMA quan dissenyem l’arquitectura d’una plataforma, amb més raó encara si estem parlant d’una plataforma de serveis d’allotjament.

Ens vam adonar d’això ja en 2015, quan migrem Wetopi a una infraestructura escalable.

Des de principis del segle XXI, les persones hem començat a utilitzar la tecnologia en tots els aspectes de la vida, adoptant-la cada vegada més per a facilitar-los la vida.

Amb aquest creixent ús, la demanda d’emmagatzemar i preservar les dades també ha augmentat exponencialment.

“L’emmagatzematge és l’habilitador fonamental de la civilització. L’escriptura (la primera forma d’emmagatzematge) va permetre la civilització. L’emmagatzematge digital permet ara la civilització digital”.

Robin Harris from StorageMojo.

Utilitzem el nostre telèfon per a prendre fotos, vídeos, emmagatzemar converses, els nostres documents i per a atresorar aquests records els pugem a serveis online com el que ofereix Google per exemple.

L’any passat, Twitter va anunciar que esperava transferir més de 300 petabytes d’emmagatzematge de dades al núvol. A manera de comparació, a finalitats de 2017, tot l’Arxiu d’Internet contenia gairebé 40 petabytes.

Aquest exemple ens dóna una idea de la magnitud del problema d’emmagatzematge de dades al qual aquestes companyies han d’estar enfrontant-se.

Amb aquestes xifres, pots imaginar que les solucions d’emmagatzematge de dades necessiten evolucionar cap a models escalables i flexibles per a adaptar-se a aquesta necessitat cada vegada major de recursos d’emmagatzematge.

L’emmagatzematge en servidors “bare-metall” és ràpid i fàcil, avui dia podem triar discos SSD (disc d’emmagatzematge sòlid) i llestos.

El problema amb els servidors “bare metall” és que necessiten manteniment, la qual cosa també implica temps d’inactivitat i no són fàcilment escalables.

La solució passa per l’emmagatzematge Distribuït

Però que entenem per Emmagatzematge distribuït?

Revisem Wikipedia per a donar-li una definició clara:

“Un emmagatzematge de dades distribuït és una xarxa de servidors on la informació s’emmagatzema en més d’un node, sovint de manera replicada. En general, s’usa específicament per a referir-se a una base de dades distribuïda on els usuaris emmagatzemen informació en diversos nodes, o un servidor en el qual els usuaris emmagatzemen informació i est l’emmagatzema repartida en nodes de la seva xarxa”.

Wikipedia

De forma simplificada podem imaginar-ho com un grup de servidors “bare metall” en una xarxa (el que anomenem un clúster), i sobre aquests bare metall utilitzar un Programari de Virtualització* que permeti organitzar els processadors o “potència de càlcul” d’una banda i agrupar i distribuir l’emmagatzematge per un altre.

() El programari de virtualització et permet executar dues o més sistemes operatius usant només una ordinador. És una manera eficient de dividir un servidor.

El disposar d’un emmagatzematge distribuït, et permet gran flexibilitat. Pots canviar el servidor virtual de grandària, ubicació, Sistema Operatiu, … i sempre vincular-li el teu emmagatzematge de dades perquè les dades en estar distribuïts els pots recuperar en qualsevol punt.

En poques paraules, un emmagatzematge de dades distribuïdes significa que el teu volum de dades es pot moure instantàniament d’una ubicació a una altra.

És fiable l’emmagatzematge distribuït?

En el passat, l’emmagatzematge portable, ràpid i escalable generalment es proporcionava amb una SAN (“Storage Area Network”) o NAS (“Network Attached Storage”). Aquests enormes sistemes centralitzats d’emmagatzematge eren cars i difícils d’administrar i actualitzar.

Escalar i actualitzar aquest tipus de plataformes d’emmagatzematge resulta difícil, i l’arquitectura susceptible al bloqueig “lock-in” per part del proveïdor o fins i tot de l’obsolescència programada de components.

Durant aquests últims 15 anys, el model d’Emmagatzematge distribuït, ha anat guanyant a poc a poc popularitat, rendiment, estabilitat i funcionalitats fins a convertir-se en el model de referència.

La idea darrere del terme “distribuït” consisteix a utilitzar multitud de servidors estàndard interconnectats aconseguint que es comportin com un gran sistema d’emmagatzematge virtual.

En els sistemes d’emmagatzematge distribuït, la informació necessita ser transportada a través de xarxes estàndard, sofrint el problema de la latència de les xarxes. No obstant això, els sistemes distribuïts generalment treballen amb redundància i la latència queda contrarestada amb la capacitat de poder llegir des de múltiples fonts al mateix temps.

La nostra selecció: Ceph

Wetopi uses Ceph to manage scalable distributed stora

En wetopi, durant la primera etapa en la qual dissenyem l’arquitectura escalable comencem treballant amb clústers de GlusterFS.

GlusterFS proporcionava rendiment i simplicitat. En una segona etapa, perseguint major flexibilitat i capacitat per a l’escalat ens endinsem en l’arquitectura d’emmagatzematge de Ceph.

Ceph és avui dia la nostra plataforma d’emmagatzematge clusterizado i no podem estar més contents amb l’elecció. !Ceph és una bèstia! i no hi ha dia que no ens deixi de sorprendre.

Algunes de les raons per les quals Ceph és una solució tan bona són: perquè és flexible, econòmic, tolerant a falles, neutral en maquinari i infinitament escalable, la qual cosa ho converteix en una excel·lent opció per a organitzacions de qualsevol grandària.

Ceph és “LA solució” open-source d’Emmagatzematge Distribuït líder en el mercat. Són molts els centres de recerca i les indústries que basen la seva arquitectura d’emmagatzematge en Ceph: CERN, VISA, Bloomberg, Yahoo, …

L’algorisme de Ceph, CRUSH, allibera els clústers d’emmagatzematge de les limitacions d’escalabilitat i rendiment imposades pels dispositius de dades centralitzades.

De forma simplificada, la gràcia de l’algorisme CRUSH, destinat a organitzar els objectes, és que permet assignar l’emplaçament, equilibrar i replicar les dades dins del clúster de forma descentralitzada, alliberant d’aquesta tediosa tasca als administradors o “metadata managers”.

Ceph és el resultat de centenars de contribuents i organitzacions que treballen junts en les millors pràctiques de codi obert. Algunes d’aquestes organitzacions són Intel, Fujitsu, Sandisk, només per nomenar algunes.

Beneficis de l’emmagatzematge distribuït Ceph

Com esmentem abans, Ceph és flexible, econòmic, tolerant a falles, neutral en maquinari i infinitament escalable. A més de tot això, Ceph ens proporciona:

  • Suport per a múltiples tipus d’emmagatzematge: objectes, blocs i sistemes d’arxius. Independentment de la mena de treball que es realitzi, els arxius, blocs i/o objectes resultants poden viure en harmonia en Ceph.
  • Suport natiu d’entorns cloud híbrids.
  • Open-source programari – Alliberi de lock-in i obsolescència programada.
  • Tolerància a la fallada: no és necessari comprar maquinari redundant en cas que falli un component. La funcionalitat de recuperació automàtica de Ceph replica ràpidament el node fallit, garantint una alta disponibilitat i redundància de dades.

L’únic inconvenient de Ceph és que és extraordinàriament complicat pel que té un cicle d’aprenentatge llarg. En altres paraules, per a aprofitar aquesta eina tan increïble necessites una comprensió profunda de Ceph.

Intentarem resumir el més clarament possible com treballem amb Ceph.

Infraestructura Ceph de Wetopi

En Wetopi, tots els clústers de màquines virtuals es proveeixen d’emmagatzematge distribuït CEPH. És a dir tots els discos dels servidors els proporciona CEPH.

Com hi ha diferents usos de disc, en Wetopi se serveixen dos tipus o pools:

  1. SATA (Serial Advanced Technology Attachment storage: emmagatzematge basat en múltiples discos SATA), el “no performante”. Aquesta “pool” d’emmagatzematge es consumeix en servidors d’infraestructura amb tasques que no requereixen d’un elevat rendiment.
  2. El SSD “super rendiment”. Basat en un agregat de discos d’emmagatzematge sòlid. Aquest grup proporciona emmagatzematge a totes les màquines virtuals utilitzades per l’usuari final de WordPress i a totes les màquines virtuals d’infraestructura que requereixen màxim rendiment.

Les teves dades es guarden 3 vegades

Totes dues “pools” estan configurades per a emmagatzemar les dades en la rèplica 3. D’aquesta forma, en el cas pràcticament impossible que un o fins i tot dos servidors d’emmagatzematge es trenquessin, el teu servidor WordPress no es detindria ni es perdria cap dada.

Amb 3 còpies la teva WordPress està segur!

Vegem què succeeix amb les teves dades quan guardes alguna cosa en un servidor amb emmagatzematge que treballa amb Ceph:

  1. Les dades van al grup SSD i l’algorisme CRUSH el trenca assignant diferents dades a diferents Grups d’Ubicacions, “Placement Group”.
  2. El “Placement Group” utilitza l’algorisme CRUSH per a enviar les seves dades al OSD primari (Object Storage Daemon).
  3. El OSD Primari replica el nostre “Placement Group” a un segon i a un tercer OSD
  4. Quan el teu servidor rep la confirmació de “escriptura” del ODS primari i secundari, és llavors quan les dades es consideren “segurs”.

Liderant la integració de Ceph amb Docker Swarm

WordPress servers at Wetopi are containerized using Docker

En Wetopi, els teus servidors WordPress estan en contenidors Docker.

Docker Swarm és el orquestador del clúster de contenidors. S’encarrega de mantenir viu el teu servidor WordPress. Si el teu servidor es deté a causa d’un problema:

  1. El orquestador intentarà rescatar-ho gairebé a l’instant.
  2. Si el servei falla a causa d’un problema amb la seva ubicació, el orquestador cerca una nova ubicació física, movent el teu servidor a un nou node.

Per a permetre que Docker pugui orquestrar i moure lliurement el teu servidor al voltant del clúster, Docker ha de ser capaç de bregar amb els volums d’emmagatzematge.

Per a fer això de manera eficient, desenvolupem el nostre propi controlador de discos rbd Ceph per a Docker.

No trobem el controlador d’emmagatzematge perfecte, així que ho creguem!

Per què?

  1. Docker és una plataforma en constant evolució. Necessitàvem un plugin d’emmagatzematge capaç d’avançar amb els últims canvis de docker.
  2. Els plugins ja existents per a controlar volums RBD (RADOS Block Device) eren antics, i amb moltes dependències amb programari extern. El nostre propòsit era disposar d’un driver RBD lleuger i ràpid.  

Aquí pots veure el repositori git i descarregar el plugin Docker Swarm RBD https://github.com/wetopi/docker-volume-rbd

El codi està baix llicencia MIT, per la qual cosa pots usar-lo gratis o fins i tot contribuir.

Esperem que després de llegir aquesta publicació, tinguis una millor idea de com funciona l’emmagatzematge distribuït i per què els clústers distribuïts són “LA” solució al problema d’emmagatzematge.

Escriu-nos si tens algun dubte o comentari. Estarem encantats d’ajudar!

Resumidament, som uns techies apassionats per WordPress que hem creat Wetopi, un Hosting WordPress Gestionat, per minimitzar la fricció a la que tot professional s’enfronta en treballar i allotjar projectes WordPress.

Inclou servidors de desenvolupament Gratis.
No cal tarjeta de crèdit.

Compara Wetopi amb el teu hosting actual

Dóna’t d’alta, demana una migració i compara.

Sense cap compromís ni esforç per part teva, migrem una còpia del teu web.

Sense lletra petita.
Sense compromisos.
Sense targeta de crèdit.