Definir a referência de horas na instância do EC2 para usar o Serviço de Sincronização Temporal da Amazon local - Amazon Elastic Compute Cloud

Definir a referência de horas na instância do EC2 para usar o Serviço de Sincronização Temporal da Amazon local

O Serviço de Sincronização Temporal da Amazon local usa o Network Time Protocol (NTP) ou fornece um relógio físico Precision Time Protocol (PTP) nas instâncias compatíveis. O relógio físico PTP permite uma conexão NTP (instâncias Linux e Windows) ou uma conexão PTP direta (apenas instâncias Linux). As conexões NTP e PTP diretas usam a mesma fonte de hora extremamente exata, mas a conexão PTP direta é mais precisa do que a conexão NTP. A conexão NTP com o Serviço de Sincronização Temporal da Amazon usa a difusão de segundos bissextos, enquanto a conexão PTP com o relógio PTP físico não usa. Para ter mais informações, consulte Segundos bissextos.

As instâncias podem acessar o Serviço de Sincronização Temporal da Amazon da seguinte forma:

  • Por NTP nos seguintes endpoints de endereço IP:

  • (Somente para o Linux) Por meio de uma conexão PTP direta para se conectar a um relógio de hardware PTP local:

    • PHC0

As AMIs do Amazon Linux, as AMIs do Windows e a maioria das AMIs de parceiros configuram a instância para usar o endpoint do protocolo NTP para IPv4 por padrão. Esta é a configuração recomendada para a maioria das workloads do cliente. Nenhuma configuração adicional é necessária para instâncias iniciadas dessas AMIs, a menos que você queira usar o endpoint IPv6 ou se conectar diretamente ao relógio PTP físico.

As conexões NTP e PTP não exigem nenhuma alteração na configuração da VPC e a instância não requer acesso à Internet.

nota

Somente as instâncias do Linux podem usar uma conexão PTP direta para se conectar ao relógio de hardware PTP local. As instâncias do Windows usam o protocolo NTP para se conectar ao relógio de hardware PTP local.

Conectar-se ao endpoint IPv4 do Serviço de Sincronização Temporal da Amazon

Esta seção descreve como configurar a instância para usar o Serviço de Sincronização Temporal da Amazon local por meio do endpoint IPv4.

Use as instruções para o sistema operacional da sua instância.

O AL2023 e as versões mais recentes das AMIs do Amazon Linux 2 e do Amazon Linux são configuradas para usar o endpoint IPv4 do Serviço de Sincronização Temporal da Amazon por padrão. Nenhuma configuração adicional é necessária para as instâncias iniciadas usando essas AMIs, e você pode ignorar o procedimento apresentado a seguir.

Se estiver usando uma AMI que não tem o Amazon Time Sync Service configurado por padrão, use um dos seguintes procedimentos para configurar o Serviço de Sincronização Temporal da Amazon na instância usando o cliente chrony. É necessário adicionar uma entrada de servidor para o Serviço de Sincronização Temporal da Amazon no arquivo de configuração chrony.

Use as instruções para o sistema operacional da sua instância.

Amazon Linux
Para se conectar ao endpoint IPv4 do Serviço de Sincronização Temporal da Amazon no Amazon Linux usando o chrony
  1. Conecte-se à sua instância e desinstale o serviço NTP.

    [ec2-user ~]$ sudo yum erase 'ntp*'
  2. Instale o pacote chrony.

    [ec2-user ~]$ sudo yum install chrony
  3. Abra o arquivo /etc/chrony.conf usando um editor de texto (como vim ou nano). Verifique se o arquivo inclui a seguinte linha:

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

    Se a linha estiver presente, o Amazon Time Sync Service já estará configurado para usar o endpoint IPv4 do Serviço de Sincronização Temporal da Amazon e você poderá passar 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.

  4. Reinicie o daemon chrony (chronyd).

    [ec2-user ~]$ sudo service chronyd restart
    Starting chronyd: [ OK ]
    nota

    No RHEL e no CentOS (até a versão 6), o nome do serviço é chrony em vez de chronyd.

  5. Para configurar o chronyd para ser iniciado a cada inicialização do sistema, use o comando chkconfig.

    [ec2-user ~]$ sudo chkconfig chronyd on
  6. Confirme que o chrony está usando o endpoint IPv4 169.254.169.123 para sincronizar a hora.

    [ec2-user ~]$ chronyc sources -v
    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.

  7. Verifique as métricas de sincronização da hora informadas pelo chrony.

    [ec2-user ~]$ chronyc tracking
    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
Ubuntu
Para conectar ao endpoint IPv4 do Serviço de Sincronização Temporal da Amazon no Ubuntu usando o chrony
  1. Conecte-se à sua instância e use apt para instalar o pacote chrony.

    ubuntu:~$ sudo apt install chrony
    nota

    Se necessário, atualize sua instância primeiro executando sudo apt update.

  2. Abra o arquivo /etc/chrony/chrony.conf usando um editor de texto (como vim ou nano). Adicione a seguinte linha antes de todas as outras instruções server ou pool já presentes no arquivo, e salve as alterações:

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4
  3. Reinicie o serviço chrony.

    ubuntu:~$ sudo /etc/init.d/chrony restart
    Restarting chrony (via systemctl): chrony.service.
  4. Confirme que o chrony está usando o endpoint IPv4 169.254.169.123 para sincronizar a hora.

    ubuntu:~$ chronyc sources -v
    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.

  5. Verifique as métricas de sincronização da hora informadas pelo chrony.

    ubuntu:~$ chronyc tracking
    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
SUSE Linux

A partir do SUSE Linux Enterprise Server 15, o chrony é a implementação padrão do NTP.

Para se conectar ao endpoint IPv4 do Serviço de Sincronização Temporal da Amazon no SUSE usando o chrony
  1. Abra o arquivo /etc/chrony.conf usando um editor de texto (como vim ou nano).

  2. Verifique se o arquivo contém a seguinte linha:

    server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4

    Se essa linha não estiver presente, adicione-a.

  3. Comente qualquer outro servidor ou linhas de consulta.

  4. Abra o yaST e ative o serviço chrony.

A versão das AMIs do Windows de agosto de 2018 em diante usam o Amazon Time Sync Service por padrão. Nenhuma configuração adicional é necessária para instâncias iniciadas dessas AMIs e você pode ignorar os procedimentos a seguir.

Se você estiver usando uma AMI que não tenha o Serviço de Sincronização Temporal da Amazon configurado por padrão, primeiro verifique sua configuração atual do protocolo NTP. Se a instância já estiver usando o endpoint IPv4 do Serviço de Sincronização Temporal da Amazon, nenhuma configuração adicional será necessária. Se a instância não estiver usando o Serviço de Sincronização Temporal da Amazon, faça o procedimento para alterar o servidor NTP para que use o Serviço de Sincronização Temporal da Amazon.

Para verificar a configuração de NTP
  1. Na instância, abra uma janela de prompt de comando.

  2. Obtenha a configuração de NTP atual digitando o seguinte comando:

    w32tm /query /configuration

    Esse comando retorna as definições de configuração atuais para a instância do Windows e mostrará se você está conectado ao Serviço de Sincronização Temporal da Amazon.

  3. (Opcional) Obtenha o status da configuração atual digitando o seguinte comando:

    w32tm /query /status

    Esse comando retorna informações, como o último horário em que a instância foi sincronizada com o servidor NTP e o intervalo de sondagem.

Para alterar o servidor NTP para usar o Amazon Time Sync Service
  1. Na janela de prompt de comando, execute o seguinte comando:

    w32tm /config /manualpeerlist:169.254.169.123 /syncfromflags:manual /update
  2. Verifique suas novas configurações usando o seguinte comando:

    w32tm /query /configuration

    Na saída retornada, verifique se NtpServer exibe o endpoint IPv4 169.254.169.123.

Configurações de NTP (Network Time Protocol) padrão para AMIs do Windows da Amazon

As Imagens de máquina da Amazon (AMIs) geralmente aderem aos padrões prontos para uso, exceto em casos em que alterações são necessárias para que funcionem na infraestrutura do EC2. As seguintes configurações foram determinadas para funcionar de maneira adequada em um ambiente virtual, bem como manter qualquer desvio de relógio dentro um segundo de precisão:

  • Intervalo de atualização: rege a frequência com que o serviço de hora acertará a hora do sistema para garantir sua precisão. A AWS configura o intervalo de atualização para ocorrer uma vez a cada dois minutos.

  • Servidor NTP: a partir da versão de agosto de 2018, as AMIs usam o Serviço de Sincronização Temporal da Amazon por padrão. Esse serviço de horário pode ser acessado em qualquer Região da AWS no endpoint IPv4 169.254.169.123. Além disso, o sinalizador 0x9 indica que o serviço de horário está atuando como um cliente e utiliza o SpecialPollInterval para determinar a frequência com a qual realizar verificações com o servidor de horário configurado.

  • Tipo – "NTP" significa que o serviço atua como um cliente NTP autônomo em vez de agir como parte de um domínio.

  • Habilitado e InputProvider: o serviço de hora está habilitado e fornece a hora ao sistema operacional.

  • Intervalo de pesquisa especial: verifica o servidor NTP configurado a cada 900 segundos (15 minutos).

Caminho de registro Nome da chave Dados

HKLM:\System\CurrentControlSet\services\w32time\Config

UpdateInterval

120

HKLM:\System\CurrentControlSet\services\w32time\Parameters

NtpServer

169.254.169.123,0x9

HKLM:\System\CurrentControlSet\services\w32time\Parameters

Tipo

NTP

HKLM:\System\CurrentControlSet\services\w32time\TimeProviders\NtpClient

Enabled

1

HKLM:\System\CurrentControlSet\services\w32time\TimeProviders\NtpClient

InputProvider

1

HKLM:\System\CurrentControlSet\services\w32time\TimeProviders\NtpClient

SpecialPollInterval

900

Conectar-se ao endpoint IPv6 do Serviço de Sincronização Temporal da Amazon

Esta seção explica como as etapas descritas no Conectar-se ao endpoint IPv4 do Serviço de Sincronização Temporal da Amazon diferem se você estiver configurando a instância para usar o Serviço de Sincronização Temporal da Amazon local por meio do endpoint IPv6. Ela não explica todo o processo de configuração do Amazon Time Sync Service.

O endpoint IPv6 pode ser acessado somente em instâncias desenvolvidas no AWS Nitro System.

nota

Não recomendamos usar as entradas de endpoint IPv4 e IPv6 em conjunto. Os pacotes IPv4 e IPv6 NTP vêm do mesmo servidor local para a sua instância. Configurar ambos os endpoints IPv4 e IPv6 é desnecessário e não melhorará a precisão da hora na instância.

Use as instruções para o sistema operacional da sua instância.

Dependendo da distribuição do Linux que está usando, ao chegar à etapa de edição do arquivo chrony.conf, você estará usando o endpoint IPv6 do Serviço de Sincronização Temporal da Amazon (fd00:ec2::123) em vez do endpoint IPv4 (169.254.169.123):

server fd00:ec2::123 prefer iburst minpoll 4 maxpoll 4

Salve o arquivo e confirme que o chrony está usando o endpoint IPv6 fd00:ec2::123 para sincronizar a hora:

[ec2-user ~]$ chronyc sources -v

Na saída, se você vir o endpoint IPv6 fd00:ec2::123, a configuração estará concluída.

Ao chegar à etapa de alteração do servidor NTP para usar o Serviço de Sincronização Temporal da Amazon, você estará usando o endpoint IPv6 do Serviço de Sincronização Temporal da Amazon (fd00:ec2::123) em vez do endpoint IPv4 (169.254.169.123):

w32tm /config /manualpeerlist:fd00:ec2::123 /syncfromflags:manual /update

Verifique se as novas configurações estão usando o endpoint IPv6 fd00:ec2::123 para sincronizar o horário:

w32tm /query /configuration

Na saída, verifique se NtpServer exibe o endpoint IPv6 fd00:ec2::123.

Conectar-se ao relógio PTP físico

O relógio de hardware baseado em PTP faz parte do AWS Nitro System, portanto, pode ser acessado diretamente em instâncias bare metal e virtualizadas do EC2 com suporte, sem a necessidade de usar recursos do cliente.

Os endpoints NTP para o relógio de hardware PTP são os mesmos do Serviço de Sincronização Temporal da Amazon normal. Se a instância tiver um relógio de hardware PTP e você tiver configurado a conexão NTP (com o endpoint IPv4 ou IPv6), a hora da instância será automaticamente obtida do relógio de hardware PTP via NTP.

Para instâncias do Linux, é possível configurar uma conexão PTP direta, o que fornecerá uma hora mais precisa do que a conexão NTP. As instâncias do Windows só são compatíveis com uma conexão NTP para o relógio de hardware PTP.

Requisitos

O relógio PTP físico está disponível em uma instância quando os seguintes requisitos são atendidos:

  • Regiões da AWS com suporte: Leste dos EUA (Norte da Virgínia) e Ásia-Pacífico (Tóquio)

  • Famílias de instâncias suportadas:

    • Uso geral: M7a, M7g, M7gd e M7i

    • Otimizada para computação: C7a, C7gd e C7i

    • Otimizada para memória: R7a, R7g, R7gd e R7i

  • (Somente Linux) Driver do ENA, na versão 2.10.0 ou em versões posteriores, instalado em um sistema operacional compatível. Para obter mais informações sobre os sistemas operacionais compatíveis, consulte os pré-requisitos do driver no GitHub.

Esta seção descreve como configurar a instância do Linux para usar o Serviço de Sincronização Temporal da Amazon local por meio do relógio de hardware PTP usando uma conexão PTP direta. É necessário adicionar uma entrada do servidor para o relógio de hardware PTP ao arquivo de configuração do chrony.

Para configurar uma conexão PTP direta com o relógio de hardware PTP (somente instâncias do Linux)
  1. Conecte-se à sua instância do Linux e faça o seguinte:

    1. Instale o driver do kernel Linux para o Adaptador de Rede Elástica (ENA) versão 2.10.0 ou posterior.

    2. Habilite o relógio de hardware PTP.

    Para obter as instruções de instalação, consulte Linux kernel driver for Elastic Network Adapter (ENA) family no GitHub.

  2. Verifique se o dispositivo /dev/ptp0 aparece na instância.

    [ec2-user ~]$ ls /dev/ptp0

    A saída esperada é mostrada a seguir. Se /dev/ptp0 não estiver na saída, o driver ENA não foi instalado corretamente. Revise a etapa 1 desse procedimento para instalar o driver.

    /dev/ptp0
  3. Edite o /etc/chrony.conf o usando um editor de texto e adicione a linha a seguir em qualquer ponto no arquivo.

    refclock PHC /dev/ptp0 poll 0 delay 0.000010 prefer
  4. Reinicie o chrony.

    [ec2-user ~]$ sudo systemctl restart chronyd
  5. Verifique se o chrony está usando o relógio PTP físico para sincronizar a hora nessa instância.

    [ec2-user ~]$ chronyc sources

    Saída esperada

    MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== #* PHC0 0 0 377 1 +2ns[ +1ns] +/- 5031ns

    Na saída retornada, * indica a fonte de hora preferida. PHC0 corresponde ao relógio PTP físico. Pode ser necessário esperar alguns segundos após reiniciar o chrony para que o asterisco apareça.