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.
Estado de instancias de CodeDeploy
CodeDeploy monitoriza el estado de las instancias en 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%. Al haber una instancia con error y otra instancia desconectada, solo el 80% de las instancias se encuentran en buen estado y disponibles. CodeDeploy producirá un error en toda la implementación.
Es importante recordar que debe cumplirse lo siguiente para que la implementación global tenga éxito:
-
CodeDeploy puede implementarse 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.
Temas
Estado
CodeDeploy asigna dos valores de estado a cada instancia: estado de revisión y 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 revisión y el estado de la instancia para programar la implementación en las instancias del grupo de implementación en el orden que se indica a continuación:
-
Estado de la instancia Unhealthy.
-
Estado de revisión Unknown.
-
Estado de revisión Old.
-
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 CodeDeploy intentó implementar la revisión de la aplicación tiene su propio estado de instancia establecido en Healthy o Unhealthy, en función de si el intento de implementación para esa instancia se produjo correctamente o dio un error.
-
Todas las instancias en las que CodeDeploy no intentó implementar la revisión de la aplicación conservan su valor de estado de instancia 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 ofrece tres configuraciones de implementación predeterminadas que tienen valores mínimos de hosts en buen estado usados comúnmente:
| Nombre de configuración de la implementación predeterminada | Valor mínimo de hosts en buen estado predefinido |
|---|---|
| CodeDeployDefault.OneAtATime | 1 |
| CodeDeployDefault.HalfAtATime | 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 en CodeDeploy para definir sus propios valores mínimos de hosts en buen estado. Puede definir estos valores como números enteros o como porcentajes mediante las siguientes operaciones:
-
Como
minimum-healthy-hostscuando usa el comando create-deployment-config de la AWS CLI. -
Como
Valueen el tipo de datos MinimumHealthyHosts en la API de CodeDeploy. -
Como
MinimumHealthyHostscuando utiliza AWS::CodeDeploy::DeploymentConfig en una plantilla de CloudFormation.
CodeDeploy permite especificar un número mínimo de instancias en buen estado para la implementación con dos propósitos 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 especifica un porcentaje, al comienzo de la implementación, CodeDeploy convierte el porcentaje al número equivalente de instancias, redondeando todas las fracciones de instancias.
CodeDeploy realiza un seguimiento del estado de las instancias del grupo de implementación durante el proceso de implementación y utiliza el número mínimo de instancias en buen estado especificado en la implementación para determinar si 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á realizar la implementación en todas las instancias de un grupo de implementación, incluso en aquellas que tengan actualmente el estado Stopped. 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 comienza el proceso de implementación intentando implementar la revisión de la aplicación en las instancias en mal estado del grupo de implementación. Para cada implementación satisfactoria, CodeDeploy cambia el estado de la instancia a Healthy y la añade a las instancias en buen estado del grupo de implementación. A continuación, CodeDeploy compara el número actual de instancias en buen estado con el número mínimo especificado de instancias en buen estado.
-
Si el número de instancias en buen estado es menor o igual que el número mínimo especificado de instancias en buen estado, CodeDeploy cancela la implementación para garantizar que el número de instancias en buen estado no se reduzca con más implementaciones.
-
Si el número de instancias en buen estado es mayor que el número mínimo especificado de instancias en buen estado en al menos una, CodeDeploy implementa la revisión de la aplicación en el conjunto original de instancias en buen estado.
Si una implementación en una instancia en buen estado da un error, CodeDeploy cambia el estado de la instancia a Unhealthy. A medida que avanza la implementación, CodeDeploy actualiza el número actual de instancias en buen estado actual 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 por debajo del número mínimo especificado en algún momento del proceso de implementación, CodeDeploy 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, el número de instancias en buen estado ya será inferior o igual que el número mínimo especificado de instancias en buen estado y CodeDeploy marcará toda la implementación como errónea.
CodeDeploy usa también el número mínimo especificado de instancias en buen estado y el número real de instancias en buen estado para determinar si y cómo implementar la revisión de la aplicación en varias instancias. De forma predeterminada, CodeDeploy implementa la revisión de la aplicación en tantas instancias como puede sin que exista el riesgo de que el número de instancias en buen estado especificado 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 utiliza 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 establece el número mínimo de instancias en buen estado en 9, CodeDeploy realiza la implementación en una instancia cada vez.
-
Si su grupo de implementación tiene 10 instancias y establece el número mínimo de instancias en buen estado en 3, CodeDeploy realiza la implementación en 7 las instancias a la vez en el primer lote y, a continuación, en las 3 restantes en el segundo lote.
-
Si su grupo de implementación tiene 10 instancias y establece el número mínimo de instancias en buen estado en 0, CodeDeploy realiza la implementación en las 10 instancias a la vez.
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 mínimo a 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 cada vez. Si se produce un error de implementación en alguna instancia, CodeDeploy cancelará inmediatamente la implementación global, 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, una instancia cada vez, hasta que se produzca un error en alguna implementación o hasta que se complete toda la implementación. 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 dan un error, CodeDeploy produce inmediatamente un error en toda la implementación. 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 implementación 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, puede habilitar opcionalmente la característica zonal configuration, lo que permite que CodeDeploy se implemente en una zona de disponibilidad a la vez.
Cuando esta característica está habilitada, CodeDeploy se asegurará de que la cantidad de hosts en buen estado se mantenga por encima de los valores de “hosts mínimos en buen estado por zona” y “hosts mínimos en buen estado”. Si el número de hosts en buen estado se reduce por debajo de cualquiera de estos valores, CodeDeploy no podrá realizar la implementación en todas las zonas de disponibilidad.
Para calcular el número de hosts en los que realizar la implementación a la vez, CodeDeploy utiliza los valores de “hosts mínimos en buen estado por zona” y “hosts mínimos en buen estado”. CodeDeploy utilizará el menor de los cálculos [A] y [B], donde [A] y [B] son:
[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 la implementación a la vez, CodeDeploy realiza la implementación en los hosts en lotes de ese número, una zona de disponibilidad a la vez, con una pausa opcional (o “tiempo de incorporación”) entre las zonas.
Ejemplo
Si su implementación está configurada de la siguiente manera:
-
[total-hosts]is200 -
[minimum-healthy-hosts]is160 -
[total-hosts-per-AZ]is100 -
[minimum-healthy-hosts-per-AZ]is50
Entonces...
-
[A]=200 - 160 = 40 -
[B]=100 - 50 = 50 -
40es menor que50
Entonces, CodeDeploy realizará la implementación en 40 hosts a la vez.
En este caso, la implementación se desglosa de la siguiente manera:
-
CodeDeploy realiza la implementación en la primera zona de disponibilidad:
-
CodeDeploy realiza la implementación en los primeros
40hosts. -
CodeDeploy realiza la implementación en los siguientes
40hosts. -
CodeDeploy realiza la implementación en los
20hosts restantes.La implementación en la primera zona de disponibilidad ya está completa.
-
-
(Opcional) CodeDeploy espera mientras la implementación en la primera zona se “incorpora”, según se define en la configuración de Duración de monitor o Añadir una duración de monitor para la primera zona. Si no hay problemas, CodeDeploy continúa.
-
CodeDeploy realiza la implementación en la segunda zona de disponibilidad:
-
CodeDeploy realiza la implementación en los primeros
40hosts. -
CodeDeploy realiza la implementación en los siguientes
40hosts. -
CodeDeploy realiza la implementación en los
20hosts restantes.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.