Gerenciar clusters do DAX
Esta seção aborda algumas das tarefas comuns de gerenciamento de clusters do Amazon DynamoDB Accelerator (DAX).
Tópicos
Permissões do IAM para gerenciar um cluster do DAX
Quando você administra um cluster do DAX usando o AWS Management Console ou a AWS Command Line Interface (AWS CLI), é altamente recomendável restringir o escopo das ações que os usuários podem executar. Ao fazer isso, você pode ajudar a reduzir os riscos, enquanto segue o princípio do privilégio mínimo.
A seguinte discussão aborda o controle de acesso das APIs de gerenciamento do DAX. Para obter mais informações consulte Amazon DynamoDB Accelerator na Amazon DynamoDB API Reference (Referência da API do Amazon DynamoDB).
nota
Para obter informações mais detalhadas sobre o gerenciamento de permissões do AWS Identity and Access Management (IAM), consulte:
-
IAM e criação de clusters do DAX: Criar um cluster do DAX.
-
IAM e operações de plano de dados do DAX: Controle de acesso do DAX.
Para as APIs de gerenciamento do DAX, não é possível incluir um recurso específico no escopo das ações da API. O elemento Resource
deve ser definido como "*"
. Isso é diferente das operações da API do plano de dados do DAX, como GetItem
, Query
e Scan
. As operações de plano de dados são expostas por meio do cliente Java do DAX, e essas operações podem incluir recursos específicos no escopo.
Para ilustrar, considere o seguinte documento de política do IAM:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dax:*" ], "Effect": "Allow", "Resource": [ "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" ] } ] }
Suponha que a intenção dessa política seja permitir chamadas de API de gerenciamento do DAX para o cluster DAXCluster01
– e apenas para esse cluster.
Agora, suponha que um usuário emita o seguinte comando da AWS CLI.
aws dax describe-clusters
Esse comando falha com uma exceção de Não autorizado
, pois a chamada à API DescribeClusters
subjacente não pode ser colocada no escopo de um cluster específico. Embora a política seja sintaticamente válida, o comando falha porque o elemento Resource
deve ser definido como "*"
. No entanto, se o usuário executar um programa que envie chamadas do plano de dados do DAX (como GetItem
ou Query
) para o DAXCluster01
, essas chamadas serão bem-sucedidas. Isso ocorre porque as APIs do plano de dados do DAX podem incluir recursos específicos no escopo (nesse caso, DAXCluster01
).
Para escrever uma única política abrangente do IAM que inclua as APIs de gerenciamento do DAX e as APIs do plano de dados do DAX, sugerimos incluir duas instruções distintas no documento da política. Uma dessas instruções deve lidar com as APIs de plano de dados do DAX, enquanto a outra instrução lida com as APIs de gerenciamento do DAX.
A política de exemplo a seguir mostra essa abordagem. Observe como a declaração DAXDataAPIs
é colocada no escopo do recurso DAXCluster01
, mas o recurso para DAXManagementAPIs
deve ser "*"
. As ações mostradas em cada declaração são apenas para ilustração. É possível personalizá-las conforme necessário para seu aplicativo.
{ "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": [ "*" ] } ] }
Escalar um cluster do DAX
Há duas opções disponíveis para escalar um cluster do DAX. A primeira opção é a escalabilidade horizontal, na qual você adiciona réplicas de leitura ao cluster. A segunda opção é a escalabilidade vertical, na qual você seleciona diferentes tipos de nó. Para obter conselhos sobre como abordar a escolha de um tamanho de cluster apropriado e um tipo de nó para seu aplicativo, consulte Guia de dimensionamento de clusters do DAX.
Escalabilidade horizontal
Com a escalabilidade horizontal, você pode melhorar o throughput para operações de leitura adicionando mais réplicas de leitura ao cluster. Um único cluster do DAX aceita até 10 réplicas de leitura, e você pode adicionar ou remover réplicas enquanto o cluster está em execução.
Ao adicionar um novo nó, é necessário sincronizar os dados de cache de outro nó do mesmo nível. Portanto, o tempo de adição varia com base no tamanho do cache e na workload da aplicação. Recomendamos que você escale previamente o cluster para atender aos picos de tráfego esperados. Para obter informações sobre diretrizes de dimensionamento correto e recomendações de monitoramento, consulte Guia de dimensionamento de clusters do DAX.
Os exemplos de AWS CLI a seguir mostram como aumentar ou diminuir o número de nós. O argumento --new-replication-factor
especifica o número total de nós no cluster. Um dos nós é o nó primário, e os outros nós são réplicas de leitura.
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
O status do cluster muda para modifying
quando você modifica o fator de replicação. O status muda para available
quando a modificação é concluída.
Escala vertical
Se você tiver um grande conjunto de dados de trabalho, seu aplicativo poderá se beneficiar do uso de maiores tipos de nós. Os nós maiores podem permitir que o cluster armazene mais dados na memória, o que reduz os erros de cache e melhora o desempenho geral do aplicativo. (Todos os nós em um cluster do DAX devem ser do mesmo tipo.)
Se o cluster do DAX tiver uma alta taxa de operações de gravação ou falhas de cache, sua aplicação também poderá se beneficiar do uso de tipos maiores de nó. Operações de gravação e erros de cache consomem recursos no nó primário do cluster. Portanto, usar tipos maiores de nós pode aumentar o desempenho do nó primário e permitir um throughput mais alto para esses tipos de operações.
Não é possível modificar os tipos de nós em um cluster do DAX em execução. Em vez disso, você deve criar um novo cluster com o tipo de nó desejado. Para obter uma lista dos tipos de nó compatíveis, consulte Nodes.
Você pode criar um novo cluster do DAX usando via AWS Management Console, AWS CloudFormation, AWS CLI ou AWS SDK. (Para a AWS CLI, use o parâmetro --node-type
para especificar o tipo de nó.)
Personalizar as configurações do cluster do DAX
Quando você cria um cluster do DAX, as configurações padrão a seguir são usadas:
-
Remoção automática de cache habilitada com vida útil (TTL) de 5 minutos
-
Nenhuma preferência para zonas de disponibilidade
-
Nenhuma preferência para janelas de manutenção
-
Notificações desabilitadas
Para novos clusters, você pode personalizar as configurações durante a criação. Para fazer isso no AWS Management Console, desmarque Use default settings (Usar configurações padrão) para modificar os seguintes ajustes:
-
Network and Security (Rede e segurança): permite que você execute nós de cluster do DAX individuais em diferentes zonas de disponibilidade dentro da região da AWS atual. Se você escolher No Preference (Sem preferência), os nós serão distribuídos entre as zonas de disponibilidade automaticamente.
-
Parameter Group (Grupo de parâmetros): um conjunto nomeado de parâmetros que são aplicados a cada nó no cluster. Você pode usar um grupo de parâmetros para especificar o comportamento do TTL do cache. Você pode alterar o valor de qualquer parâmetro determinado em um grupo de parâmetros (exceto o grupo de parâmetros padrão
default.dax.1.0
) a qualquer momento. -
Maintenance Window (Janela de manutenção): um período semanal durante o qual atualizações e patches são aplicados aos nós do cluster. Você pode escolher o dia e a hora de início e a duração da janela de manutenção. Se você escolher No Preference (Sem preferência), a janela de manutenção será selecionada aleatoriamente em um bloco de tempo de 8 horas por região. Para ter mais informações, consulte Janela de manutenção.
nota
Parameter Group (Grupo de parâmetros) e Maintenance Window (Janela de manutenção) também podem ser modificados a qualquer momento em um cluster em execução.
Quando um evento de manutenção ocorre, o DAX pode notificar você usando o Amazon Simple Notification Service (Amazon SNS). Para configurar notificações, escolha uma opção no seletor Topic for SNS notification (Tópico de notificação do SNS). Você pode criar um novo tópico do Amazon SNS ou usar um tópico existente.
Para obter informações sobre como criar um tópico do SNS e assiná-lo, consulte Conceitos básicos do Amazon SNS no Guia do desenvolvedor do Amazon Simple Notification Service.
Configurar definições de TTL
O DAX mantém dois caches para dados que ele lê do DynamoDB:
-
Cache de itens: para itens recuperados via
GetItem
ouBatchGetItem
. -
Cache de consultas: para conjuntos de resultados recuperados via
Query
ouScan
.
Para ter mais informações, consulte Cache de itens e Cache de consultas.
O TTL padrão de cada um desses caches é 5 minutos. Se desejar usar configurações de TTL diferentes, você poderá iniciar um cluster do DAX usando um grupo de parâmetros personalizados. Para fazer isso no console, escolha DAX | Parameter groups (DAX | grupos de parâmetros) no painel de navegação.
Você também pode realizar essas tarefas usando a AWS CLI. O exemplo a seguir mostra como iniciar um novo cluster DAX usando um grupo de parâmetros personalizados. Neste exemplo, o TTL do cache de itens é definido como 10 minutos, e o TTL do cache de consultas é definido como 3 minutos.
-
Crie um novo grupo de parâmetros.
aws dax create-parameter-group \ --parameter-group-name custom-ttl
-
Defina o TTL do cache de itens para 10 minutos (600000 milissegundos).
aws dax update-parameter-group \ --parameter-group-name custom-ttl \ --parameter-name-values "ParameterName=record-ttl-millis,ParameterValue=600000"
-
Defina o TTL do cache de consultas para 3 minutos (180000 milissegundos).
aws dax update-parameter-group \ --parameter-group-name custom-ttl \ --parameter-name-values "ParameterName=query-ttl-millis,ParameterValue=180000"
-
Verifique se os parâmetros foram configurados corretamente.
aws dax describe-parameters --parameter-group-name custom-ttl \ --query "Parameters[*].[ParameterName,Description,ParameterValue]"
Agora você pode iniciar um novo cluster do DAX com 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
Não é possível modificar um grupo de parâmetros que está sendo usado por uma instância do DAX em execução.
Compatibilidade com marcação para o DAX
Muitos serviços da AWS, incluindo o DynamoDB, oferecem suporte à marcação com tags: a habilidade de rotular recursos com nomes definidos pelo usuário. Você pode atribuir tags a clusters do DAX, o que permite identificar rapidamente todos os seus recursos da AWS que têm a mesma tag ou categorizar os faturamentos da AWS pelas tags que você atribui.
Para ter mais informações, consulte Adicionar etiquetas e rótulos a recursos no DynamoDB.
Usar a AWS Management Console
Para gerenciar tags de cluster do DAX
Abra o console do DynamoDB em https://console.aws.amazon.com/dynamodb/
. -
No painel de navegação, em DAX, escolha Clusters.
-
Escolha o cluster com o qual você deseja trabalhar.
-
Escolha a guia Tags. Você pode adicionar, listar, editar ou excluir suas tags aqui.
Quando as configurações estiverem conforme você deseja, escolha Apply Changes (Aplicar alterações).
Uso do AWS CLI
Ao usar a AWS CLI para gerenciar tags de cluster do DAX, você deve primeiro determinar o nome do recurso da Amazon (ARN) do cluster. O exemplo a seguir mostra como determinar o ARN de um cluster chamado MyDAXCluster
.
aws dax describe-clusters \ --cluster-name MyDAXCluster \ --query "Clusters[*].ClusterArn"
Na saída, o ARN será semelhante a este: arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster
O exemplo a seguir mostra como atribuir tags ao cluster.
aws dax tag-resource \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster \ --tags="Key=ClusterUsage,Value=prod"
Para listar todas as tags de um cluster.
aws dax list-tags \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster
Para remover uma tag, especifique a chave dela.
aws dax untag-resource \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster \ --tag-keys ClusterUsage
Integração do AWS CloudTrail
O DAX é integrado ao AWS CloudTrail, o que permite auditar as atividades do cluster do DAX. É possível usar os logs do CloudTrail para visualizar todas as alterações que foram feitas no nível do cluster. Também é possível ver as alterações em componentes do cluster, como nós, grupos de sub-redes e grupos de parâmetros. Para ter mais informações, consulte Registrar em log as operações do DynamoDB usando o AWS CloudTrail.
Excluir um cluster do DAX
Se você não estiver mais usando um cluster do DAX, deverá excluí-lo para evitar ser cobrado por recursos não utilizados.
É possível excluir um cluster do DAX usando o console ou a AWS CLI. Veja um exemplo a seguir.
aws dax delete-cluster --cluster-name mydaxcluster