CodeDeploy estado de la instancia - AWS CodeDeploy

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

CodeDeploy estado de la instancia

CodeDeploy supervisa el estado de las instancias de un grupo de implementación. Produce un error en las implementaciones si el número de instancias en buen estado es inferior al número de instancias en buen estado que se han especificado para el grupo de implementaciones durante una implementación. Por ejemplo, si el 85% de las instancias deben estar en buen estado durante una implementación y el grupo de implementación contiene 10 instancias, toda la implementación dará un error aunque solo una única instancia produzca un error. Esto se debe a que cuando se desconecta una instancia para que se pueda instalar la última revisión de la aplicación, el número de instancias en buen estado ya está al 90%. Una instancia fallida y otra fuera de línea significaría que solo el 80% de las instancias están en buen estado y disponibles. CodeDeployfallará en la implementación general.

Es importante recordar que debe cumplirse lo siguiente para que la implementación global tenga éxito:

  • CodeDeploy puede realizar la implementación en cada instancia de la implementación.

  • La implementación debe tener éxito en una instancia como mínimo. Esto significa que, aunque el valor mínimo de hosts en buen estado sea 0, la implementación debe realizarse correctamente en una instancia como mínimo (es decir, al menos una instancia debe estar en buen estado) para que la implementación global se realice correctamente.

Estado

CodeDeploy asigna dos valores de estado a cada instancia: el estado de revisión y el estado de la instancia.

Estado de revisión

El estado de revisión se basa en la revisión de aplicación instalada actualmente en la instancia. Tiene los siguientes valores de estado:

  • Current: la revisión instalada en la instancia coincide con la revisión de la última implementación correcta del grupo de implementación.

  • Old: la revisión instalada en la instancia coincide con una versión anterior de la aplicación.

  • Unknown: la revisión de la aplicación no se ha instalado correctamente en la instancia.

Estado de la instancia

El estado de la instancia se basa en si las implementaciones en una instancia se han realizado correctamente. Tiene los siguientes valores:

  • Healthy: la última implementación en la instancia se realizó correctamente.

  • Unhealthy: el intento de implementar una revisión en la instancia dio un error o aún no se ha implementado una revisión en la instancia.

CodeDeploy utiliza el estado de las revisiones y el estado de las instancias para programar el despliegue en las instancias del grupo de implementación en el siguiente orden:

  1. Estado de la instancia Unhealthy.

  2. Estado de revisión Unknown.

  3. Estado de revisión Old.

  4. Estado de revisión Current.

Si toda la implementación se realiza correctamente, la revisión se actualiza y los valores de estado del grupo de implementaciones se actualizan para reflejar la última implementación.

  • Todas las instancias actuales que tenían una implementación satisfactoria siguen vigentes. De lo contrario, pasan a tener el estado Unknown.

  • Todas las instancias Old o Unknown que tenían una implementación satisfactoria siguen vigentes. De lo contrario, pasan a tener el estado Old o Unknown.

  • Todas las instancias Healthy que tenían una implementación satisfactoria siguen en buen estado. De lo contrario, pasan a tener el estado Unhealthy.

  • Todas las instancias Unhealthy que tenían una implementación satisfactoria pasan a tener el estado Healthy. De lo contrario, permanecen con el estado Unhealthy.

Si se produce un error en toda la implementación o si se detiene la implementación:

  • Cada instancia en la que se CodeDeploy intentó implementar la revisión de la aplicación tiene el estado de la instancia establecido en buen estado o en mal estado, dependiendo de si el intento de implementación de esa instancia se realizó correctamente o no.

  • Cada instancia en la que CodeDeploy no se intentó implementar la revisión de la aplicación conserva su valor de estado actual.

  • La revisión del grupo de implementación sigue siendo la misma.

Acerca del número mínimo de instancias en buen estado

El número mínimo de instancias en buen estado necesarias se define como parte de la configuración de una implementación.

importante

Durante una implementación blue/green, la configuración de la implementación y el valor mínimo de hosts en buen estado se aplican a las instancias del entorno de sustitución y no a las del entorno original. Sin embargo, cuando se cancela el registro de las instancias del entorno original en el balanceador de carga, toda la implementación se marca como errónea aunque solo haya una instancia original cuyo registro no se haya podido cancelar correctamente.

CodeDeploy proporciona tres configuraciones de implementación predeterminadas que suelen utilizar valores mínimos de host en buen estado:

Nombre de configuración de la implementación predeterminada Valor mínimo de hosts en buen estado predefinido
CodeDeployDefault. OneAtA Time 1
CodeDeployDefault. HalfAtA Time 50%
CodeDeployDefault.AllAtOnce 0

Encontrará más información acerca de las configuraciones de implementación predeterminadas en Trabajar con configuraciones de implementación en CodeDeploy.

Puede crear configuraciones de implementación personalizadas CodeDeploy para definir sus propios valores de host mínimos en buen estado. Puede definir estos valores como números enteros o como porcentajes mediante las siguientes operaciones:

CodeDeploy permite especificar un número mínimo de instancias en buen estado para la implementación con dos finalidades principales:

  • Para determinar si la implementación global se realizó correctamente o dio un error. La implementación se realiza correctamente si la revisión de la aplicación se implementó satisfactoriamente en al menos el número mínimo de instancias en buen estado.

  • Para determinar el número de instancias que deben estar en buen estado durante una implementación para que la implementación se pueda realizar correctamente.

Puede especificar el número mínimo de instancias en buen estado para su grupo de implementaciones como un número de instancias o como un porcentaje del total de instancias. Si especificas un porcentaje, al inicio de la implementación, CodeDeploy convierte el porcentaje en el número equivalente de instancias y redondea las instancias fraccionarias.

CodeDeploy realiza un seguimiento del estado de las instancias del grupo de implementación durante el proceso de implementación y utiliza la cantidad mínima especificada de instancias en buen estado para la implementación para determinar si se debe continuar con la implementación. El principio básico es que una implementación no debe provocar nunca que el número de instancias en buen estado sea inferior al número mínimo especificado. La única excepción a esta regla es cuando un grupo de implementaciones tiene inicialmente menos instancias en buen estado que el número mínimo especificado. En ese caso, el proceso de implementación no reduce el número de instancias en buen estado.

nota

CodeDeploy intentará implementarse en todas las instancias de un grupo de implementación, incluso en las que se encuentran actualmente en estado de parada. En el cálculo de hosts mínimos en buen estado, una instancia detenida tiene el mismo efecto que una instancia errónea. Para resolver los errores de implementación debido a demasiadas instancias detenidas, reinicie las instancias o cambie sus etiquetas para excluirlas del grupo de implementaciones.

CodeDeploy inicia el proceso de despliegue intentando implementar la revisión de la aplicación en las instancias en mal estado del grupo de despliegue. Por cada implementación correcta, CodeDeploy cambia el estado de la instancia a correcto y la agrega a las instancias en buen estado del grupo de implementación. CodeDeploy a continuación, compara el número actual de instancias en buen estado con el número mínimo especificado de instancias en buen estado.

  • Si la cantidad de instancias en buen estado es inferior o igual a la cantidad mínima especificada de instancias en buen estado, CodeDeploy cancela la implementación para garantizar que la cantidad de instancias en buen estado no disminuya con más implementaciones.

  • Si el número de instancias en buen estado es superior en al menos una al número mínimo especificado de instancias en buen estado, CodeDeploy implementa la revisión de la aplicación en el conjunto original de instancias en buen estado.

Si se produce un error en la implementación de una instancia en buen estado, CodeDeploy cambia el estado de esa instancia a en mal estado. A medida que avanza la implementación, CodeDeploy actualiza el número actual de instancias en buen estado y lo compara con el número mínimo especificado de instancias en buen estado. Si el número de instancias en buen estado cae hasta el número mínimo especificado en algún momento del proceso de implementación, CodeDeploy se detiene la implementación. De este modo, se impide la posibilidad de que la próxima implementación produzca un error, haciendo que el número de instancias en buen estado sea inferior al número mínimo especificado.

nota

Asegúrese de que el número mínimo de instancias en buen estado que especifique sea inferior al número total de instancias del grupo de implementaciones. Si especifica un valor de porcentaje, recuerde que se redondeará. De lo contrario, cuando comience la implementación, la cantidad de instancias en buen estado ya será inferior o igual a la cantidad mínima especificada de instancias en buen estado y, de forma inmediata, CodeDeploy se producirá un error en toda la implementación.

CodeDeploy también utiliza el número mínimo especificado de instancias en buen estado y el número real de instancias en buen estado para determinar si se debe implementar la revisión de la aplicación en varias instancias y cómo hacerlo. De forma predeterminada, CodeDeploy implementa la revisión de la aplicación en tantas instancias como sea posible sin riesgo de que el número de instancias en buen estado caiga por debajo del número mínimo especificado de instancias en buen estado.

Para determinar el número de instancias que se deben implementar a la vez, CodeDeploy utilice el siguiente cálculo:

[total-hosts] - [minimum-healthy-hosts] = [number-of-hosts-to-deploy-to-at-once]

Por ejemplo:

  • Si su grupo de implementación tiene 10 instancias y ha establecido el número mínimo de instancias en buen estado en 9, se CodeDeploy implementa una instancia a la vez.

  • Si su grupo de implementación tiene 10 instancias y ha establecido el número mínimo de instancias en buen estado en 3, se CodeDeploy despliega en 7 instancias al mismo tiempo en el primer lote y, después, en las 3 restantes en el segundo lote.

  • Si el grupo de implementación tiene 10 instancias y estableces el número mínimo de instancias en buen estado en 0, se CodeDeploy despliega en 10 instancias al mismo tiempo.

Ejemplos

En los siguientes ejemplos se presupone que existe un grupo de implementaciones con 10 instancias.

Mínimo de instancias en buen estado: 95%

CodeDeploy redondea el número mínimo de instancias en buen estado hasta 10 instancias, lo que equivale al número de instancias en buen estado. Toda la implementación produce inmediatamente un error sin que se implemente la revisión en ninguna de las instancias.

Mínimo de instancias en buen estado: 9

CodeDeploy implementa la revisión en una instancia a la vez. Si la implementación en alguna de las instancias falla, se interrumpe CodeDeploy inmediatamente la implementación general, ya que el número de instancias en buen estado es igual al número mínimo de instancias en buen estado. La excepción a esta regla es que si se produce un error en la última instancia, la implementación se realiza correctamente.

CodeDeploy continúa la implementación, instancia por vez, hasta que alguna implementación falle o se complete la implementación general. Si las 10 implementaciones se realizan correctamente, el grupo de implementación tendrá ahora 10 instancias en buen estado.

Mínimo de instancias en buen estado: 8

CodeDeploy implementa la revisión en dos instancias a la vez. Si dos de estas implementaciones fallan, la implementación general fracasa CodeDeploy inmediatamente. La excepción a esta regla es que si la última instancia es la segunda instancia que da error, la implementación se realiza correctamente.

Mínimo de instancias en buen estado: 0

CodeDeploy implementa la revisión en todo el grupo de implementaciones a la vez. La implementación debe realizarse correctamente al menos en una instancia para que la implementación global se realice correctamente. Si hay 0 instancias en buen estado, la implementación no se realiza correctamente. Esto se debe al requisito de que, para considerar que una implementación global se ha realizado correctamente, al menos una instancia debe estar en buen estado cuando finalice la implementación global, incluso si el valor mínimo de instancias en buen estado es 0.

Acerca del número mínimo de instancias en buen estado por zona de disponibilidad

nota

En esta sección se utilizan los términos instancia y host indistintamente para hacer referencia a las instancias de Amazon EC2.

Si va a realizar la implementación en instancias de varias zonas de disponibilidad, de forma opcional, puede habilitar la zonal configuration función, que CodeDeploy permite la implementación en una zona de disponibilidad a la vez.

Cuando esta función esté habilitada, se CodeDeploy asegurará de que la cantidad de hosts en buen estado se mantenga por encima de los valores de «hosts en buen estado mínimos por zona» y «hosts en buen estado». Si el número de hosts en buen estado cae por debajo de cualquiera de estos valores, CodeDeploy no se podrá realizar la implementación en todas las zonas de disponibilidad.

Para calcular la cantidad de hosts en los que realizar la implementación a la vez, CodeDeploy utiliza los valores de «número mínimo de hosts en buen estado por zona» y «número mínimo de hosts en buen estado». CodeDeploy utilizará el menor de los cálculos [A] y[B], donde y dónde están: [A] [B]

[A] = [total-hosts] - [min-healthy-hosts] = [number-of-hosts-to-deploy-to-at-once]
[B] = [total-hosts-per-AZ] - [min-healthy-hosts-per-AZ] = [number-of-hosts-to-deploy-to-at-once-per-AZ]

Tras determinar el número de hosts en los que realizar el despliegue a la vez, se CodeDeploy despliega en los hosts en lotes de ese número, una zona de disponibilidad a la vez, con una pausa opcional (o «hora de cocción») entre las zonas.

Ejemplo

Si su implementación está configurada de la siguiente manera:

  • [total-hosts] es 200

  • [minimum-healthy-hosts] es 160

  • [total-hosts-per-AZ] es 100

  • [minimum-healthy-hosts-per-AZ] es 50

Entonces...

  • [A] = 200 - 160 = 40

  • [B] = 100 - 50 = 50

  • 40 es menor que 50

Por lo tanto, CodeDeploy se implementará en los hosts a la vez. 40

En este caso, la implementación se desglosa de la siguiente manera:

  1. CodeDeploy se despliega en la primera zona de disponibilidad:

    1. CodeDeploy se despliega en los primeros 40 hosts.

    2. CodeDeploy se despliega en los siguientes 40 hosts.

    3. CodeDeploy se despliega en los hosts restantes20.

      La implementación en la primera zona de disponibilidad ya está completa.

  2. (Opcional) CodeDeploy espera mientras se «hornea» el despliegue en la primera zona, según se define en la configuración de duración del monitor o Añadir una duración del monitor para la primera zona. Si no hay problemas, CodeDeploy continúa.

  3. CodeDeploy se despliega en la segunda zona de disponibilidad:

    1. CodeDeploy se despliega en los primeros 40 hosts.

    2. CodeDeploy se despliega en los siguientes 40 hosts.

    3. CodeDeploy se despliega en los hosts restantes20.

      La implementación en la segunda y final zona de disponibilidad ya está completa.

Para obtener información sobre la característica de configuración de zonas y cómo especificar el número mínimo de instancias en buen estado por zona de disponibilidad, consulte zonal configuration.