2008-12-30 11 views
7

¿Hay algún buen sistema de distribución distribuido independiente del idioma para Linux que sea seguro y gratuito?sistema de marca distribuida segura gratuita para Linux

Antecedentes:

corro experimentos científicos (los de la informática) que a veces tienen grandes árboles de dependencias, de vez en cuando en el orden de miles o decenas de miles de nodos del árbol. Este árbol de dependencias está sobre los archivos de datos, ejecutables de procesamiento de datos y archivos de resultados.

He experimentado con varias técnicas en los últimos años, incluyendo:

  1. Rodando mi propio rastreador de dependencia utilizando una base de datos y ejecutar un script en cada máquina trabajador. Esto puede ser un poco engorroso, especialmente cuando intenta trabajar con lenguajes que no usan scripts.
  2. Poniendo todos los comandos de procesamiento en un solo archivo MAKE, con pseudo-objetivos que pueden ser "construidos manualmente" en diferentes máquinas de trabajadores. Esto no requiere herramientas especiales, pero puede ser una molestia dividir manualmente el trabajo en trozos pseudo-objetivo de tamaño uniforme e invocar correctamente "hacer" en cada cuadro de trabajador.
  3. distmake: distribuir automáticamente la ejecución de comandos desde un único archivo MAKE ...

básicamente estoy buscando algo como distmake, pero más seguro. Por lo que puedo decir, distmake básicamente deja una puerta trasera abierta en cada nodo trabajador.

También sería bueno si un reemplazo fuera más robusto que distmake. Si sale de la llamada principal de distmake, puede cerrar los servidores de puerta trasera, pero no mata correctamente los procesos de ejecución en los nodos de trabajador.


Aclaraciones:

estoy procesando los datos con el makefile, no compilación y enlazado con gcc. Según lo que leí en la documentación, distcc es una herramienta especializada para distribuir gcc. Voy a ejecutar mis propios archivos ejecutables en archivos de datos muy grandes alojados en un sistema de archivos compartido, no gcc en los archivos fuente, por lo que distcc no es útil.

Los nodos de trabajador son máquinas visibles externamente, por lo que quiero que cualquier demonio de trabajador sea al menos tan seguro como ssh. Lo mejor que puedo decir sin leer la fuente, distmake worker daemons abre un puerto y aceptará comandos de cualquiera que se conecte a él. Ejecutarán los comandos como el usuario que inició el daemon.

Respuesta

1

Hay también distcc, que afirma ser capaz de operar a través de SSH (aunque menos que distmake de alguna manera es muy extraño, debe ser capaz de restringir el acceso a localhost y construir túneles SSH para ejecutar la construcción), y icecream.

Actualización: Debido a que el objetivo no es una compilación distribuida, pero un cálculo distribuido que sólo pasa a ser el uso de make como una rutina de carga, que tiene más sentido usar una herramienta que está diseñada para la computación distribuida como BOINC. Los comentarios a continuación indican condor como la plataforma elegida.

+0

Voy a mirar en los túneles ssh. Parece que distcc y icecream son solo para compilación y enlaces. La página de inicio de icecream advierte que no debe usarse en entornos inseguros. –

+0

En ese caso, ¿por qué no estás escribiendo un motor BOINC? –

+1

Ah, grid computing ... ¿por qué no pensé en eso? Creo que el cóndor puede hacer lo que yo quiero. ¿Le importaría agregar soluciones de computación grid a su respuesta (o crear una nueva respuesta) por el bien de los lectores en el futuro? –

0

Si es diligente con las dependencias (es decirmake -jxx funciona bien localmente), distcc es probablemente lo que quieres. Es muy fácil de usar y funciona felizmente con varias cachés CC populares. Una vez más, las dependencias adecuadas son la clave, especialmente cuando se utiliza un caché para ayudar a acelerar el proceso de reconstrucción.

Si usa GCC para generar dependencias más allá del alcance de las dependencias de módulos en el archivo MAKE, probablemente le guste distcc. Lo he estado usando en una granja de construcción pequeña con gran éxito ... pero mi configuración/árbol no es tan elaborado como el que describes.

+0

Estoy procesando archivos de datos, no archivos fuente, así que no creo que distcc pueda ayudar. Aunque tengo dependencias apropiadas (make -jxx funciona muy bien a nivel local para mí). –

0

Puede hacer esto con AT&T nmake combinado con el programa coshell. No sé cómo evaluar la seguridad, pero el grupo de Glenn Fowler está lleno de grandes ingenieros que han hecho muchas cosas realmente buenas. Confiaría en ellos con mi código fuente :-) Su herramienta más conocida podría ser graphviz.

+0

Gracias por las ideas. coshell es "tan seguro como rsh", lo que significa que, al igual que distmake, es bastante fácil suplantar. De lo contrario, parece una herramienta mejor que distmake. –

+0

'coshell' afirma que puede usar' ssh' y 'rsh'. Considero que 'rsh' es muy inseguro. No sé lo que piensas de 'ssh'. –

+0

Considero que ssh es seguro, pero ... parece que comhell usa ssh solo para generar el daemon de coshell. El daemon parece abrir su propio puerto y comunicarse a través de eso, y no a través de ssh. Por lo tanto, abre de manera segura un puerto inseguro, lo que significa que es inseguro. –

3

Las dependencias son difíciles de gestionar, y no conozco ningún sistema perfecto que haga lo que quiera sin una gran cantidad de trabajo.

Lo más parecido que he utilizado es la siguiente configuración: - una cola de Condor para gestionar las máquinas en el clúster - Cóndor Dagman meta-planificador para enviar los trabajos que son interdependientes. DAGMAN es un acrónimo de Directed Acyclic Graph MANager, en el cual se usa un gráfico acíclico dirigido para representar las dependencias entre sus trabajos.

Hemos hecho esto para un protocolo científico iterativo en nuestro laboratorio con mucho éxito y funcionó muy bien, aunque fue una experiencia de aprendizaje para un postdoc con mucho talento para ejecutar la implementación inicial. Requiere que configure y ejecute un clúster de Condor que no sea trivial, pero supongo que tiene Condor o algo similar para administrar todas sus máquinas. Puede ser que Sun GridEngine tenga algo similar que yo no sepa.

1

Aunque probablemente sea complicado integrarse de forma transparente con 'make', el paralelo GNU parece ofrecer una opción conveniente para distribuir comandos entre los servidores.

Cuestiones relacionadas