postgresql - what - Almacenamiento persistente para Apache Mesos
mesos dc os (1)
Excelente pregunta Estas son algunas de las funciones que se presentarán próximamente en Mesos para mejorar la compatibilidad con servicios con estado y las soluciones provisionales correspondientes.
- Volúmenes persistentes (0.23): al iniciar una tarea, puede crear un volumen que exista fuera del entorno limitado de la tarea y persistirá en el nodo incluso después de que la tarea muera / finalice. Cuando la tarea finaliza, sus recursos, incluido el volumen persistente, se pueden volver a ofrecer al marco, de modo que el marco pueda iniciar la misma tarea nuevamente, iniciar una tarea de recuperación o iniciar una nueva tarea que consuma la salida de la tarea anterior. como su entrada.
- Solución actual: mantenga su estado en una ubicación conocida fuera del entorno limitado y haga que sus tareas intenten recuperarlo manualmente. Tal vez persistir en un sistema de archivos / base de datos distribuidos, para que se pueda acceder desde cualquier nodo.
- Isolation Disk (0.22): impone límites de cuota de disco en sandboxes así como también en volúmenes persistentes. Esto garantiza que su marco de almacenamiento pesado no pueda obstruir el disco y evitar que se ejecuten otras tareas.
- Solución actual: monitoree el uso del disco fuera de banda y ejecute trabajos de limpieza periódicos.
- Reservas dinámicas (0.23): al iniciar una tarea, puede reservar los recursos que utiliza su tarea (incluidos los volúmenes persistentes) para garantizar que se le vuelvan a ofrecer al salir de la tarea, en lugar de ir a cualquier marco que esté por debajo de su parte justa.
-
--resources
actual: utilice el indicador esclavo--resources
para reservar de manera estática recursos para su marco de trabajo al inicio del esclavo.
-
En cuanto a su caso de uso específico y preguntas:
1a) ¿Cómo lo organizaría uno? Puede hacer esto con Marathon, tal vez creando una instancia de Marathon separada para sus servicios con estado, de modo que pueda crear reservas estáticas para el rol ''con estado'', de modo que solo el estado de Marathon tenga garantizados esos recursos.
1b) ¿ Restringe un servidor a un nodo de clúster particular? Puede hacerlo fácilmente en Marathon, restringiendo una aplicación a un nombre de host específico, o cualquier nodo con un valor de atributo específico (por ejemplo, NFS_Access = true). Ver Restricciones de maratón . Si solo desea ejecutar sus tareas en un conjunto específico de nodos, solo deberá crear las reservas estáticas en esos nodos. Y si necesita la capacidad de detección de esos nodos, debería verificar la integración de Mesos-DNS y / o HAProxy de Marathon .
1c) ¿ Usa algún FS distribuido? La replicación de datos proporcionada por muchos sistemas de archivos distribuidos garantizaría que sus datos puedan sobrevivir a la falla de un solo nodo. La persistencia en un DFS también proporcionaría más flexibilidad en el lugar donde puede programar sus tareas, aunque a costa de la diferencia de latencia entre la red y el disco local. Mesos tiene soporte integrado para recuperar binarios de HDFS uris, y muchos clientes usan HDFS para pasar binarios de ejecutores, archivos de configuración y datos de entrada a los esclavos donde se ejecutarán sus tareas.
2) DRBD, MooseFS, GlusterFS, NFS, CephFS? He oído hablar de clientes que usan CephFS, HDFS y MapRFS con Mesos. NFS parece un ajuste fácil también. Realmente no le importa a Mesos lo que usa, siempre y cuando su tarea sepa cómo acceder desde cualquier nodo donde se encuentre.
¡Espero que ayude!
Recientemente descubrí algo así como un Apache Mesos.
Todo se ve increíble en todos los demos y ejemplos. Fácilmente podría imaginar cómo uno se postularía para empleos sin estado, eso se ajusta naturalmente a la idea completa.
¿Cómo lidiar con los trabajos de larga ejecución que son estables?
Diga, tengo un clúster que consiste en N máquinas (y eso está programado a través de Maratón). Y quiero ejecutar un servidor postgresql allí.
Eso es todo, al principio no quiero que sea altamente disponible, sino simplemente un único trabajo (en realidad, Dockerized) que aloja un servidor postgresql.
1- ¿Cómo lo organizaría uno? ¿Restringe un servidor a un nodo de clúster particular? Use algunos FS distribuidos?
2- DRBD, MooseFS, GlusterFS, NFS, CephFS, ¿cuál de ellos funciona bien con Mesos y servicios como postgres? (Estoy pensando en la posibilidad de que Mesos / marathon pueda reubicar el servicio si falla)
3- Por favor, dime si mi enfoque es incorrecto en términos de filosofía (DFS para servidores de datos y algún tipo de cambio para servidores como postgres en la parte superior de Mesos)
Pregunta copiada en gran parte del almacenamiento persistente para Apache Mesos , solicitada por zerkms en Programmers Stack Exchange .