3 min de lectura

Construyendo Homescale con Ceph y Kubernetes

Un nuevo proyecto Homescale pretende clonar instancias de bases de datos escribibles desde instantáneas sin copias completas, usando Ceph RBD y las APIs de almacenamiento de Kubernetes.

Imagen: Hacker News

Homescale es un intento de llevar la ramificación de bases de datos al estilo PlanetScale a una implementación propia. El proyecto, publicado en github.com/homescale-dev/homescale, crea instancias de bases de datos escribibles y ramas en un punto temporal a partir de instantáneas inmutables sin copiar primero toda la base de datos.

El modelo central toma prestado de Docker. En Homescale, una imagen es un punto de partida inmutable, un contenedor es una copia escribible de esa imagen, y una rama es otro contenedor escribible creado a partir del estado actual de uno existente. La CLI prevista se ve así:

  • homescale image create --engine postgres postgres-base
  • homescale container create --image postgres-base dev-db
  • homescale container connect dev-db
  • homescale branch create --container dev-db feature-login
  • homescale container connect feature-login

El primer objetivo es Postgres, aunque el autor dice que el diseño de almacenamiento es agnóstico respecto a la base de datos siempre que el motor guarde estado duradero en un sistema de archivos respaldado por un dispositivo de bloques y pueda prepararse para una instantánea recuperable.

Recomendado

Alibaba abre SAIL para debilitar el dominio de CUDA de Nvidia

En el corazón del diseño está el almacenamiento copy-on-write (COW). En lugar de duplicar una base de datos de 100 GB para crear una rama, la instancia hija inicialmente comparte los datos no modificados con su instantánea padre. El uso de almacenamiento crece solo a medida que ambas divergen. Eso hace que la ramificación sea barata al inicio, con un coste inicial limitado principalmente a metadatos.

Por qué Ceph RBD encaja en el diseño

Para la capa de almacenamiento, el proyecto usa Ceph, específicamente RADOS Block Device (RBD). Una imagen RBD se comporta como un dispositivo de bloques normal que se puede montar y formatear, mientras que Ceph gestiona las instantáneas y los clones escribibles por debajo.

El flujo de ramas se mapea de forma ordenada a operaciones de Ceph:

  • crear una instantánea RBD
  • proteger esa instantánea
  • crear un clon escribible a partir de ella

El autor muestra la secuencia rbd equivalente:

  • rbd snap create homescale/dev-db@feature-login
  • rbd snap protect homescale/dev-db@feature-login
  • rbd clone homescale/dev-db@feature-login homescale/feature-login

Ceph almacena datos RBD como objetos en RADOS, con objetos mapeados a grupos de colocación (placement groups) y luego a OSDs. El tamaño de objeto por defecto es 4 MB, lo que significa que una pequeña escritura en la base de datos aún puede desencadenar una asignación subyacente mayor cuando los datos compartidos se copian en un clon.

Kubernetes se encarga de la orquestación

En lugar de gestionar directamente los procesos de la base de datos y el almacenamiento, Homescale utiliza Kubernetes como plano de control. La CLI habla con la API de Homescale, que crea PVCs, recursos VolumeSnapshot y cargas de trabajo de la base de datos. Ceph CSI traduce las solicitudes de almacenamiento en operaciones RBD, mientras que Rook gestiona el propio clúster de Ceph.

El primer objetivo de despliegue es una configuración local en macOS que ejecute un clúster de Kubernetes de un solo nodo, probablemente vía Colima o Lima, con un OSD de Ceph y un dispositivo de almacenamiento. El autor también podría desplegarlo en un clúster privado de Talos en Hetzner Cloud, donde un pool replicado de Ceph con size: 3 y failureDomain: host podría mantener los volúmenes disponibles frente a fallos de nodo o disco.

Esa separación es el objetivo del proyecto: Homescale solicita a Kubernetes PVCs y recursos VolumeSnapshot, y la pila subyacente de Ceph se encarga de las instantáneas, los clones y la persistencia.

Marcus Vance

Enterprise Editor

Marcus follows the money. He covers enterprise software, cloud architecture, and the tectonic shifts in Big Tech strategy. He translates dense earnings calls and complex M&A activity into actionable insights about where the industry is actually heading. If a tech giant makes a silent pivot, Marcus is usually the first to notice.

vía Hacker News

// Sigue leyendo