Cómo crear un cluster de ElastiCache con Redis paso a paso
Cuando hablamos de bases de datos en memoria en AWS tenemos el servicio de ElastiCache, dentro del cual podemos usar 2 motores: Memcached y Redis, cada uno de ellos tiene casos de uso completamente diferentes. En este post vamos a aprender a crear un cluster de Redis desde 0.
Paso a paso para crear el cluster de Redis
Paso 1 — Crear un Parameter group personalizado
Dentro de la consola de ElastiCache vamos a seleccionar Parameter Groups, seleccionaremos crear uno nuevo y debemos especificar la versión del Redis, en este caso tenemos redis5.0.
Siempre recomiendo tanto para bases de datos en RDS y para ElastiCache crear parameter groups personalizados, se debe tener en cuenta que los parameter group por defecto no se pueden modificar.
Una vez creado podemos ver todas las opciones que nos deja personalizar dentro del mismo:
Para que el parameter group pueda ser usado con la opción de cluster mode enabled, se debe editar el valor cluster-enabled para que quede con yes.
Paso 1.1 — Ajustar propiedades en el parameter group
Dentro del parameter group podemos personalizar nuestro Redis, a continuación describo algunos de los parámetros más importantes que debemos configurar para nuestro cluster:
- databases: Es la cantidad de bases de datos que podemos tener por endpoint de Redis. Por defecto son 16 las cuales se identifican de 0 a 15. Y tiene como valores permitidos de 1–1200000.
- reserved-memory-percent: el porcentaje de memoria reservada por nodo, por defecto viene en 25% pero puede ser modificada de 0–100. Este valor después de la versión 2.8.22.
- min-replicas-max-lag: Es el número de segundos en los cuales debe el nodo primario recibir un PING de la replica de lectura. Si el PING es superior al valor establecido la replica ya no se considera disponible. Por defecto viene en 10 segundos.
- min-replicas-to-write: Es el número mínimo de replicas que deben estar disponibles para que el nodo primario reciba solicitudes de escritura. Por defecto viene en 0.
Paso 2 — Establecer los valores para la configuración de Redis
- Cluster Mode Enabled: Permite la especificación de replicas por cada shard. El siguiente diagrama ilustra la arquitectura de cl cluster mode enabled.
- Cluster Mode Disabled: Permite la especificación del cluster con 1 solo shard y solo se puede determinar la cantidad de replicas (0 a 5).
- Parameter group: Se debe especificar el parameter group creado en el Paso 1.
- Node Type: Especificar el tipo de nodo de acuerdo a los requerimientos de nuestro cluster, siempre se recomiendan nodos tipo R (Optimizados en RAM) para ambientes productivos.
- Multi-AZ: Habilita el failover automático a una de las réplicas en otra zona de disponibilidad.
Paso 3 — Configuraciones avanzadas
Se puede determinar que la cantidad de slots no estén distribuidas equitativamente entre todos los nodos, para esto debemos hacer la distribución manual o dejar la que tenemos por defecto.
Paso 4 — Security
Para ambientes productivos es recomendado lo siguiente:
- Security Groups: Cerrar las reglas y solo permitir los orígenes específicos por el 6379.
- Habilitar el cifrado en reposo con una llave KMS creada por nosotros.
- Habilitar el cifrado en tránsito.
Paso 5 — Import Data
Este paso es donde el cluster puede alimentarse de un archivo rdb. Si van a hacer esto, tengan presente algunas recomendaciones:
- Bucket policy: Los permisos de la política del bucket para permitir que el archivo dee S3 pueda ser leído si el cluster va a ser creado de cloudformation.
- ACL del objeto: Tengan en cuenta las ACL a nivel del objeto rdb permitiendo los valores especificados en la documentación.
Después de todas estas configuración se crea el cluster.