DevOps Mind
O mundo da tecnologia está repleto de ferramentas essenciais que muitas vezes passam despercebidas para a maioria dos usuários. Uma dessas ferramentas pouco conhecidas é o NTP (Network Time Protocol) e seu sucessor moderno, o Chrony.
Embora o tempo seja uma parte fundamental de nossa vida cotidiana, muitas pessoas não estão cientes da importância da sincronização precisa do tempo em servidores e redes. Neste texto, vamos explorar o que é NTP e o que é o Chrony, desvendando suas funcionalidades, diferenças e os contextos em que cada um se aplica e como configurar NTP Linux na prática.
Tópicos
O que é NTP?
O NTP é um protocolo estabelecido há décadas, mas poucos conhecem a sua existência. Sua função primordial é sincronizar os relógios dos computadores em uma rede, permitindo que todos os dispositivos estejam em acordo sobre o tempo atual. Isso pode parecer trivial à primeira vista, mas a sincronização precisa do tempo é crucial para uma ampla gama de aplicações, desde transações financeiras até a segurança de sistemas críticos.
Apesar da relevância do NTP, uma nova alternativa, o Chrony, tem ganhado destaque recentemente. Desenvolvido como uma resposta aos desafios encontrados em ambientes de rede modernos, o Chrony oferece uma abordagem mais flexível e adaptativa para a sincronização do tempo. Seu objetivo é lidar com variações de latência de rede e garantir que o relógio do servidor esteja sempre preciso.
É surpreendente que essas ferramentas, tão cruciais para a estabilidade e o desempenho de servidores e redes, sejam amplamente desconhecidas. Embora muitos usuários possam não ter contato direto com o NTP cliente ou o Chrony em suas atividades diárias, é importante reconhecer a relevância dessas ferramentas nos bastidores da tecnologia que usamos.
Este post vai fazer parte de uma série de postagens, que vão trazer uma solução de observabilidade muito interessante para quem utiliza Auto Scaling Group na AWS, envolvendo a confiabilidade sobre o horário dos servidores que fazem parte do Auto Scaling Group.
O que é o Chrony e a sua importância
O Chrony desempenha um papel crucial na manutenção da precisão do tempo em um servidor. A sincronização precisa do tempo é essencial para uma ampla gama de tarefas e processos que ocorrem em um ambiente de rede. Nesse sentido, o Chrony oferece uma série de benefícios que contribuem para a estabilidade e o desempenho geral de um servidor.
Em primeiro lugar, o Chrony é responsável por fornecer uma referência de tempo confiável para o servidor. Ele utiliza algoritmos avançados e técnicas de medição precisa para calcular a diferença entre o relógio do servidor e uma fonte de tempo externa, como um servidor NTP (Network Time Protocol). Ao manter o tempo atualizado com precisão, o Chrony assegura que as operações do servidor sejam executadas de forma consistente e coordenada.
Além disso, o Chrony é capaz de lidar com variações na latência de rede, compensando atrasos e estimando o tempo de viagem entre o servidor e a fonte de tempo. Isso é especialmente útil em ambientes de rede onde a latência pode variar significativamente, como em redes de longa distância ou em redes sujeitas a flutuações de tráfego. A capacidade do Chrony de ajustar o tempo de forma inteligente, considerando essas variações, garante que o servidor mantenha uma sincronização precisa, mesmo em condições desafiadoras.
Outro aspecto importante é a capacidade do Chrony de detectar e corrigir eventuais desvios no tempo do sistema. O algoritmo de disciplina do Chrony monitora constantemente o relógio do servidor, identificando e corrigindo pequenos desvios ao longo do tempo. Isso é fundamental para manter a estabilidade e a consistência do tempo no servidor, evitando erros e inconsistências que poderiam impactar negativamente o desempenho de aplicativos e serviços.
Em resumo, o Chrony desempenha um papel fundamental na garantia da precisão do tempo em um servidor. Ao fornecer uma referência de tempo confiável, lidar com variações de latência e corrigir desvios no tempo do sistema, ele contribui para a estabilidade, o desempenho e a coordenação adequada das operações em um ambiente de rede. Sua capacidade de ajuste inteligente e aprimoramento contínuo tornam o Chrony uma escolha valiosa para a sincronização do tempo em servidores.
A Importância da Sincronização de Tempo
A sincronização precisa do tempo é crucial por várias razões:
- Logs e Auditoria: Facilita a correlação de eventos em diferentes sistemas.
- Segurança: Muitos protocolos de segurança dependem de carimbos de tempo precisos.
- Transações Financeiras: Essencial para registrar com precisão o momento das transações.
- Criptografia: Alguns algoritmos criptográficos utilizam carimbos de tempo.
Sistemas mal sincronizados podem levar a problemas sérios, como falhas em autenticações baseadas em tempo ou inconsistências em bancos de dados distribuídos.
A diferença entre NTP e Chrony
O NTP (Network Time Protocol) e o Chrony são dois protocolos amplamente utilizados para a sincronização de tempo em servidores. Embora ambos tenham o objetivo comum de fornecer um relógio preciso, eles possuem características distintas que os tornam adequados para diferentes contextos e requisitos.
O NTP é um protocolo estabelecido há mais tempo e amplamente adotado na sincronização de tempo em redes. Ele é projetado para fornecer uma precisão elevada em ambientes onde a latência é relativamente estável e baixa. O NTP utiliza algoritmos complexos para calcular a diferença entre o relógio do servidor e várias fontes de tempo externas, como servidores de referência. Ele é especialmente útil em redes com conectividade confiável e baixa variação de latência, como redes locais ou WANs de alta qualidade.
Por outro lado, o Chrony é uma alternativa mais recente e flexível ao NTP. Ele foi desenvolvido com foco na adaptabilidade às variações de latência de rede e na capacidade de lidar com ambientes desafiadores. O Chrony utiliza técnicas avançadas para medir a latência da rede e calcular a diferença entre o relógio do servidor e uma fonte de tempo externa, como um servidor NTP. Essa abordagem adaptativa permite ao Chrony sincronizar com precisão, mesmo em redes sujeitas a flutuações de latência significativas, como redes de longa distância ou redes com tráfego variável.
Em termos de configuração e gerenciamento, o NTP tende a ser mais complexo, requerendo ajustes finos para otimizar o desempenho. O Chrony, por sua vez, é conhecido por sua facilidade de configuração e operação, tornando-se uma escolha conveniente para ambientes em que a simplicidade é valorizada.
Vantagens do Chrony sobre o NTP Tradicional
- Ajuste Rápido: Chrony pode sincronizar o relógio mais rapidamente.
- Melhor Performance: Funciona bem em redes com latência variável.
- Menor Consumo de Recursos: Ideal para sistemas embarcados ou de baixo poder computacional.
- Suporte a Leap Seconds: Lida melhor com segundos intercalares.
Configurar NTP Linux
Instalando o Chronyc no Amazon Linux
Para instalar o Chrony no Amazon Linux, você pode seguir os seguintes passos:
- Conecte-se ao seu servidor Amazon Linux usando SSH ou qualquer outra ferramenta de acesso remoto.
- Desinstale o NTP cliente:
sudo yum erase 'ntp*'
- Certifique-se de ter privilégios de superusuário ou use o comando
sudo
nas etapas seguintes para executar as instruções com permissões elevadas. - Atualize os pacotes do sistema executando o seguinte comando:
sudo yum update
- Agora, você pode instalar o Chrony usando o gerenciador de pacotes Yum:
sudo yum install chrony
- Abra o arquivo
/etc/chrony.conf
usando um editor de texto (como vim ou nano).sudo nano /etc/chrony.conf
Verifique se o arquivo inclui a seguinte linha:
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
Se a linha estiver presente, significa que o Amazon Time Sync Service já está configurado. Nesse caso, siga para a próxima etapa. Caso contrário, adicione a linha depois de todas as outras instruções server
ou pool
já presentes no arquivo e salve as alterações.
- Após a conclusão da instalação, você pode iniciar o serviço do Chrony com o seguinte comando:
sudo service chronyd start
- Para verificar o status do serviço, execute o comando:
sudo service chronyd status
O Chrony estará agora instalado e em execução no seu servidor Amazon Linux.
- Use o comando
chkconfig
para configurar ochronyd
para ser iniciado em cada inicialização do sistema.
sudo chkconfig chronyd on
- Verifique se
chrony
está usando o endereço IP169.254.169.123
para sincronizar a hora.
chronyc sources -v
Resultado esperado é parecido com este:
210 Number of sources = 7
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 169.254.169.123 3 6 17 43 -30us[ -226us] +/- 287us
^- ec2-12-34-231-12.eu-west> 2 6 17 43 -388us[ -388us] +/- 11ms
^- tshirt.heanet.ie 1 6 17 44 +178us[ +25us] +/- 1959us
^? tbag.heanet.ie 0 6 0 - +0ns[ +0ns] +/- 0ns
^? bray.walcz.net 0 6 0 - +0ns[ +0ns] +/- 0ns
^? 2a05:d018:c43:e312:ce77:> 0 6 0 - +0ns[ +0ns] +/- 0ns
^? 2a05:d018:dab:2701:b70:b> 0 6 0 - +0ns[ +0ns] +/- 0ns
Na saída retornada, ^* indica a fonte de hora preferida.
- Verifique as métricas de sincronização da hora informadas pelo
chrony
.
chronyc tracking
Saída esperada é semelhante a esta:
Reference ID : A9FEA97B (169.254.169.123)
Stratum : 4
Ref time (UTC) : Wed Nov 22 13:18:34 2017
System time : 0.000000626 seconds slow of NTP time
Last offset : +0.002852759 seconds
RMS offset : 0.002852759 seconds
Frequency : 1.187 ppm fast
Residual freq : +0.020 ppm
Skew : 24.388 ppm
Root delay : 0.000504752 seconds
Root dispersion : 0.001112565 seconds
Update interval : 64.4 seconds
Leap status : Normal
Instalando o Chrony no Ubuntu
Para instalar o Chrony no Ubuntu, siga as seguintes etapas:
- Conecte-se ao seu servidor Ubuntu usando SSH ou qualquer outra ferramenta de acesso remoto.
- Certifique-se de ter privilégios de superusuário ou use o comando
sudo
nas etapas seguintes para executar as instruções com permissões elevadas. - Atualize os pacotes do sistema executando o seguinte comando:
sudo apt update
- Agora você pode instalar o Chrony usando o gerenciador de pacotes APT:
sudo apt install chrony
- Após a conclusão da instalação, o serviço do Chrony será iniciado automaticamente. Você pode verificar o status do serviço com o seguinte comando:
sudo systemctl status chrony
- Após a instalação do Chrony, abra o arquivo de configuração
/etc/chrony/chrony.conf
com um editor de texto:
sudo nano /etc/chrony/chrony.conf
- Localize a seção de configuração
server
e adicione a seguinte linha antes de todas as outras instruçõesserver
oupool
já presentes no arquivo:
server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
Salve o arquivo e saia do editor de texto.
- Reinicie o serviço Chrony para aplicar as alterações:
sudo systemctl restart chrony
- Verifique se
chrony
está usando o endereço IP169.254.169.123
para sincronizar a hora.
chronyc sources -v
Saída esperada:
210 Number of sources = 7
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 169.254.169.123 3 6 17 12 +15us[ +57us] +/- 320us
^- tbag.heanet.ie 1 6 17 13 -3488us[-3446us] +/- 1779us
^- ec2-12-34-231-12.eu-west- 2 6 17 13 +893us[ +935us] +/- 7710us
^? 2a05:d018:c43:e312:ce77:6 0 6 0 10y +0ns[ +0ns] +/- 0ns
^? 2a05:d018:d34:9000:d8c6:5 0 6 0 10y +0ns[ +0ns] +/- 0ns
^? tshirt.heanet.ie 0 6 0 10y +0ns[ +0ns] +/- 0ns
^? bray.walcz.net 0 6 0 10y +0ns[ +0ns] +/- 0ns
Na saída retornada, a linha que começa com ^*
indica a fonte de horas preferida.
- Verifique as métricas de sincronização da hora informadas pelo
chrony
.
chronyc tracking
Saída será parecida com esta:
Reference ID : 169.254.169.123 (169.254.169.123)
Stratum : 4
Ref time (UTC) : Wed Nov 29 07:41:57 2017
System time : 0.000000011 seconds slow of NTP time
Last offset : +0.000041659 seconds
RMS offset : 0.000041659 seconds
Frequency : 10.141 ppm slow
Residual freq : +7.557 ppm
Skew : 2.329 ppm
Root delay : 0.000544 seconds
Root dispersion : 0.000631 seconds
Update interval : 2.0 seconds
Leap status : Normal
O Chrony estará agora instalado e em execução no seu servidor Ubuntu.
Observação
Lembre-se de que as instruções acima assumem que você está usando versões atualizadas do Amazon Linux e do Ubuntu. Se você estiver usando versões mais antigas, pode haver pequenas diferenças nos comandos e procedimentos de instalação.
Casos de Uso do NTP Linux
Data Centers e Ambientes de Nuvem
Em data centers e ambientes de nuvem, a sincronização precisa do tempo é crucial para operações como:
- Balanceamento de carga
- Escalonamento automático de recursos
- Análise de logs distribuídos
Por exemplo, a Amazon Web Services recomenda o uso de Chrony para configurar NTP Linux e sincronização de tempo em instâncias EC2.
Sistemas de Transações Financeiras
Bancos e instituições financeiras dependem de sincronização precisa para:
- Registro de transações
- Compliance regulatório
- Prevenção de fraudes
A MiFID II, por exemplo, exige que as instituições financeiras mantenham uma precisão de tempo de 100 microssegundos.
IoT e Sistemas Embarcados
Dispositivos IoT e sistemas embarcados, que muitas vezes operam com recursos limitados, beneficiam-se da eficiência do Chrony para manter a sincronização de tempo precisa, essencial para:
- Coleta de dados sincronizada
- Coordenação de ações entre dispositivos
- Gerenciamento de energia eficiente
Conclusão
A configuração adequada do NTP Linux, entender o que é NTP, especialmente utilizando ferramentas modernas como o Chrony, é essencial para manter a precisão do tempo em sistemas computacionais. Desde data centers até dispositivos IoT, a sincronização de tempo precisa é um componente crítico para o funcionamento confiável e eficiente de sistemas em rede.
Ao implementar o NTP com Chrony, os administradores de sistemas podem garantir que seus servidores e dispositivos mantenham uma sincronização de tempo precisa, contribuindo para a segurança, eficiência e confiabilidade das operações de TI.
Confira também nosso post sobre alarme no CloudWatch para detectar horários incorretos em máquinas Linux do Auto Scaling Group:
Recursos adicionais
Aqui estão alguns recursos adicionais recomendados sobre o Chrony. Esses recursos são páginas relevantes e informativas sobre Linux em geral e podem ajudar nas configurações relacionadas a este serviço:
- DigitalOcean – “How To Install and Use Chrony on Ubuntu 18.04”
- Red Hat – “Configuring NTP Using the chrony Suite”
- ArchWiki – “Network Time Protocol daemon (NTPd)”
- Linuxize – “How to Install and Configure Chrony NTP Server on Ubuntu 20.04”
- Ubuntu Official Documentation – “Time Synchronization”
[…] O que é o Chrony, sua importância e como instalar […]
ótimo conteudo obrigado!
Obrigado Bruno, espero que o conteúdo tenha lhe ajudado!
Caso tenha ficado com alguma dúvida adicional, pode me acionar