Muitos sistemas de software que dependem de um sequenciamento cuidadoso de eventos dependem de um relógio de sistema estável e consistente. Os logs do sistema gravados pela maioria dos serviços incluem um carimbo de data/hora, que ajuda a depurar problemas que ocorrem entre vários componentes do seu sistema. Para ajudar a manter os relógios do sistema sincronizados, as instâncias do Compute Engine são pré-configuradas para usar o Network Time Protocol (NTP).
Além de manter o horário do servidor sincronizado, o NTP é útil no raro caso de um segundo bissexto. Um segundo bissexto é um ajuste de um segundo feito no horário UTC para levar em conta as mudanças na rotação da Terra. Os segundos bissextos não acontecem em intervalos rotineiros, porque a velocidade de rotação da Terra varia irregularmente em resposta a eventos climáticos e geológicos. Os segundos bissextos anteriores impactaram visivelmente uma variedade de serviços e aplicativos na web. Os servidores NTP ajudam a garantir que todos os servidores relatem o mesmo horário durante o evento de um segundo bissexto.
Este documento descreve como configurar servidores NTP em suas máquinas virtuais (VMs) para se comportarem corretamente no caso de um segundo bissexto.
Servidores NTP do Google e manchas de salto
Os segundos bissextos para um sistema operacional Unix são comumente implementados repetindo o último segundo do dia. Isso pode causar problemas com software que espera que os carimbos de data/hora aumentem apenas. Para contornar esse problema, os servidores de horário em Google Cloud" manchar " o segundo extra ao longo de vinte e quatro horas — doze antes e doze depois do evento do segundo bissexto — para que os computadores não vejam o segundo extra de uma só vez como um carimbo de data/hora repetido. Isso reduz o risco em sistemas que dependem de um carimbo de data/hora consistente. É recomendado que todas as instâncias de máquina virtual (VM) do Compute Engine sejam configuradas para usar os serviços internos do Google NTP.
Configure o NTP para suas instâncias
Google Cloud não é possível prever como os serviços NTP externos, como pool.ntp.org
, lidarão com o segundo bissexto. Se possível, é recomendável não usar fontes NTP externas com VMs do Compute Engine. Pior ainda, usar o serviço NTP do Google e um serviço externo pode resultar em mudanças imprevisíveis na hora do sistema. Usar apenas uma única fonte NTP externa é preferível a usar uma combinação, mas os serviços NTP externos, como pool.ntp.org
, provavelmente usarão etapas para lidar com o segundo bissexto. Como resultado, suas VMs poderão ver um carimbo de data/hora repetido.
A abordagem mais segura é configurar suas VMs do Compute Engine para usar um único servidor NTP, o servidor NTP interno fornecido pelo Google. Não misture servidores NTP externos e servidores NTP do Google, pois isso pode resultar em comportamento inesperado. Para obter mais informações sobre o servidor NTP interno fornecido pelo Google, consulte as Perguntas frequentes sobre NTP público do Google .
Para garantir que suas VMs estejam configuradas corretamente, siga estas instruções.
Linux (cronia)
Por padrão, a maioria das novas versões do Linux usa chrony
para gerenciar suas configurações de NTP e sincronização de horário. Para garantir que chrony
use apenas o serviço NTP interno, verifique a configuração chrony
e remova os servidores NTP externos.
Use
ssh
para se conectar à sua instância.Console
Para usar o console para se conectar à VM usando SSH, siga estas etapas:
Acesse a página de instâncias de VM no console do Google Cloud.
Clique no botão SSH da VM que você deseja configurar.
gcloud
Para usar a CLI do Google Cloud para se conectar à VM usando SSH, execute o seguinte comando:
gcloud compute instances ssh VM_NAME
Substitua
VM_NAME
pelo nome da VM à qual você está se conectando.Na sua instância, execute
chronyc sources
para verificar o estado atual da sua configuração NTP:$ chronyc sources
A saída é semelhante a esta:
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
Se você vir um único registro apontando para
metadata.google
oumetadata.google.internal
, não será necessário fazer nenhuma alteração. Se você vir várias fontes, misturadas entremetadata.google
e uma fonte pública comopool.ntp.org
, atualize suas fontes para remover quaisquer servidores NTP externos.Na saída do exemplo, há dois registros, um apontando para
metadata.google.internal
e outro apontando para um endereço externo. Como existem diversas fontes, você atualizaria seus servidores NTP para remover o endereço38.229.53.9
, conforme descrito na próxima etapa.Configure seus servidores NTP para remover servidores NTP externos.
Para remover o servidor NTP adicional da lista, edite o arquivo
/etc/chrony/chrony.conf
usando seu editor de texto favorito. Encontre todas as linhas que começam comserver external_source_ip_or_name
e remova-as.Após editar seu arquivo
/etc/chrony/chrony.conf
, reinicie o serviçochrony
. O comando para reiniciar pode variar dependendo da distribuição Linux, conforme mostrado nos exemplos a seguir:sudo service chrony restart
sudo systemctl restart chrony
Verifique sua configuração executando o comando
chronyc sources
novamente:$ chronyc sources
A saída deve ser semelhante a 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 suas configurações de NTP e sincronização de horário. Para garantir que ntpd
use apenas o serviço NTP interno, verifique a configuração ntpd
e remova os servidores NTP externos.
Use
ssh
para se conectar à sua instância.Console
Para usar o console para se conectar à VM usando SSH, siga estas etapas:
Acesse a página de instâncias de VM no console do Google Cloud.
Clique no botão SSH da VM que você deseja configurar.
gcloud
Para usar a CLI do Google Cloud para se conectar à VM usando SSH, execute o seguinte comando:
gcloud compute instances ssh VM_NAME
Substitua
VM_NAME
pelo nome da VM à qual você está se conectando.Na sua instância, execute
ntpq -p
para verificar o estado atual da sua configuração NTP:$ ntpq -p
A saída é semelhante à seguinte:
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
Se você vir um único registro apontando para
metadata.google
oumetadata.google.internal
, não será necessário fazer nenhuma alteração. Se você vir várias fontes, misturadas entremetadata.google
e uma fonte pública comopool.ntp.org
, será necessário atualizar suas fontes para remover quaisquer servidores NTP externos.Na saída do exemplo, há dois registros, um apontando para
metadata.google
e outro apontando para um endereço externo. Como existem diversas fontes, você precisará atualizar seus servidores NTP para remover o endereço*217.162.232.173
, conforme descrito na próxima etapa.Configure seus servidores NTP para remover fontes externas.
Para configurar seus servidores NTP, edite o arquivo
/etc/ntp.conf
usando seu editor de texto favorito. Encontre a seção deservers
da 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 iburst
Após editar seu arquivo
/etc/ntp.conf
, reinicie o serviço NTP. O comando para reiniciar pode variar de acordo com a distribuição Linux:sudo service ntp reload
Verifique sua configuração executando o comando
ntpq -p
novamente:ntpq -p
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
Windows
Acesse a página de instâncias de VM no console do Google Cloud.
Clique no botão RDP próximo à instância do Windows à qual você deseja se conectar.
Depois de fazer login, clique com o botão direito no ícone do PowerShell e selecione Executar como administrador .
Quando o prompt de comando for carregado, execute o seguinte comando para ver a configuração NTP atual:
w32tm /query /configuration
[Configuration] ... Type: NTP (Local) NtpServer: metadata.google.internal, ...
Se você vir um único registro apontando para
metadata.google
oumetadata.google.internal
, não será necessário fazer nenhuma alteração. Se você vir várias fontes, misturadas entremetadata.google
e uma fonte pública, será necessário remover o servidor externo. Siga o guia do Windows para configurar seu servidor NTP.Para garantir a compatibilidade de software mais difundida em VMs do Windows, o Google recomenda que você use o driver gVNIC para garantir uma precisão NTP inferior a um milissegundo com
metadata.google
.Se você precisar usar o VirtIO com sua VM do Windows, para obter precisão de menos de um milissegundo com servidores NTP, o Google recomenda que você não use o Windows Time Service (pare e cancele o registro
w32tm
).Pare o serviço de horário do Windows:
net stop w32time
Remova o serviço de horário do Windows do registro:
w32tm /unregister
Depois que o Windows Time Service for interrompido e removido do registro, instale o cliente Meinberg NTP .
Siga as instruções de configuração fornecidas na documentação do Meinberg.
Configure o servidor NTP para o cliente Meinberg NTP como
metadata.google.internal
.Após terminar de configurar o NTP, aguarde entre 5 e 15 minutos para que o relógio do sistema na VM se estabilize com o servidor NTP.
Para obter informações sobre por que o uso do w32tm não é recomendado, consulte a documentação de problemas conhecidos .
Usando a mancha de salto com sistemas externos ao Google Cloud
O recurso de dispersão de saltos dos servidores NTP do Google é uma maneira conveniente de gerenciar o risco envolvido na repetição de um segundo em sistemas sensíveis ao tempo. Outros serviços NTP podem fornecer uma solução alternativa aceitável para a maioria dos sistemas de software. No entanto, é importante que você não misture os serviços NTP de difamação do Google com os serviços públicos de revisão NTP.
Para sincronizar dispositivos externos Google Cloud para diminuir o tempo, você pode usar o Google Public NTP para esses dispositivos. O NTP público do Google usa a mesma mancha de segundo bissexto fornecida às VMs do Compute Engine.
O que vem a seguir
- Saiba mais sobre a conformidade com o padrão de segurança de dados PCI .
- Revise as perguntas frequentes do NTP público do Google .