Definir a hora da instância do Linux
É essencial para muitas tarefas e processos de servidor que haja uma referência de hora consistente e exata nas instâncias do Linux. Os timestamps nos logs do sistema desempenham um papel essencial na identificação de quando os problemas ocorreram e na ordem cronológica dos eventos. Se você usar a AWS CLI ou um SDK da AWS para fazer solicitações à instância, essas ferramentas assinarão as solicitações em seu nome. Se as configurações de data e hora da instância não forem exatas, poderá haver uma discrepância entre a data na assinatura e a data da solicitação, levando a AWS a rejeitar suas solicitações.
Para lidar com esse aspecto importante, a Amazon oferece o Serviço de Sincronização Temporal da Amazon, que é acessível em todas as instâncias do EC2 e é usado por vários Serviços da AWS. Esse serviço usa uma frota de relógios de referência atômicos e conectados via satélite em cada Região da AWS para fornecer leituras de hora exatas e atuais do padrão global do Horário Universal Coordenado (UTC).
O Serviço de Sincronização Temporal da Amazon usa o Network Time Protocol (NTP) ou fornece um relógio Precision Time Protocol (PTP) físico local nas instâncias compatíveis. O relógio PTP físico é compatível tanto com uma conexão NTP quanto com uma conexão PTP direta. 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.
Para fazer um backup no Serviço de Sincronização Temporal da Amazon na instância e para conectar recursos de fora do Amazon EC2 ao Serviço de Sincronização Temporal da Amazon, você pode usar o Serviço de Sincronização Temporal da Amazon localizado em time.aws.com
. O Serviço de Sincronização Temporal da Amazon público, como o Serviço de Sincronização Temporal da Amazon local, faz automaticamente a difusão de qualquer segundo bissexto adicionado ao UTC. O Serviço de Sincronização Temporal da Amazon público é compatível globalmente com nossa frota de relógios atômicos de referência conectados via satélite em cada Região da AWS.
Para instâncias do Windows, consulte Definir a hora da sua instância do Windows.
Tópicos
- Definir a instância para usar o Serviço de Sincronização Temporal da Amazon
- Configure a instância ou qualquer dispositivo conectado à Internet para usar o Serviço de Sincronização Temporal da Amazon público
- Compare os carimbos de data/hora
- Alterar o fuso horário da instância
- Segundos bissextos
- Recursos relacionados
Definir a instância para usar o Serviço de Sincronização Temporal da Amazon
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:
-
IPv4:
169.254.169.123
-
IPv6:
fd00:ec2::123
(acessível somente por instâncias desenvolvidas no AWS Nitro System.)
-
-
Por meio de uma conexão PTP direta para se conectar a um relógio PTP físico local:
-
PHC0
-
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.
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 PTP físico são os mesmos da conexão normal do Serviço de Sincronização Temporal da Amazon via IPv4 ou IPv6. Se o software estiver configurado para o endpoint NTP e estiver sendo executado em uma instância com um relógio PTP físico, ele será conectado ao relógio PTP físico automaticamente via NTP.
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 instâncias iniciadas dessas AMIs, a menos que você queira usar o endpoint IPv6 ou se conectar diretamente ao relógio PTP físico. Para obter as instruções de configuração do IPv6, consulte Conectar-se ao endpoint IPv6 do Serviço de Sincronização Temporal da Amazon. Para obter as instruções de configuração do relógio PTP físico, consulte Conectar-se ao relógio PTP físico.
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
.
Conteúdo
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. É necessário adicionar uma entrada de servidor para o Serviço de Sincronização Temporal da Amazon no arquivo de configuração chrony
. Nas versões mais recentes dessas AMIs, o chrony
já está instalado e configurado para usar o endpoint IPv4 do Serviço de Sincronização Temporal da Amazon.
Use as instruções para o sistema operacional da sua instância.
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 ambas as entradas de endpoint IPv4 e IPv6 juntas no arquivo chrony.conf. 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.
Dependendo da distribuição Linux que você estiver usando, ao chegar à etapa para editar o arquivo chrony.conf, você estará usando o endpoint IPv6 do Amazon Time Sync Service (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.
Conectar-se ao relógio PTP físico
Esta seção descreve como configurar a instância para usar o Serviço de Sincronização Temporal da Amazon local por meio do relógio PTP físico usando uma conexão PTP direta. É necessário adicionar uma entrada do servidor para o relógio PTP físico ao arquivo de configuração do chrony
.
Se a instância tiver um relógio PTP físico 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 PTP físico. As etapas abaixo configuram a conexão PTP direta, o que fornecerá a hora mais exata do que a conexão NTP.
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ília de instâncias compatíveis: R7g
-
Driver ENA versão 2.10.0 ou posterior 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.
Para se conectar ao relógio PTP físico
-
Conecte-se à instância e instale o driver do kernel Linux para o Adaptador de Rede Elástica (ENA) versão 2.10.0 ou posterior. Para obter as instruções de instalação, consulte Linux kernel driver for Elastic Network Adapter (ENA) family
no GitHub. -
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
-
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
-
Reinicie o chrony usando o comando a seguir.
[ec2-user ~]$
sudo systemctl restart chronyd
-
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.
Configure a instância ou qualquer dispositivo conectado à Internet para usar o Serviço de Sincronização Temporal da Amazon público
Você pode configurar a instância ou qualquer dispositivo conectado à Internet, como seu computador local ou um servidor local, para usar o Serviço de Sincronização Temporal da Amazon público, que pode ser acessado pela Internet em time.aws.com
. Você pode usar o Serviço de Sincronização Temporal da Amazon público como backup para o Serviço de Sincronização Temporal da Amazon e para conectar recursos de fora da AWS ao Serviço de Sincronização Temporal da Amazon.
Dependendo do sistema operacional da instância ou dispositivo, use um dos procedimentos a seguir para definir que a instância ou dispositivo use o Serviço de Sincronização Temporal da Amazon público.
Compare os carimbos de data/hora
Se você estiver usando o Amazon Time Sync Service, poderá comparar os carimbos de data/hora em suas instâncias do Amazon EC2 com o ClockBound para determinar a hora real de um evento. O ClockBound mede a precisão do relógio da instância do EC2 e permite que você confira se um determinado carimbo de data/hora está no passado ou no futuro em relação ao relógio atual da instância. Essas informações são valiosas para determinar a ordem e a consistência de eventos e transações entre instâncias do EC2, independentemente da localização geográfica de cada instância.
O ClockBound é um daemon e uma biblioteca de código aberto. Para saber mais sobre o ClockBound, incluindo instruções de instalação, consulte Clockbound
Se você estiver usando a conexão PTP direta com o relógio PTP físico, seu daemon de hora, como o chrony, subestimará o limite de erro do relógio. Isso ocorre porque um relógio PTP físico não passa as informações corretas de limite de erro para o chrony, como o NTP faz. Como resultado, o daemon de sincronização de relógio pressupõe que o relógio esteja certo em UTC e que, portanto, tenha um limite de erro de 0
. Para medir o limite total de erro, o Sistema Nitro calcula o limite de erro do relógio PTP físico e o disponibiliza para a instância do EC2 via sistema de arquivos sysfs
do driver ENA. Você pode ler isso diretamente como um valor, em nanossegundos, usando o seguinte comando:
cat /sys/devices/pci0000:00/0000:00:05.0/phc_error_bound
A saída é o limite de erro do relógio PTP físico, em nanossegundos.
Para calcular o limite de erro de relógio certo em um dado momento específico ao usar a conexão PTP direta com o relógio PTP físico, você deve adicionar o limite de erro do relógio do chrony ou do ClockBound no momento em que o chrony consultar o relógio PTP físico. Para obter mais informações sobre como medir e monitorar a precisão do relógio, consulte Manage Amazon EC2 instance clock accuracy using Amazon Time Sync Service and Amazon CloudWatch – Part 1
Alterar o fuso horário da instância
Por padrão, as instâncias do Amazon Linux seguem o fuso horário UTC (Tempo Universal Coordenado). É possível alterar a hora de uma instância para o horário local ou para outro fuso horário em sua rede.
Importante
Essas informações se aplicam ao Amazon Linux. Para obter informações sobre outras distribuições, consulte a documentação específica.
Para alterar o fuso horário de uma instância do AL2023 ou do Amazon Linux 2
-
Exiba a configuração atual de fuso horário do sistema.
[ec2-user ~]$
timedatectl
-
Liste os fusos horários disponíveis.
[ec2-user ~]$
timedatectl list-timezones
-
Defina o fuso horário escolhido.
[ec2-user ~]$
sudo timedatectl set-timezone
America/Vancouver
-
(Opcional) Confirme se o fuso horário atual foi atualizado para o novo fuso horário executando o comando timedatectl novamente.
[ec2-user ~]$
timedatectl
Para alterar o fuso horário de uma instância do Amazon Linux
-
Identifique o fuso horário a ser usado na instância. O diretório
/usr/share/zoneinfo
contém uma hierarquia de arquivos de dados de fuso horário. Navegue a estrutura do diretório no local para localizar um arquivo para seu fuso horário.[ec2-user ~]$
ls /usr/share/zoneinfo
Africa Chile GB Indian Mideast posixrules US America CST6CDT GB-Eire Iran MST PRC UTC Antarctica Cuba GMT iso3166.tab MST7MDT PST8PDT WET Arctic EET GMT0 Israel Navajo right W-SU ...
Algumas das entradas nesse local são diretórios (como
America
), e esses diretórios contêm arquivos de fuso horário para cidades específicas. Encontre sua cidade (ou uma cidade em seu fuso horário) para ser usada para a instância. -
Atualize o arquivo
/etc/sysconfig/clock
com o novo fuso horário. Neste exemplo, usamos o arquivo de dados do fuso horário de Los Angeles,/usr/share/zoneinfo/America/Los_Angeles
.-
Abra o arquivo
/etc/sysconfig/clock
usando um editor de texto (como vim ou nano). Você precisa usar sudo com o comando do editor, pois/etc/sysconfig/clock
é de propriedade deroot
.[ec2-user ~]$
sudo
nano
/etc/sysconfig/clock -
Localize a entrada
ZONE
e a altere para o fuso horário (omitindo a seção/usr/share/zoneinfo
do caminho). Por exemplo, para alterar o fuso horário de Los Angeles, altere a entradaZONE
para:ZONE="
America/Los_Angeles
"nota
Não altere a entrada
UTC=true
para outro valor. Essa entrada é para o relógio de hardware e não precisa ser ajustada quando você está configurando um fuso horário diferente em sua instância. -
Salve o arquivo e saia do editor de texto.
-
-
Crie um link simbólico entre
/etc/localtime
e o arquivo de fuso horário para que a instância localize o arquivo de fuso horário quando fizer referência a informações do horário local.[ec2-user ~]$
sudo ln -sf /usr/share/zoneinfo/
America/Los_Angeles
/etc/localtime -
Reinicialize o sistema para obter as informações do novo fuso horário em todos os serviços e aplicações.
[ec2-user ~]$
sudo reboot
-
(Opcional) Confirme se o fuso horário atual foi atualizado para o novo fuso horário usando o comando date. O fuso horário atual aparecerá na saída. No exemplo a seguir, o fuso horário atual é PDT, que corresponde ao fuso horário de Los Angeles.
[ec2-user ~]$
date
Sun Aug 16 05:45:16 PDT 2020
Segundos bissextos
Os segundos bissextos, introduzidos em 1972, são ajustes ocasionais de um segundo no horário UTC para considerar as irregularidades na rotação da Terra, a fim de acomodar as diferenças entre o Tempo Atômico Internacional (TAI) e o horário solar (Ut1). Para gerenciar os segundos bissextos para os clientes, criamos a difusão de segundos bissextos no Serviço de Sincronização Temporal da Amazon. Para obter mais informações, consulte Look Before You Leap — The Coming Leap Second and AWS
Os segundos bissextos vão acabar e apoiamos totalmente a decisão tomada na 27ª Conferência Geral sobre Pesos e Medidas de abandonar os segundos bissextos até 2035
Para apoiar essa transição, ainda planejamos continuar a aplicar a difusão durante um evento de segundos bissextos ao acessar o Serviço de Sincronização Temporal da Amazon via conexão NTP local ou nossos consultas de NTP público (time.aws.com
). O relógio PTP físico, no entanto, não oferece uma opção de difusão de tempo. No caso de um segundo bissexto, o relógio PTP físico adicionará o segundo bissexto de acordo com os padrões do UTC. As fontes de hora com difusão de segundo bissexto e sem difusão de segundos bissextos são iguais na maioria dos casos. Mas, como elas diferem durante um evento de segundo bissexto, não recomendamos o uso de ambas, as fontes de hora com difusão e sem difusão, na configuração do cliente de hora durante um evento de segundo bissexto.