Desafortunadamente, este enfoque híbrido de Auto Scaling no parece estar disponible de fábrica.
Sin embargo, es posible que pueda evitar esta limitación de la siguiente manera (no probado, solo un diseño de sistema que he estado haciendo malabares durante un tiempo):
Posible solución
Como se describe en Uso de Auto Scaling para iniciar instancias spot , la oferta de precio spot es un parámetro de la configuración de lanzamiento en uso. Como señaló, no hay una configuración de lanzamiento híbrida disponible, sino que debe ser a pedido o puntual, lo que significa que el caso de uso requiere dos configuraciones de lanzamiento diferentes.
Esto no parece ayudar de inmediato, porque puede adjuntar solo una configuración de inicio a un grupo de Auto Scaling a la vez , con las siguientes restricciones (parcialmente desactualizadas) (consulte Configuración de inicio ):
Cuando adjunte una configuración de inicio nueva o actualizada a su grupo de Auto Scaling, cualquier nueva instancia se iniciará utilizando los nuevos parámetros de configuración. Las instancias existentes no se ven afectadas . Cuando Auto Scaling necesita reducir, primero termina las instancias que tienen una configuración de inicio más antigua . [énfasis mío]
Sin embargo, las partes enfatizadas son clave, y la primera cubre el requisito de mantener las instancias bajo demanda ejecutándose después de cambiar de la configuración de lanzamiento inicial bajo demanda respectiva a la configuración de lanzamiento spot adicional, y la segunda ya no es necesariamente el caso debido a las Políticas de terminación de Auto Scaling recientemente introducidas (para variar, no ha habido la fanfarria habitual a través de una publicación de blog de AWS adjunta), documentada en la Política de terminación de instancias para su grupo de Auto Scaling :
Antes de que Auto Scaling seleccione una instancia para finalizar, primero identifica la zona de disponibilidad que tiene más instancias que las otras zonas de disponibilidad utilizadas por el grupo. Si todas las zonas de disponibilidad tienen el mismo número de instancias, identifica una zona de disponibilidad aleatoria. Dentro de la zona de disponibilidad identificada, Auto Scaling utiliza la política de terminación para seleccionar la instancia para la terminación . [énfasis mío]
Como se describe en Cómo funciona su política de finalización , ahora puede especificar NewestInstance , si desea que finalice la última instancia iniciada , que sería una de las instancias puntuales lanzadas más recientemente:
Auto Scaling usa el tiempo de inicio de la instancia para identificar la última instancia que se lanzó.
Obviamente, puede haber un poco más de esto, por ejemplo , puede especificar cualquiera de las políticas como una política independiente, o puede enumerar varias políticas en una lista ordenada , pero este enfoque debería garantizar la carga de todas las instancias que se tienen en cuenta en el medidas y disparadores de autoescalado ; Sin embargo, queda una advertencia:
Consideración
Si el equilibrador de carga finaliza una de las instancias bajo demanda por cualquier otro motivo (por ejemplo, porque se ha vuelto poco saludable en sí mismo), no se reemplazará automáticamente por una instancia bajo demanda. Por lo tanto, deberá supervisar y dar cuenta de este evento por separado, por ejemplo, activando temporalmente la configuración de inicio bajo demanda nuevamente.
¡Buena suerte!