Administración de los clústeres de DAX - Amazon DynamoDB

Administración de los clústeres de DAX

En esta sección se abordan algunas de las tareas de administración comunes de los clústeres de Amazon DynamoDB Accelerator (DAX).

Permisos de IAM para administrar un clúster de DAX

Al administrar clústeres de DAX mediante la AWS Management Console en la AWS Command Line Interface (AWS CLI), recomendamos encarecidamente reducir el alcance de las acciones que los usuarios pueden llevar a cabo. De esta forma, contribuirá a mitigar los riesgos y a respetar el principio de seguridad de otorgar privilegios mínimos.

La siguiente explicación se centra en el control del acceso a las API de administración de DAX. Para obtener más información, consulte Amazon DynamoDB Accelerator en la Referencia de la API de Amazon DynamoDB.

nota

Para obtener información más detallada sobre la administración de permisos de AWS Identity and Access Management (IAM), consulte:

Para las API de administración de DAX, no puede limitar las acciones de la API a un recurso concreto. El componente Resource debe establecerse en "*". Esto difiere de las operaciones de la API del plano de datos de DAX, tales como GetItem, Query y Scan. Las operaciones del plano de datos se exponen a través del cliente de DAX y su alcance se puede limitar a recursos concretos.

A modo de ejemplo, tomemos el siguiente documento de política de IAM.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dax:*" ], "Effect": "Allow", "Resource": [ "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" ] } ] }

Supongamos que el objetivo de esta política es permitir las llamadas a la API de administración de DAX para el clúster DAXCluster01 exclusivamente.

Ahora, supongamos que un usuario emite el siguiente comando de la AWS CLI.

aws dax describe-clusters

Este comando producirá un error con la excepción Not Authorized, porque el alcance de la llamada a la API DescribeClusters subyacente no puede limitarse a un clúster específico. Aunque sintácticamente la política es válida, el comando no se ejecuta, porque el componente Resource debe establecerse en "*". Sin embargo, si el usuario ejecuta un programa que envía llamadas del plano de datos de DAX (por ejemplo, GetItem o Query) a DAXCluster01, estas llamadas se llevarán a cabo correctamente. Esto se debe a que el alcance de las API de plano de datos de DAX se puede limitar a recursos concretos (en este caso, a DAXCluster01).

Si desea escribir una única política de IAM que abarque todos los supuestos (tanto las API de administración de DAX como las API de plano de datos de DAX), le sugerimos que incluya dos instrucciones diferenciadas en el documento de políticas. Una de las instrucciones deberá abordar los API de plano de datos de DAX y la otra, los API de administración de DAX.

En el ejemplo de política siguiente se muestra este enfoque. Observe que el alcance de la instrucción DAXDataAPIs se limita al recurso DAXCluster01, pero que el recurso correspondiente a DAXManagementAPIs ha de ser "*". Las acciones que se muestran en cada instrucción son meramente ilustrativas. Puede personalizarlas como considere oportuno para su aplicación.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXDataAPIs", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan", "dax:PutItem", "dax:UpdateItem", "dax:DeleteItem", "dax:BatchWriteItem" ], "Effect": "Allow", "Resource": [ "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" ]}, { "Sid": "DAXManagementAPIs", "Action": [ "dax:CreateParameterGroup", "dax:CreateSubnetGroup", "dax:DecreaseReplicationFactor", "dax:DeleteCluster", "dax:DeleteParameterGroup", "dax:DeleteSubnetGroup", "dax:DescribeClusters", "dax:DescribeDefaultParameters", "dax:DescribeEvents", "dax:DescribeParameterGroups", "dax:DescribeParameters", "dax:DescribeSubnetGroups", "dax:IncreaseReplicationFactor", "dax:ListTags", "dax:RebootNode", "dax:TagResource", "dax:UntagResource", "dax:UpdateCluster", "dax:UpdateParameterGroup", "dax:UpdateSubnetGroup" ], "Effect": "Allow", "Resource": [ "*" ] } ] }

Escalado de un clúster de DAX

Existen dos opciones disponibles para escalar un clúster de DAX. La primera opción es el escalado horizontal, donde se agregan réplicas de lectura al clúster. La segunda opción es el escalado vertical, donde se seleccionan distintos tipos de nodos. Para obtener información sobre cómo elegir un tamaño de clúster y un tipo de nodo adecuados para la aplicación, consulte Guía de tamaño del clúster de DAX.

Escalado horizontal

Con el escalado horizontal, puede mejorar el rendimiento de las operaciones de lectura agregando más réplicas de lectura al clúster. Un único clúster de DAX admite hasta 10 réplicas de lectura, que puede agregar o eliminar mientras el clúster se está ejecutando.

Al agregar un nodo nuevo, debe sincronizar los datos de la caché de un nodo homólogo. Por lo tanto, el tiempo de adición varía en función del tamaño de la caché y de la carga de trabajo de la aplicación. Como práctica recomendada, le recomendamos que escale previamente su clúster para satisfacer los picos de tráfico previstos. Para obtener información sobre las directrices de dimensionamiento y las recomendaciones de seguimiento, consulte Guía de tamaño del clúster de DAX.

En los siguientes ejemplos de la AWS CLI se muestra cómo incrementar o reducir el número de nodos. El argumento --new-replication-factor especifica el número total de nodos del clúster. Uno de los nodos es el principal y los demás, las réplicas de lectura.

aws dax increase-replication-factor \ --cluster-name MyNewCluster \ --new-replication-factor 5
aws dax decrease-replication-factor \ --cluster-name MyNewCluster \ --new-replication-factor 3
nota

El estado del clúster cambia a modifying cuando se modifica el factor de replicación. El estado cambia a available cuando se complete la modificación.

Escalado vertical

Si tiene un gran conjunto de datos con los que trabajar, seguramente la aplicación se beneficiará si usa los tipos de nodos mayores. Los nodos mayores pueden permitir que el clúster almacene más datos en memoria, lo que reduce los errores de caché y mejorar el rendimiento de la aplicación en general. (Todos los nodos de un clúster de DAX deben ser del mismo tipo).

Si el clúster de DAX tiene una alta tasa de operaciones de escritura o errores de caché, la aplicación también podría beneficiarse de utilizar tipos de nodos mayores. Las operaciones de escritura y los errores de caché consumen recursos en el nodo principal del clúster. Por lo tanto, el uso de tipos de nodos mayores podría aumentar el rendimiento del nodo principal y, por lo tanto, permitir un mayor rendimiento para estos tipos de operaciones.

No puede modificar los tipos de los nodos en un clúster de DAX en ejecución. En lugar de ello, deberá crear un nuevo clúster con el tipo de nodo deseado. Para ver una lista de los tipos de nodos admitidos, consulte Nodos.

Para crear un nuevo clúster de DAX mediante la AWS Management Console, AWS CloudFormation, la AWS CLI o el SDK de AWS. (Para la AWS CLI, use el parámetro --node-type para especificar el tipo de nodo).

Personalización de las configuraciones de un clúster de DAX

Al crear un clúster de DAX, se utilizan las siguientes configuraciones predeterminados:

  • Expulsión automática de la caché habilitada, con un período de vida (TTL) de 5 minutos

  • Sin preferencias respecto a las zonas de disponibilidad

  • Sin preferencias respecto a los tiempos de mantenimiento

  • Notificaciones deshabilitadas

Para los nuevos clústeres, puede personalizar los ajustes en el momento de su creación. Para hacerlo en la AWS Management Console, desactive Use default settings (Usar la configuración predeterminada) para modificar los siguientes ajustes:

  • Network and Security (Red y seguridad): permite ejecutar nodos de clústeres de DAX individuales en distintas zonas de disponibilidad de la región de AWS actual. Si elige No Preference (Sin preferencias), los nodos se distribuirán automáticamente entre las zonas de disponibilidad.

  • Parameter Group (Grupo de párametros): conjunto de parámetros con nombre que se aplican a todos los nodos del clúster. Puede utilizar un grupo de parámetros para especificar el comportamiento de la caché con respecto al TTL. Puede cambiar el valor de cualquier parámetro dado dentro de un grupo de parámetros (excepto el grupo de parámetros predeterminado default.dax.1.0) en cualquier momento.

  • Maintenance Window (Ventana de mantenimiento): periodo semanal durante el cual se aplicarán los parches y las actualizaciones de software a los nodos del clúster. Puede elegir el día y la hora de comienzo, así como la duración del tiempo de mantenimiento. Si elige No Preference (Sin preferencias), el periodo de mantenimiento se selecciona al azar dentro de un bloque de 8 horas por región. Para obtener más información, consulte Periodo de mantenimiento.

nota

Parameter Group (Grupo de parámetros) y Maintenance Window (Ventana de mantenimiento) también se pueden cambiar en cualquier momento en un clúster en ejecución.

Cuando se produce un evento de mantenimiento, DAX puede notificarle mediante Amazon Simple Notification Service (Amazon SNS). Para configurar las notificaciones, elija una opción en el selector Topic for SNS notification (Tema para notificación de SNS). Puede crear un tema de Amazon SNS nuevo o elegir uno disponible.

Para obtener información acerca de cómo configurar y suscribirse a un tema de Amazon SNS, consulte Introducción a Amazon SNS en la Guía del desarrollador de Amazon Simple Notification Service.

Configuración de los ajustes de TTL

DAX mantiene dos cachés para datos que lee de DynamoDB:

  • Caché de elemento: para los elementos recuperados usando GetItem or BatchGetItem.

  • Caché de consultas: para los conjuntos de resultados recuperados mediante Query o Scan.

Para obtener más información, consulte Caché de elementos y Caché de consultas.

El TTL predeterminado de cada una de estas cachés es de 5 minutos. Si desea utilizar otras configuraciones de TTL, puede lanzar un clúster de DAX con un grupo de parámetros personalizados. Para hacer esto en la consola, elija DAX | Parameter groups (DAX | Grupos de parámetros) en el panel de navegación.

También puede llevar a cabo estas tareas utilizando la AWS CLI. En el siguiente ejemplo se muestra cómo lanzar un nuevo clúster de DAX con un grupo de parámetros personalizados. En este ejemplo, el TTL de la caché de elementos se establece en 10 minutos y el de la caché de consultas, en 3 minutos.

  1. Cree un nuevo grupo de parámetros.

    aws dax create-parameter-group \ --parameter-group-name custom-ttl
  2. Establezca el TTL de la caché de elementos en 10 minutos (600 000 milisegundos).

    aws dax update-parameter-group \ --parameter-group-name custom-ttl \ --parameter-name-values "ParameterName=record-ttl-millis,ParameterValue=600000"
  3. Establezca el TTL de la caché de consultas en 3 minutos (180 000 milisegundos).

    aws dax update-parameter-group \ --parameter-group-name custom-ttl \ --parameter-name-values "ParameterName=query-ttl-millis,ParameterValue=180000"
  4. Compruebe que los parámetros se han configurado correctamente.

    aws dax describe-parameters --parameter-group-name custom-ttl \ --query "Parameters[*].[ParameterName,Description,ParameterValue]"

A partir de ahora, puede lanzar un nuevo clúster de DAX con este grupo de parámetros.

aws dax create-cluster \ --cluster-name MyNewCluster \ --node-type dax.r3.large \ --replication-factor 3 \ --iam-role-arn arn:aws:iam::123456789012:role/DAXServiceRole \ --parameter-group custom-ttl
nota

No se puede modificar un grupo de parámetros que se encuentre en uso en una instancia de DAX en ejecución.

Compatibilidad con el etiquetado en DAX

Muchos servicios de AWS, incluido DynamoDB, admiten el etiquetado: la capacidad de etiquetar recursos con nombres definidos por el usuario. Puede asignar etiquetas a clústeres de DAX, lo que le permite identificar rápidamente todos los recursos de AWS que tienen la misma etiqueta o categorizar las facturas de AWS según las etiquetas que ha asignado.

Para obtener más información, consulte Cómo agregar etiquetas a los recursos en DynamoDB.

Mediante AWS Management Console

Para administrar las etiquetas de los clústeres de DAX
  1. Abra la consola de DynamoDB en https://console.aws.amazon.com/dynamodb/.

  2. En el panel de navegación, en DAX, elija Clusters (Clústeres).

  3. Elija el clúster con el que desee trabajar.

  4. Elija la pestaña Etiquetas. Aquí puede agregar, enumerar, editar o eliminar las etiquetas.

    Cuando la configuración sea la que desea, elija Apply Changes (Aplicar cambios).

Uso de la AWS CLI

Cuando se utiliza la AWS CLI para administrar las etiquetas de los clústeres de DAX, es preciso determinar previamente el nombre de recurso de Amazon (ARN) del clúster. En el siguiente ejemplo se muestra cómo determinar el ARN de un clúster denominado MyDAXCluster.

aws dax describe-clusters \ --cluster-name MyDAXCluster \ --query "Clusters[*].ClusterArn"

En el resultado, el ARN tendrá un aspecto similar a este: arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster

En el siguiente ejemplo se muestra cómo etiquetar el clúster.

aws dax tag-resource \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster \ --tags="Key=ClusterUsage,Value=prod"

Para enumerar todas las etiquetas de un clúster.

aws dax list-tags \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster

Para eliminar una etiqueta, hay que especificar su clave.

aws dax untag-resource \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster \ --tag-keys ClusterUsage

Integración de AWS CloudTrail

DAX se integra con AWS CloudTrail, lo que permite auditar las actividades de los clústeres de DAX. Puede utilizar registros de CloudTrail para ver todos los cambios realizados en el nivel de clúster. También puede los cambios en los componentes de los clústeres, como los nodos, los grupos de subredes y los grupos de parámetros. Para obtener más información, consulte Registrar las operaciones de DynamoDB mediante AWS CloudTrail.

Eliminación de un clúster de DAX

Si ya no usa un clúster de DAX, debe eliminarlo para que no se le cobre por los recursos no utilizados.

Puede eliminar un clúster de DAX mediante la consola o la AWS CLI. A continuación, se muestra un ejemplo.

aws dax delete-cluster --cluster-name mydaxcluster