Pilar de excelencia operativa del enfoque Well-Architected de Amazon ElastiCache - Amazon ElastiCache

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.

Pilar de excelencia operativa del enfoque Well-Architected de Amazon ElastiCache

El pilar de la excelencia operativa se centra en el funcionamiento y la supervisión de los sistemas para ofrecer valor empresarial, y en la mejora continua de los procesos y los procedimientos. Los temas clave incluyen la automatización de los cambios, la respuesta a los eventos y la definición de estándares para administrar las operaciones diarias.

OE 1: ¿Cómo entiende y responde a las alertas y eventos activados por su clúster de ElastiCache?

Introducción a nivel de pregunta: Si utiliza clústeres de ElastiCache, puede recibir notificaciones y alertas de forma opcional cuando se produzcan determinados eventos. De forma predeterminada, ElastiCache registra los eventos relacionados con sus recursos, como la conmutación por error, el reemplazo de nodos, la operación de escalado y el mantenimiento programado, entre otros. Cada evento incluye la fecha y la hora, el nombre y el tipo de origen y una descripción.

Ventaja a nivel de pregunta: La capacidad de comprender y gestionar los motivos subyacentes de los eventos que activan las alertas generadas por su clúster le permite operar de manera más eficaz y responder a los eventos de manera adecuada.

  • [Obligatorio] Revise los eventos generados por ElastiCache en la consola de ElastiCache (después de seleccionar su región) o mediante el comando describe-events de la Interfaz de línea de comandos de Amazon (AWS CLI) y la API de ElastiCache. Configure ElastiCache para que envíe notificaciones de los eventos de clúster importantes mediante Amazon Simple Notification Service (Amazon SNS). El uso de Amazon SNS con sus clústeres le permite realizar acciones mediante programación en los eventos de ElastiCache.

    • Hay dos grandes categorías de eventos: eventos actuales y programados. La lista de eventos actuales incluye: creación y eliminación de recursos, operaciones de escalado, conmutación por error, reinicio de nodos, creación de instantáneas, modificación de los parámetros del clúster, renovación del certificado de CA, eventos de error (error de aprovisionamiento del clúster [VPC o ENI], errores de escalado [ENI] y errores de instantáneas). La lista de eventos programados incluye: reemplazo de nodos programado durante el período de mantenimiento y reemplazo de nodos reprogramado.

    • Si bien es posible que no necesite reaccionar de inmediato ante algunos de estos eventos, es fundamental analizar primero todos los eventos de error:

      • ElastiCache:AddCacheNodeFailed

      • ElastiCache:CacheClusterProvisioningFailed

      • ElastiCache:CacheClusterScalingFailed

      • ElastiCache:CacheNodesRebooted

      • ElastiCache:SnapshotFailed (Solo Redis)

    • [Recursos]:

  • [Lo mejor] Para automatizar las respuestas a los eventos, utilice las capacidades de los productos y servicios de AWS, como las funciones de Lambda y SNS. Siga las prácticas recomendadas y haga cambios pequeños, frecuentes y reversibles, como código para que sus operaciones evolucionen a lo largo del tiempo. Utilice las métricas de Amazon CloudWatch para supervisar los clústeres.

    [Recursos]: Monitor Amazon ElastiCache for Redis (cluster mode disabled) read replica endpoints using AWS Lambda, Amazon Route 53, and Amazon SNS para un caso de uso que emplea Lambda y SNS.

OE 2: ¿Cuándo y cómo se escalan los clústeres de ElastiCache existentes?

Introducción a nivel de pregunta: El dimensionamiento correcto del clúster de ElastiCache es un acto de equilibrio que debe evaluarse cada vez que se produzcan cambios en los tipos de carga de trabajo subyacentes. El objetivo es operar con el entorno del tamaño adecuado para la carga de trabajo.

Ventaja a nivel de pregunta: La sobreutilización de los recursos puede provocar una latencia elevada y una disminución general del rendimiento. Por otro lado, la infrautilización puede provocar un aprovisionamiento excesivo de recursos con una optimización de costos deficiente. El dimensionamiento correcto de los entornos, puede lograr un equilibrio entre la eficiencia del rendimiento y la optimización de costos. Para corregir la utilización excesiva o insuficiente de los recursos, ElastiCache puede escalarse en dos dimensiones. Puede escalar verticalmente aumentando o disminuyendo la capacidad de los nodos. Y puede escalar horizontalmente añadiendo y eliminando nodos.

  • [Obligatorio] Resuelva la sobreutilización de la CPU y la red en los nodos principales: descargue y redirija las operaciones de lectura a los nodos de réplica. Utilice nodos de réplica para las operaciones de lectura a fin de reducir la utilización del nodo principal. Para configurar esto en la biblioteca cliente de Redis, conéctese al punto de conexión del lector de ElastiCache para el modo de clúster deshabilitado o utilice el comando READONLY de Redis para el modo de clúster habilitado.

    [Recursos]:

  • [Obligatorio] Supervise la utilización de los recursos cruciales del clúster, como la CPU, la memoria y la red. Es necesario realizar un seguimiento del uso de estos recursos específicos del clúster para tomar una decisión de escalado y determinar el tipo de operación de escalado. Si el modo de clúster de ElastiCache para Redis está deshabilitado, los nodos principales y de réplica pueden escalar verticalmente. Los nodos de réplica también pueden escalar horizontalmente de 0 a 5 nodos. Si el modo de clúster está habilitado, se aplica esto mismo a cada partición del clúster. Además, puede aumentar o reducir el número de particiones.

    [Recursos]:

  • [Lo mejor] Supervisar el rendimiento a lo largo del tiempo puede ayudar a detectar cambios en la carga de trabajo que pasarían desapercibidos si se hiciera en un momento determinado. Para detectar tendencias a más largo plazo, utilice las métricas de CloudWatch para analizar intervalos de tiempo más largos. Los conocimientos obtenidos al observar períodos prolongados de métricas de CloudWatch deberían servir de base para pronosticar el uso de los recursos del clúster. Los datos y las métricas de CloudWatch están disponibles durante un máximo de 455 días.

    [Recursos]:

  • [Lo mejor] Si sus recursos de ElastiCache se crean con CloudFormation, se recomienda realizar los cambios mediante plantillas de CloudFormation para preservar la coherencia operativa y evitar cambios de configuración no administrados y desviaciones de pila.

    [Recursos]:

  • [Lo mejor] Automatice sus operaciones de escalado mediante los datos operativos del clúster y defina umbrales en CloudWatch para configurar las alarmas. Utilice CloudWatch Events y Simple Notification Service (SNS) para activar funciones de Lambda y ejecutar una API de ElastiCache para escalar los clústeres automáticamente. Un ejemplo sería añadir una partición al clúster cuando la métrica EngineCPUUtilization alcance el 80 % durante un período de tiempo prolongado. Otra opción sería utilizar DatabaseMemoryUsedPercentages como umbral basado en la memoria.

    [Recursos]:

OE 3: ¿Cómo se administran los recursos del clúster de ElastiCache y se mantiene actualizado?

Introducción a nivel de pregunta: Al operar a escala, es fundamental que pueda localizar e identificar todos sus recursos de ElastiCache. A la hora de implementar nuevas características de la aplicación, debe crear una simetría entre las versiones del clúster en todos los tipos de entornos de ElastiCache: desarrollo, pruebas y producción. Los atributos de los recursos permiten separar los entornos para diferentes objetivos operativos, por ejemplo, cuando se implementan nuevas características y habilitan nuevos mecanismos de seguridad.

Ventaja a nivel de pregunta: La separación de los entornos de desarrollo, pruebas y producción es la mejor práctica operativa. También se recomienda aplicar los parches de software más recientes a los clústeres y nodos de todos los entornos mediante procesos bien conocidos y documentados. Al aprovechar las características nativas de ElastiCache, su equipo de ingeniería puede centrarse en cumplir los objetivos empresariales y no en el mantenimiento de ElastiCache.

  • [Lo mejor] Ejecute el motor con la versión más reciente disponible y aplique las actualizaciones de autoservicio tan pronto como estén disponibles. ElastiCache actualiza automáticamente su infraestructura subyacente durante el período de mantenimiento especificado del clúster. Sin embargo, los nodos que se ejecutan en sus clústeres se actualizan mediante actualizaciones de autoservicio. Estas actualizaciones pueden ser de dos tipos: parches de seguridad o actualizaciones de software menores. Asegúrese de entender la diferencia entre los tipos de parches y cuándo se aplican.

    [Recursos]:

  • [Lo mejor] Organice y administre sus recursos de ElastiCache mediante etiquetas. Utilice las etiquetas en los grupos de replicación y no en los nodos individuales. Puede configurar las etiquetas de modo que se muestren cuando consulte los recursos y puede utilizarlas para realizar búsquedas y aplicar filtros. Debe utilizar los grupos de recursos para crear y mantener fácilmente colecciones de recursos que compartan conjuntos comunes de etiquetas.

    [Recursos]:

OE 4: ¿Cómo se administran las conexiones de los clientes a sus clústeres de ElastiCache?

Introducción a nivel de pregunta: Al operar a escala, debe comprender cómo se conectan sus clientes con el clúster de ElastiCache para administras los aspectos operativos de la aplicación (como los tiempos de respuesta).

Ventaja a nivel de pregunta: Al elegir el mecanismo de conexión más adecuado, se garantiza que la aplicación no se desconecte debido a errores de conectividad, como los tiempos de espera.

  • [Obligatorio] Separe las operaciones de lectura de las de escritura y conéctese a los nodos de réplica para ejecutar las operaciones de lectura. Sin embargo, tenga en cuenta que al separar las operaciones de escrituras de las lecturas, perderá la capacidad de leer una clave inmediatamente después de escribirla debido a la naturaleza asincrónica de la replicación de Redis. Se puede utilizar el comando WAIT para mejorar la seguridad de los datos en el mundo real y obligar a las réplicas a confirmar las escrituras antes de responder a los clientes, con un costo de rendimiento general. El uso de nodos de réplica para las operaciones de lectura se puede configurar en la biblioteca cliente de ElastiCache para Redis mediante el punto de conexión del lector de ElastiCache para el modo de clúster deshabilitado. Para el modo de clúster habilitado, utilice el comando READONLY de ElastiCache para Redis. En muchas de las bibliotecas de cliente de ElastiCache para Redis, READONLY de ElastiCache para Redis se implementa de forma predeterminada o mediante la configuración.

    [Recursos]:

  • [Obligatorio] Utilice la agrupación de conexiones. El establecimiento de una conexión TCP tiene un costo en términos de tiempo de CPU tanto para el cliente como para el servidor, y la agrupación permite reutilizar la conexión TCP.

    Para reducir la sobrecarga de conexiones, debe utilizar la agrupación de conexiones. Con un conjunto de conexiones, la aplicación puede reutilizar y liberar conexiones “a voluntad”, sin el costo de establecer la conexión. Para implementar la agrupación de conexiones, utilice la biblioteca cliente de ElastiCache para Redis (si es compatible) con un marco disponible para su entorno de aplicaciones, o créelo desde cero.

  • [Lo mejor] Asegúrese de que el tiempo de espera del socket del cliente esté establecido en, al menos, un segundo (en lugar del típico valor predeterminado de “ninguno” en numerosos clientes).

    • Si se establece un valor de tiempo de espera demasiado bajo, es posible que se produzcan tiempos de espera cuando la carga del servidor es alta. Si se establece demasiado alto, la aplicación puede tardar mucho en detectar problemas de conexión.

    • Controle el volumen de nuevas conexiones a través de la implementación de la agrupación de conexiones en su aplicación cliente. Esto reduce la latencia y el uso de CPU necesarios para abrir y cerrar las conexiones y realizar un protocolo de enlace de TLS si TLS está habilitado en el clúster.

    [Recursos]: Configure Amazon ElastiCache for Redis for higher availability

  • [Bueno] El uso de la canalización (cuando los casos de uso lo permitan) puede aumentar significativamente el rendimiento.

    • La canalización reduce el tiempo de ida y vuelta (RTT) entre los clientes de la aplicación y el clúster, y es posible procesar nuevas solicitudes incluso si el cliente aún no ha leído las respuestas anteriores.

    • Con la canalización, puede enviar varios comandos al servidor sin esperar a recibir respuestas o confirmaciones. La desventaja de la canalización es que, cuando finalmente se obtienen todas las respuestas de forma masiva, es posible que se haya producido un error que no se detectará hasta el final.

    • Implemente métodos para reintentar las solicitudes cuando se devuelva un error que omita la solicitud incorrecta.

    [Recursos]: Pipelining

OE 5: ¿Cómo se implementan los componentes de ElastiCache para una carga de trabajo?

Introducción a nivel de pregunta: Los entornos de ElastiCache se pueden implementar manualmente a través de la consola de AWS o mediante programación mediante API, CLI, kits de herramientas, etc. Las prácticas recomendadas de excelencia operativa sugieren automatizar las implementaciones mediante código siempre que sea posible. Además, los clústeres de ElastiCache pueden aislarse por carga de trabajo o combinarse para optimizar los costos.

Ventaja a nivel de pregunta: La elección del mecanismo de implementación más adecuado para sus entornos de ElastiCache puede mejorar la excelencia operativa con el tiempo. Se recomienda realizar operaciones como código siempre que sea posible para minimizar los errores humanos y aumentar la repetibilidad, la flexibilidad y el tiempo de respuesta a los eventos.

Al comprender los requisitos de aislamiento de la carga de trabajo, puede optar por tener entornos de ElastiCache dedicados por carga de trabajo o combinar varias cargas de trabajo en clústeres individuales o combinaciones de los mismos. Comprender las soluciones de compromiso puede ayudar a lograr un equilibrio entre la excelencia operativa y la optimización de costos.

  • [Obligatorio] Comprenda las opciones de implementación disponibles para ElastiCache y automatice estos procedimientos siempre que sea posible. Las posibles vías de automatización incluyen CloudFormation, AWS CLI/SDK y API.

    [Recursos]:

  • [Obligatorio] Para todas las cargas de trabajo, determine el nivel de aislamiento del clúster necesario.

    • [Lo mejor]: Alto aislamiento: asignación 1:1 de la carga de trabajo al clúster. Permite un control más preciso sobre el acceso, el tamaño, el escalado y la administración de los recursos de ElastiCache por carga de trabajo.

    • [Mejor] Aislamiento medio: M:1 aislado por propósito, pero quizás compartido entre varias cargas de trabajo (por ejemplo, un clúster dedicado al almacenamiento en caché de las cargas de trabajo y otro dedicado a la mensajería).

    • [Bueno]: Bajo aislamiento: M:1 multiusos, totalmente compartido. Recomendado para cargas de trabajo en las que es aceptable el acceso compartido.

OE 6: ¿Cómo se planifican y mitigan los errores?

Introducción a nivel de pregunta: La excelencia operativa incluye anticipar los errores mediante la realización de ejercicios “ante mortem” periódicos para identificar las posibles fuentes de errores y poder eliminarlas o mitigarlas. ElastiCache ofrece una API de conmutación por error que permite simular eventos de error en los nodos con fines de prueba.

Ventaja a nivel de pregunta: Al probar los escenarios de error con antelación, puede averiguar cómo afectan a su carga de trabajo. Esto permite probar de forma segura los procedimientos de respuesta y su eficacia. Además su equipo se familiarizará con su ejecución.

[Obligatorio] Realice pruebas de conmutación por error periódicas en las cuentas de desarrollo/pruebas. TestFailover

OE 7: ¿Cómo se solucionan los problemas de los eventos del motor de Redis?

Introducción a nivel de pregunta: La excelencia operativa requiere la capacidad de investigar tanto la información a nivel de servicio como a nivel de motor para analizar la condición y el estado de sus clústeres. Amazon ElastiCache para Redis puede emitir los registros del motor de Redis tanto a Amazon CloudWatch como a Amazon Kinesis Data Firehose.

Ventaja a nivel de pregunta: Al habilitar los registros del motor Redis en los clústeres de Amazon ElastiCache para Redis se proporciona información sobre los eventos que afectan al estado y al rendimiento de los clústeres. Los registros del motor de Redis proporcionan datos directamente del motor de Redis que no están disponibles a través del mecanismo de eventos de ElastiCache. Mediante una observación detenida de los eventos de ElastiCache (consulte OE-1 más arriba) y de los registros del motor de Redis, es posible determinar el orden de los eventos a la hora de solucionar problemas tanto desde la perspectiva del servicio de ElastiCache como desde la perspectiva del motor de Redis.

  • [Obligatorio] Asegúrese de que la función de registro del motor de Redis esté habilitada; está disponible en ElastiCache para Redis 6.2 y versiones posteriores. Esto se puede hacer durante la creación del clúster o modificándolo después de la creación.

    • Determine si los Registros de Amazon CloudWatch o Amazon Kinesis Data Firehose son el destino adecuado para los registros del motor de Redis.

    • Seleccione un registro de destino adecuado en CloudWatch o Kinesis Data Firehose para conservar los registros. Si tiene varios clústeres, considere la posibilidad de utilizar un registro de destino diferente para cada clúster, ya que esto ayudará a aislar los datos a la hora de solucionar problemas.

    [Recursos]:

  • [Lo mejor] Si utiliza Registros de Amazon CloudWatch, considere la posibilidad de utilizar la Información de registros de Amazon CloudWatch para consultar el registro del motor de Redis y obtener información importante.

    Por ejemplo, cree una consulta en el grupo de registros de CloudWatch que contenga los registros del motor de Redis y devuelva los eventos con un nivel de registro de “ADVERTENCIA”, como:

    fields @timestamp, LogLevel, Message | sort @timestamp desc | filter LogLevel = "WARNING"

    [Recursos]:Análisis de los datos de registros con Amazon CloudWatch Logs Insights