2011-03-16 12 views
6

Tenemos varias instancias de EC2 detrás de un equilibrador de carga. Cada servidor tiene varias aplicaciones ASP.NET desplegadas en él. Estoy buscando una manera fácil, en tiempo real y automatizada para implementar el nuevo código compilado en todas las instancias simultáneamente.Cómo sincronizar el código cumplido para varias instancias de EC2

He visto soluciones que usan repositorios de control de fuente como SVN o Git, pero esto no parece un uso apropiado de la tecnología para nosotros ya que estamos implementando código compilado para las instancias EC2, no el código fuente.

También configuré Dropbox para realizar la sincronización. De alguna manera funciona, pero tiene sus peculiaridades. Por ejemplo, necesita construir su estructura de directorio alrededor de la limitación de "una carpeta de sincronización raíz". ¿Alguna otra razón por la que definitivamente NO DEBEMOS usar Dropbox para esto?

Escribir una aplicación personalizada utilizando la API S3 es una opción, pero preferiríamos una solución de terceros que escribir más código.

Parece una situación común, pero todavía no he encontrado ninguna buena solución.

¿Alguna sugerencia?

Respuesta

3

Elastic Beanstalk parece ser la mejor ruta para ir ahora. Simplemente empuja su proyecto de despliegue web a un entorno elástico Beanstalk e implementa código en todas sus instancias.(Gestiona el escalado automático para usted). También se asegura de que las nuevas instancias lanzadas tendrán su último código y conserva versiones anteriores a las que puede retroceder fácilmente.

Si su sitio web asp.net necesita ser escalado automáticamente en AWS, Elastic Beanstalk es realmente la mejor solución de extremo a extremo.

+0

¿Qué sucede si prefiere trabajar en servidores EC2 simples? Configurar la escala automática en servidores EC2 no es increíblemente difícil de hacer. – digitaldavenyc

+0

@digitaldavenyc, es fácil de hacer, pero también lo es el frijol elástico. El autoescalado es un subconjunto de las características que se obtienen de forma gratuita con beanstalk elástico. también recibe notificaciones de eventos de escalado automático, así como de la parte de implementación del código. – jaminto

+0

AWS Code Deploy http://aws.amazon.com/codedeploy/ es solo la parte de implementación de beanstalk. La pregunta es ¿qué estás tratando de hacer? si ejecuta una aplicación web, no sé por qué no usarías beanstalk. si se ejecuta una aplicación de línea de comandos, entonces sí, beanstalk podría no hacerlo por usted, pero los niveles de trabajador en beanstalk pueden ayudar a http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing- env-tiers.html – jaminto

0

Git o mercurial harán un buen trabajo en eso, la subversión es mala en el manejo de blobs.

Y obtiene un control y garantía muy agradables, que el código se implementó en todas partes al observar las revisiones.

0

Parece obvio, sistema de archivos compartido? ¿O expulsar con scp o rsync?

1

Dado que se trata de aplicaciones ASP.Net e IIS, ¿por qué no utilizar la implementación web? Está HECHO para esto.

http://www.iis.net/download/webdeploy

Web Deploy le permite sincronizar de manera eficiente sitios, aplicaciones o servidores a través de la granja de servidores IIS 7.0 mediante la detección de diferencias entre la fuente y el contenido de destino y transferir sólo aquellos cambios que requieren sincronización. La herramienta simplifica el proceso de sincronización al determinar automáticamente la configuración, el contenido y los certificados que se sincronizarán para un sitio específico. Además del comportamiento predeterminado, aún tiene la opción de especificar proveedores adicionales para la sincronización, incluidas las bases de datos, los objetos COM, los ensamblados de GAC y las configuraciones de registro.

+3

El problema aquí es que la implementación web necesita conocer las IP de sus servidores para poder implementarlas. Con las instancias de escalabilidad automática, esto no es tan fácil: no conoce las IP públicas de las instancias que se iniciaron automáticamente. parece que necesita obtener esta información de alguna manera con AWS API – jaminto

1

Puede usar Git, Mercurial o SVN para insertar el código compilado en los servidores o hacer que los servidores obtengan el código. El control de fuente no es solo para el código fuente; puede usarse para archivos de cualquier tipo.

Además, una forma de evitar el problema de Dropbox es usar varias cuentas DropBox si ese es el problema. Pero Dropbox es una solución bastante fácil porque nunca necesitas escribir ningún código. Mientras Dropbox esté funcionando, funcionará.

1

Es posible que desee probar AppHarbor. Nos ocupamos de gestionar los servidores de aplicaciones ASP.NET, los cargadores de carga y toda la demás infraestructura necesaria, dejándote así para que desarrolles tu aplicación. También ofrecemos una manera conveniente de enviar nuevas versiones de su aplicación usando su elección de Git, Mercurial, Subversion y TFS.

Cuestiones relacionadas