En la Figura 2.1 se muestra la arquitectura de un clúster Ceph [35]. Existen cuatro servicios principales que son los encargados de manejar todas las tareas del clúster.
Figura 2.1 Arquitectura del clúster Ceph[35]
Sin importar cuales son los servicios que se brindarán (Almacenamiento de Objetos Ceph, Dispositivo de Bloques Ceph, Sistema de Archivos Ceph u otro propósito) todas las implementaciones de un clúster Ceph requieren de al menos un Ceph Monitor, un Ceph Manager y un Ceph OSD. Cuando se utilizará Ceph como sistema de archivos, como es el caso del presente trabajo, se necesita además como mínimo un Servidor de Metadatos Ceph (MDS). Cada uno de estos servicios tiene tareas bien definidas:
Monitors: Un Ceph Monitor (nombre de servicio ceph-mon) mantiene los mapas de estado del clúster, incluyendo el mapa de monitores (Monitors), el mapa de Managers, el mapa de OSDs, el mapa de servidores de metadatos (MDS) y el mapa CRUSH. Estos mapas son críticos para el funcionamiento del clúster, dado que permiten la coordinación entre los servicios. Los monitores también son responsables del proceso de autenticación entre servicios del clúster y los usuarios. Para lograr una correcta redundancia y alta disponibilidad se recomiendan al menos tres monitores.
Managers: Un Ceph Manager (nombre de servicio ceph-mgr) es responsable de mantener las métricas de tiempo de ejecución y el estado actual del clúster Ceph, incluyendo utilización del almacenamiento, métricas de desempeño y carga del
sistema. Además, hospedan módulos basados en Python para gestionar y compartir información del sistema, incluyendo un panel de utilidades (Ceph Dashboard) basado en web. Para lograr una correcta redundancia y alta disponibilidad se recomiendan al menos dos managers.
Ceph OSD: Un Ceph OSD (nombre de servicio ceph-osd) es el servicio encargado de almacenar los datos, manejar la replicación, recuperación, rebalanceo y proveen de información a los Ceph Monitors y a los Ceph Managers chequeando el estado de otros OSD. Para lograr una correcta redundancia y alta disponibilidad se recomiendan al menos tres OSD.
MDS: Un Servidor de Metadatos Ceph (nombre de servicio ceph-mds) almacena los metadatos de los sistemas de archivos Ceph (los Dispositivos de Bloques Ceph y el Almacenamiento de Objetos Ceph no usan este servicio). Además, permite a los usuarios de sistemas de archivos POSIX ejecutar comandos (como ls, find, etc.) sin agregar enormes cargas de trabajo al clúster.
Ceph almacena los datos como objetos en particiones lógicas (llamadas pools). Usando el algoritmo CRUSH[33], calcula cuál grupo de ubicación deberá contener el objeto y luego calcula cuál Ceph OSD debe almacenar el grupo de ubicación. De esta forma se asegura escalabilidad, rebalanceo y recuperación dinámica. Un grupo de ubicación es una colección lógica de objetos que son replicados por el mismo conjunto de dispositivos. Cada grupo de ubicación está determinado, entre otros parámetros, por el número total de grupos de ubicación, por tanto, cuando el clúster escala es necesario recalcular y ajustar gradualmente el número total de grupos de ubicación. Cada partición lógica tiene un número de grupos de ubicación establecido en el momento de su creación, aunque puede ser cambiado. El mapeo de objetos a grupos de ubicación crea una capa de indirección entre el Ceph OSD y el cliente Ceph, lo que permite al clúster aumentar (o disminuir) y rebalancear donde son almacenados los objetos dinámicamente. La Figura 2.2 muestra un diagrama de cómo CRUSH mapea objetos a grupos de ubicación y grupos de ubicación a los OSDs.
Figura 2.2 Diagrama de funcionamiento del algoritmo CRUSH[33]
Cuando un nuevo Ceph OSD es añadido al clúster, el mapa del clúster es actualizado con el nuevo OSD. Consecuentemente, esto cambia el cálculo de las ubicaciones para los objetos porque se modifica la entrada del algoritmo CRUSH. La Figura 2.3 muestra el proceso de rebalanceo que tiene lugar por esta causa, donde algunos grupos de ubicación son migrados al nuevo OSD. En un clúster grande, muchos de los grupos de ubicación permanecen en su configuración original y cada OSD obtiene un poco más de capacidad, por lo que todos los OSD tendrán en promedio la misma carga cuando el rebalanceo termine.
Según la documentación oficial de Ceph[35], se recomienda que cada máquina posea como mínimo dos controladores de interfaz de red, uno para la llamada “red de acceso” y otro para la llamada “red del clúster”. La red del clúster (no conectada a la red de acceso) maneja la carga adicional de replicación de los datos y ayuda a proteger el sistema de ataques de denegación de servicio. Solo los servidores del clúster Ceph están conectados a la red del clúster. La red de acceso es la que conecta cada servidor del clúster Ceph con los nodos clientes. Los servidores sobre los que se implementó Ceph en el presente trabajo cuentan con dos controladores de interfaz de red cada uno. Las conexiones de red propuestas en el clúster Ceph quedaron configuradas como muestra la Figura 2.4.
Figura 2.3 Proceso de rebalanceo en Ceph.
Como se observa, todos los servidores están conectados a través de una de sus interfaces de red a la red de acceso (representada en color amarillo) desde donde accederán los nodos clientes a los servicios del sistema de archivos. La otra interfaz de red de cada servidor está conectada a la subred del clúster (representada en color azul), la cual está aislada de la red de acceso. Ambas, funcionan bajo el estándar Ethernet a una velocidad de 1GB/s. En el siguiente epígrafe se explicarán otras razones de por qué se implementó esta arquitectura de red.