Cada instância ECS em uma VPC tem limite de 5.000 consultas DNS por segundo. Para mitigar a limitação de taxa, escale horizontalmente as instâncias ECS ou ative o serviço de cache nscd.
Cada instância do Elastic Compute Service (ECS) em uma Virtual Private Cloud (VPC) tem limite de 5.000 consultas DNS por segundo. Se o volume de consultas DNS de uma única instância ultrapassar esse limiar, ela ficará sujeita à limitação de taxa e não haverá garantia do SLA de disponibilidade. Para mitigar esse problema, considere as seguintes abordagens:
Escale horizontalmente as instâncias ECS para distribuir as solicitações de consulta DNS entre mais instâncias e reduzir o volume de consultas por instância.
-
Ative o serviço nscd (Name Service Cache Daemon) no host ECS para acelerar o cache.
NotaCom o serviço nscd ativado, as alterações nos registros DNS demoram mais para entrar em vigor.
O que é o nscd?
O nscd é um serviço de cache do sistema que armazena informações de serviços de nomes, como passwd, group, hosts, services e netgroup. Ele reduz o número de consultas a serviços de nomes e o tráfego de rede, resultando em respostas mais rápidas. Este guia foca na configuração de hosts para diminuir as consultas DNS das instâncias ECS.
Comandos comuns do Linux para nscd
|
Comando |
Descrição |
|
yum install -y nscd |
Instale o nscd. |
|
systemctl start nscd |
Inicia o nscd. |
|
systemctl stop nscd |
Interrompe o nscd. |
|
systemctl restart nscd |
Reinicia o nscd. |
|
systemctl status nscd |
Consulta o status operacional do nscd. |
|
nscd -g |
Visualize a configuração efetiva de todos os parâmetros e estatísticas de taxa de acerto do cache. |
|
nscd -i |
Invalida o cache especificado. É possível especifique passwd, group, hosts, services, netgroup, etc. Por exemplo: nscd -i hosts. |
|
cat /etc/nscd.conf |
Consulta os detalhes da configuração atual do nscd. |
|
vi /etc/nscd.conf |
Modifique os parâmetros de configuração do nscd. |
Instalação do nscd
Geralmente, o nscd vem instalado por padrão no Linux. Para verifique se ele está presente na sua instância ECS, execute o comando abaixo:
systemctl status nscd # Check the running status of nscd.
Se a saída for semelhante à imagem a seguir, o nscd não está instalado.

Execute o comando abaixo para instale o nscd:
yum install -y nscd

Execute novamente o comando de status. O nscd está instalado, mas não em execução.

Ativação do serviço nscd
Execute o comando a seguir para iniciar o nscd:
systemctl start nscd
Execute o comando de status novamente para verifique se o nscd está em execução.

Para instale o nscd em sistemas operacionais CentOS ou Red Hat, execute o comando: yum install -y nscd.
Para instale o nscd em sistemas operacionais Debian ou Ubuntu, execute o comando: apt-get install -y nscd.
Parâmetros de configuração do nscd
O arquivo de configuração padrão do nscd é /etc/nscd.conf. Execute o comando abaixo para visualize a configuração:
cat /etc/nscd.conf

Descrição dos principais parâmetros de configuração
|
Parâmetro de configuração |
Descrição |
|
debug-level |
|
|
reload-count |
Defina quantas vezes uma entrada armazenada com sucesso no cache é atualizada ativamente antes de expirar. |
|
paranoia |
Modo paranoia. Quando ativado, o nscd reinicia periodicamente. |
|
restart-interval |
Intervalo entre reinícios automáticos quando o modo paranoia está ativado. |
|
enable-cache |
Ative o serviço de cache. |
|
positive-time-to-live |
TTL para caches de respostas bem-sucedidas. |
|
negative-time-to-live |
TTL para caches de respostas com falha. Defina como 0 para evitar que pesquisas malsucedidas afetem solicitações subsequentes. |
|
check-files |
Verifique periodicamente se arquivos relacionados ao cache (/etc/passwd, /etc/group, /etc/hosts) foram modificados. Caso detecte alterações, invalida o cache correspondente. |
|
persistent |
Mantém o conteúdo do cache durante reinícios do nscd. Recomendado quando o modo paranoia está ativado. |
|
shared |
Compartilha o mapeamento de memória do banco de dados do nscd com os clientes. O padrão é yes. Para consultar a taxa de acerto do cache com |
|
max-db-size |
Tamanho máximo do banco de dados de cache do nscd, em bytes. |
A configuração positive-time-to-live não tem efeito prático no cache DNS. O TTL real é determinado pelo valor retornado na resposta DNS.
Teste da eficácia do cache nscd
Teste com o nscd desativado
-
Execute o comando a seguir na instância ECS para capturar pacotes UDP na porta 53:
tcpdump -i any udp and port 53 -
Em seguida, com o nscd desativado, execute o comando abaixo na instância ECS três vezes consecutivas.
ping -c 1 -n www.taobao.com # Send one ping command to the domain name www.taobao.com.
-
Verifique os resultados da captura de pacotes. Três solicitações de consulta DNS aparecem na porta 53, cada uma retornando um registro de resolução. Isso confirma que as respostas DNS não estão em cache e que a instância ECS envia uma nova consulta pela porta 53 sempre que necessário.

Teste com o nscd ativado
Execute o comando start para ative o serviço nscd e confirme a ativação com o comando de consulta de status.
-
Com o nscd ativado, execute o comando a seguir na instância ECS seis vezes consecutivas. Simultaneamente, capture pacotes na porta 53 da instância ECS.
ping -c 1 -n www.taobao.com
-
Analise os resultados da captura de pacotes. Apenas uma solicitação de consulta DNS aparece na porta 53, confirmando que as consultas subsequentes usaram o cache do nscd em vez de passar pela porta 53.
ImportanteDurante a captura de pacotes, você pode notar que o tcpdump ainda captura pacotes de consulta DNS após a conclusão do comando ping. Esse comportamento decorre do mecanismo de atualização ativa do nscd e é esperado. Para desativar a atualização ativa, defina o parâmetro reload-count como 0.
-
Também é possível verifique as estatísticas de acerto do cache. Execute o comando ping várias vezes e, em seguida, execute o comando abaixo para visualize as estatísticas:
nscd -g # Output the configuration of all active parameters and cache hit ratio statistics.