Muitos sistemas de software que dependem de um cuidadoso sequenciamento de eventos se baseiam em um relógio de sistema estável e consistente. Esses sistemas geralmente usam registros do sistema com carimbos de data/hora para garantir a sincronização de tempo e depurar problemas à medida que ocorrem. Para manter os relógios do sistema em sincronia, as instâncias do Compute Engine são pré-configuradas para usar o Network Time Protocol (NTP), uma solução combinada de hardware e software de sincronização de tempo.
O NTP também é útil no caso raro de um segundo bissexto, um ajuste de um segundo feito no horário UTC para corrigir as variações na rotação da Terra. Ele não acontece em intervalos regulares, porque a velocidade da rotação da Terra varia de maneira irregular, em resposta a eventos climáticos e geológicos. Ele tem um impacto perceptível em vários serviços e aplicativos na Web. Os servidores NTP ajudam a garantir que o mesmo horário seja informado por todos os servidores durante o evento de um segundo bissexto.
Neste documento, descrevemos como configurar servidores NTP nas instâncias de computação, incluindo o tratamento adequado de segundos bissextos.
Servidores NTP do Google e leap smearing
Em geral, os segundos bissextos de um sistema operacional Unix são implementados repetindo o último segundo do dia. Isso pode causar problemas se o comportamento previsto no software é que o carimbo de data/hora sempre aumente. Para contornar esse problema, os servidores de horário do Cloud de Confiance by S3NS “distribuem” o segundo extra em 24 horas, 12 antes e 12 após o evento do segundo bissexto. Assim, o segundo extra não fica todo concentrado em um carimbo de data/hora repetido nos computadores. Isso reduz o risco em sistemas que dependem de um carimbo de data/hora consistente. Recomendamos que você configure todas as instâncias de computação para usar os serviços internos do Google NTP.
Configurar NTP nas instâncias
OCloud de Confiance não pode prever como os serviços externos de NTP, como
pool.ntp.org, processam segundos bissextos. Recomendamos que você não use fontes de NTP externas com suas instâncias de computação. Se você usar o serviço de NTP do Google e um serviço externo, poderá causar mudanças imprevisíveis no horário do sistema. É preferível usar apenas uma única fonte de NTP externa do que uma combinação, mas os serviços de NTP externos, como pool.ntp.org, geralmente usam stepping para processar segundos bissextos. Como resultado, as instâncias podem ter carimbos de data/hora repetidos.
A abordagem mais segura é configurar as instâncias de computação para usar um único servidor NTP, o servidor interno fornecido pelo Google. Para mais informações sobre o servidor NTP interno fornecido pelo Google, consulte as Perguntas frequentes sobre o NTP público do Google.
Para garantir que as instâncias de computação estejam configuradas corretamente, siga estas instruções.
Linux (chrony)
Por padrão, a maioria das novas versões do Linux usa
chrony para gerenciar as configurações do NTP e a
sincronização de tempo. Para garantir que chrony use apenas o serviço NTP
interno, verifique a configuração de chrony e remova os servidores NTP externos.
Use
sshpara se conectar à instância de computação.Console
Para usar o console e se conectar à instância de computação usando SSH, siga estas etapas:
Acesse a página Instâncias de VM no console do Cloud de Confiance .
Clique no botão SSH da instância que você quer configurar.
gcloud
Para usar a CLI do Google Cloud para se conectar à instância de computação usando SSH, execute o seguinte comando:
gcloud compute instances ssh INSTANCE_NAME
Substitua
INSTANCE_NAMEpelo nome da instância a que você está se conectando.Na instância, execute
chronyc sourcespara verificar o estado atual da configuração do NTP:$ chronyc sourcesA resposta será semelhante a:
210 Number of sources = 2 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* metadata.google.internal 2 6 377 4 -14us[ -28us] +/- 257us ^- 38.229.53.9 2 6 37 4 -283us[ -297us] +/- 28ms
Quando há um único registro apontando para
metadata.googleoumetadata.google.internal, não é necessário fazer alterações. Se houver várias fontes, misturandometadata.googlee uma fonte pública, comopool.ntp.org, atualize-as para remover todos os servidores NTP externos.No exemplo de saída, há dois registros, um apontando para
metadata.google.internale outro para um endereço externo. Como há várias fontes, atualize os servidores NTP para remover o endereço38.229.53.9, conforme descrito na próxima etapa.Configure os servidores NTP para remover os que são externos.
Para remover um servidor NTP adicional da lista, edite o arquivo
/etc/chrony/chrony.confcom o editor de texto de sua preferência. Encontre todas as linhas que começam comserver external_source_ip_or_namee remova-as.Depois de editar o arquivo
/etc/chrony/chrony.conf, reinicie o serviçochrony. O comando de reinicialização pode variar dependendo da distribuição do Linux, conforme mostrado nos exemplos a seguir:sudo service chrony restart
sudo systemctl restart chrony
Verifique a configuração executando o comando
chronyc sourcesnovamente:$ chronyc sourcesA saída será parecida com esta:
210 Number of sources = 1 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* metadata.google.internal 2 7 377 98 -1343ns[-1588ns] +/- 396us
Linux (ntpd)
A maioria das distribuições Linux mais antigas usa ntpd
para gerenciar as configurações do NTP e a sincronização de tempo. Para garantir que
ntpd use apenas o serviço NTP interno, verifique a configuração de ntpd
e remova os servidores NTP externos:
Use
sshpara se conectar à instância de computação.Console
Para usar o console e se conectar à instância de computação usando SSH, siga estas etapas:
Acesse a página Instâncias de VM no console do Cloud de Confiance .
Clique no botão SSH da instância que você quer configurar.
gcloud
Para usar a CLI do Google Cloud para se conectar à instância de computação usando SSH, execute o seguinte comando:
gcloud compute instances ssh INSTANCE_NAME
Substitua
INSTANCE_NAMEpelo nome da instância a que você está se conectando.Na instância, execute
ntpq -ppara verificar o estado atual da configuração do NTP:$ ntpq -pA saída fica mais ou menos assim:
remote refid st t when poll reach delay offset jitter ============================================================================== *metadata.google 255.28.23.83 2 u 27 64 1 0.634 -2.537 2.285 *217.162.232.173 130.149.17.8 2 u 191 1024 176 79.245 3.589 27.454
Quando há um único registro apontando para
metadata.googleoumetadata.google.internal, não é necessário fazer alterações. Se houver várias fontes, misturadas entre ometadata.googlee uma fonte pública comopool.ntp.org, será necessário atualizar as fontes para remover todos os servidores NTP externos.No exemplo de saída, há dois registros, um apontando para
metadata.googlee outro para um endereço externo. Como há várias fontes, é necessário atualizar os servidores NTP para remover o endereço*217.162.232.173, conforme descrito na próxima etapa.Configure os servidores NTP para remover as fontes externas.
Para configurar os servidores NTP, edite o arquivo
/etc/ntp.confno editor de texto de sua preferência. Encontre a seçãoserversda configuração e remova todas as fontes NTP que não sejam do Google, por exemplo:vim /etc/ntp.conf# You do need to talk to an NTP server or two (or three). #server ntp.your-provider.example ... server metadata.google.internal iburstDepois de editar o arquivo
/etc/ntp.conf, reinicie o serviço NTP. O comando para reiniciar pode variar conforme a distribuição do Linux:sudo service ntp reloadVerifique a configuração executando o comando
ntpq -pnovamente:ntpq -premote refid st t when poll reach delay offset jitter ============================================================================== *metadata.google 255.28.23.83 2 u 27 64 1 0.634 -2.537 2.285
Windows
Acesse a página Instâncias de VM no console do Cloud de Confiance .
Clique no botão RDP ao lado da instância do Windows a que você quer se conectar.
Depois de fazer login, clique com o botão direito do mouse no ícone do PowerShell e selecione Executar como administrador.
Quando o prompt de comando carregar, execute o seguinte comando para ver a configuração atual do NTP:
w32tm /query /configuration[Configuration] ... Type: NTP (Local) NtpServer: metadata.google.internal, ...
Quando há um único registro apontando para
metadata.googleoumetadata.google.internal, não é necessário fazer alterações. Quando há várias fontes, misturando ometadata.googlecom uma fonte pública, é necessário remover o servidor externo. Consulte o guia do Windows para configurar o servidor NTP.Para garantir a compatibilidade de software mais generalizada nas VMs do Windows, o Google recomenda que você use o driver gVNIC para garantir a precisão de NTP de submilissegundo com
metadata.google.Se você precisa usar o VirtIO com sua VM do Windows para ter precisão de submilissegundos com servidores NTP, o Google recomenda não usar o serviço de tempo do Windows (interrompa e cancele o registro
w32tm).Pare o Serviço de Tempo do Windows:
net stop w32timeRemova o Serviço de Tempo do Windows do registro:
w32tm /unregisterDepois que o Serviço de Tempo do Windows for interrompido e removido do registro, instale o cliente Meinberg NTP.
Siga as instruções de configuração conforme fornecido na documentação do Meinberg.
Configure o servidor NTP para o cliente NTP Meinberg como
metadata.google.internal.Depois de concluir a configuração do NTP, aguarde entre 5 e 15 minutos para que o relógio do sistema na VM se estabilize com o servidor NTP.
Para saber por que não recomendamos o uso de
w32tm, consulte a documentação de problemas conhecidos.
Usar o segundo bissexto distribuído com sistemas externos ao Cloud de Confiance by S3NS
O recurso leap smearing dos servidores NTP do Google é uma maneira conveniente de gerenciar o risco envolvido na repetição de um segundo nos sistemas afetados pelo tempo. Outros serviços NTP talvez ofereçam medidas alternativas aceitáveis para a maioria dos sistemas de software. No entanto, é importante que você não misture os serviços NTP de segundo bissexto distribuído do Google com os serviços de acompanhamento de NTP públicos.
Para sincronizar dispositivos fora do Cloud de Confiance by S3NS com o horário distribuído, use o NTP público do Google para esses dispositivos. O NTP público do Google usa a mesma distribuição de segundo bissexto fornecida às VMs do Compute Engine.
A seguir
- Saiba mais sobre a conformidade com o padrão de segurança de dados do PCI.
- Leia as Perguntas frequentes sobre NTP público do Google.