Los sistemas de gestión de configuración (CM) más establecidos, como Puppet y Chef, utilizan un enfoque basado en extracción: los clientes sondean periódicamente un maestro centralizado para obtener actualizaciones. Algunos de ellos también ofrecen un enfoque sin maestría (por lo tanto, basado en push), pero afirman que 'no es para producción' (Saltstack) o 'menos escalable' (Puppet). El único sistema que conozco que se basa en la inserción desde el principio es el finalista Ansible.
¿Cuál es la ventaja específica de escalabilidad de un sistema basado en extracción? ¿Por qué supuestamente es más fácil agregar más maestros de extracción que agentes de inserción?
Por ejemplo, agiletesting.blogspot.nl escribe:
en un sistema 'pull', los clientes contactan al servidor independientemente uno del otro, por lo que el sistema en su conjunto es más escalable que un sistema 'push'
Por otro lado, Rackspace demuestra que pueden manejar sistemas de 15K con un modelo basado en push.
infastructures.org escribe:
Juramos por una metodología de extracción para mantener las infraestructuras, utilizando una herramienta como SUP, CVSup, un servidor rsync o cfengine. En lugar de enviar los cambios a los clientes, cada máquina de cliente individual debe ser responsable de sondear el servidor de oro en el arranque, y periódicamente después, para mantener su propio nivel de revoluciones. Antes de adoptar este punto de vista, desarrollamos extensos scripts basados en inserción basados en ssh, rsh, rcp y rdist. El problema que encontramos con los comandos r (o ssh) fue el siguiente: cuando ejecuta un script basado en comandos r para enviar un cambio a sus máquinas de destino, es probable que si tiene más de 30 hosts de destino, uno de ellos estar abajo en cualquier momento dado. Mantener la lista de máquinas encargadas se convierte en una pesadilla. En el curso de escribir código para corregir esto, terminará con un código envoltorio elaborado para tratar: tiempos de espera de anfitriones muertos; iniciar sesión y volver a intentar hosts muertos; bifurcar y ejecutar trabajos paralelos para intentar atacar a muchos hosts en un período de tiempo razonable; y finalmente detectar y prevenir el caso de usar todos los sockets TCP disponibles en la máquina fuente con todas las sesiones rsh salientes. Entonces todavía tiene el problema de incluir lo que acaba de hacer en las imágenes de instalación para todos los nuevos hosts que se instalarán en el futuro, así como repetirlo para cualquier host que muera y deba reconstruirse mañana. Después del problema que tuvimos para implementar la replicación basada en comandos r, descubrimos que simplemente no valía la pena. No planeamos administrar una infraestructura con comandos r nuevamente, o con cualquier otro mecanismo de empuje para el caso. No escalan tan bien como los métodos basados en extracción. bifurcar y ejecutar trabajos paralelos para intentar atacar a muchos hosts en un período de tiempo razonable; y finalmente detectar y prevenir el caso de usar todos los sockets TCP disponibles en la máquina fuente con todas las sesiones rsh salientes. Entonces todavía tiene el problema de incluir lo que acaba de hacer en las imágenes de instalación para todos los nuevos hosts que se instalarán en el futuro, así como repetirlo para cualquier host que muera y deba reconstruirse mañana. Después del problema que tuvimos para implementar la replicación basada en comandos r, descubrimos que simplemente no valía la pena. No planeamos administrar una infraestructura con comandos r nuevamente, o con cualquier otro mecanismo de empuje para el caso. No escalan tan bien como los métodos basados en extracción. bifurcar y ejecutar trabajos paralelos para intentar atacar a muchos hosts en un período de tiempo razonable; y finalmente detectar y prevenir el caso de usar todos los sockets TCP disponibles en la máquina fuente con todas las sesiones rsh salientes. Entonces todavía tiene el problema de incluir lo que acaba de hacer en las imágenes de instalación para todos los nuevos hosts que se instalarán en el futuro, así como repetirlo para cualquier host que muera y deba reconstruirse mañana. Después del problema que tuvimos para implementar la replicación basada en comandos r, descubrimos que simplemente no valía la pena. No planeamos administrar una infraestructura con comandos r nuevamente, o con cualquier otro mecanismo de empuje para el caso. No escalan tan bien como los métodos basados en extracción. y finalmente detectar y prevenir el caso de usar todos los sockets TCP disponibles en la máquina fuente con todas las sesiones rsh salientes. Entonces todavía tiene el problema de incluir lo que acaba de hacer en las imágenes de instalación para todos los nuevos hosts que se instalarán en el futuro, así como repetirlo para cualquier host que muera y deba reconstruirse mañana. Después del problema que tuvimos para implementar la replicación basada en comandos r, descubrimos que simplemente no valía la pena. No planeamos administrar una infraestructura con comandos r nuevamente, o con cualquier otro mecanismo de empuje para el caso. No escalan tan bien como los métodos basados en extracción. y finalmente detectar y prevenir el caso de usar todos los sockets TCP disponibles en la máquina fuente con todas las sesiones rsh salientes. Entonces todavía tiene el problema de incluir lo que acaba de hacer en las imágenes de instalación para todos los nuevos hosts que se instalarán en el futuro, así como repetirlo para cualquier host que muera y deba reconstruirse mañana. Después del problema que tuvimos para implementar la replicación basada en comandos r, descubrimos que simplemente no valía la pena. No planeamos administrar una infraestructura con comandos r nuevamente, o con cualquier otro mecanismo de empuje para el caso. No escalan tan bien como los métodos basados en extracción. Entonces todavía tiene el problema de incluir lo que acaba de hacer en las imágenes de instalación para todos los nuevos hosts que se instalarán en el futuro, así como repetirlo para cualquier host que muera y deba reconstruirse mañana. Después del problema que tuvimos para implementar la replicación basada en comandos r, descubrimos que simplemente no valía la pena. No planeamos administrar una infraestructura con comandos r nuevamente, o con cualquier otro mecanismo de empuje para el caso. No escalan tan bien como los métodos basados en extracción. Entonces todavía tiene el problema de incluir lo que acaba de hacer en las imágenes de instalación para todos los nuevos hosts que se instalarán en el futuro, así como repetirlo para cualquier host que muera y deba reconstruirse mañana. Después del problema que tuvimos para implementar la replicación basada en comandos r, descubrimos que simplemente no valía la pena. No planeamos administrar una infraestructura con comandos r nuevamente, o con cualquier otro mecanismo de empuje para el caso. No escalan tan bien como los métodos basados en extracción. o con cualquier otro mecanismo de empuje para el caso. No escalan tan bien como los métodos basados en extracción. o con cualquier otro mecanismo de empuje para el caso. No escalan tan bien como los métodos basados en extracción.
¿No es un problema de implementación en lugar de uno arquitectónico? ¿Por qué es más difícil escribir un cliente push roscado que un servidor pull roscado?
ansible-pull
.