Sincronização de Data/Hora para VMs do Windows no Azure

Aplica-se a: ✔️ VMs do Windows ✔️ Conjuntos de dimensionamento flexíveis ✔️ Conjuntos de dimensionamento uniformes

A sincronização de Data/Hora é importante para segurança e correlação de eventos. Às vezes, é usada para implementação de transações distribuídas. A precisão da hora entre vários sistemas de computador é obtida por meio da sincronização. A sincronização pode ser afetada por vários motivos, incluindo reinicializações e tráfego entre a fonte de tempo e o computador buscando a hora.

O Azure agora é apoiado pela infraestrutura que executa o Windows Server 2016. O Windows Server 2016 aprimorou os algoritmos usados para corrigir a hora e condicionar o relógio local a sincronizar com o UTC. O Windows Server 2016 também aprimorou o serviço VMICTimeSync, que determina como as VMs são sincronizadas com o host para uma hora precisa. Os aprimoramentos incluem um tempo inicial mais preciso no início da VM ou na restauração da VM e interrupção da correção de latência para exemplos fornecidos para o Horário do Windows (W32Time).

Observação

Para obter uma visão geral rápida do Serviço de Horário do Windows, assista a este vídeo de visão geral de alto nível.

Para obter mais informações, consulte Hora precisa para Windows Server 2016.

Visão geral

A precisão de um relógio de computador é medida na proximidade do relógio do computador com o padrão de hora UTC (Tempo Universal Coordenado). O UTC é definido por uma amostra multinacional de relógios atômicos precisos que só pode ser desligada em um segundo em 300 anos. Mas ler o UTC diretamente requer um hardware especializado. Em vez disso, os servidores de horário são sincronizados com o UTC e acessados de outros computadores para fornecer escalabilidade e robustez. Todo computador tem o serviço de sincronização de tempo em execução que sabe a que horas os servidores devem ser usados e verifica periodicamente se o relógio do computador precisa ser corrigido e ajusta o tempo, se necessário.

Os hosts do Azure são sincronizados para servidores de horário internos da Microsoft que usam dispositivos da Microsoft da Stratum 1, com antenas de GPS. As máquinas virtuais no Azure podem depender do host para passar a hora exata (hora do host) para a VM ou a VM pode obter a hora diretamente de um servidor de horário ou uma combinação de ambos.

As interações da máquina virtual com o host também podem afetar o relógio. Durante a manutenção de memória preservando a manutenção, as VMs são pausadas por até 30 segundos. Por exemplo, antes de iniciar a manutenção, o relógio da VM exibe as 10:00:00 e dura 28 segundos. Depois que a VM for retomada, o relógio na VM ainda mostrará 10:00:00 AM, o que seria 28 segundos de folga. Para corrigir isso, o serviço VMICTimeSync monitora o que está acontecendo no host e solicita que as alterações ocorram nas VMs para compensar.

O serviço VMICTimeSync opera no modo de amostra ou de sincronização e só influenciará o relógio para frente. No modo de amostra, que requer a execução do W32time, o serviço VMICTimeSync pesquisa o host a cada 5 segundos e fornece amostras de tempo para o W32time. Aproximadamente a cada 30 segundos, o serviço W32time pega a última amostra de tempo e a utiliza para influenciar o relógio do hóspede. O modo de sincronização é ativado se um convidado for retomado ou se o relógio de um visitante se deslocar mais de 5 segundos após o relógio do host. Nos casos em que o serviço W32time está sendo executado corretamente, o último caso nunca deve acontecer.

Sem a sincronização de data/hora, o relógio na VM acumularia erros. Quando há apenas uma VM, o efeito pode não ser significativo, a menos que a carga de trabalho exija uma cronometragem altamente precisa. Mas na maioria dos casos, temos várias VMs interconectadas que usam o tempo para rastrear transações, e a hora precisa ser consistente durante toda a implantação. Quando a hora entre as VMs for diferente, você poderá ver os seguintes efeitos:

  • A autenticação falhará. Protocolos de segurança como Kerberos ou tecnologia dependente de certificado requerem que a hora esteja consistente em todos os sistemas.
  • É muito difícil descobrir o que aconteceu em um sistema se os logs (ou outros dados) não corresponderem com a hora. O mesmo evento poderia parecer que ocorreu em momentos diferentes, dificultando a correlação.
  • Se o relógio estiver desligado, a cobrança poderá ser calculada incorretamente.

Os melhores resultados para implantações do Windows são obtidos usando o Windows Server 2016 como o sistema operacional convidado, o que garante que você possa usar os últimos aprimoramentos na sincronização de data/hora.

Opções de configuração

Há três opções para configurar a sincronização de data/hora nas VMs do Windows hospedadas no Azure:

Usar o padrão

Por padrão, as imagens de VM do Sistema Operacional do Windows são configuradas para que o w32time sincronize a partir de duas origens:

  • O provedor NtpClient, que obtém informações de time.windows.com.
  • O serviço VMICTimeSync, usado para comunicar a hora do host para as VMs e fazer correções após a VM ser pausada para manutenção. Os hosts do Azure usam dispositivos Stratum 1 da Microsoft para manter a hora exata.

O w32time preferiria o provedor de horário na seguinte ordem de prioridade: nível de camada, atraso de raiz, dispersão de raiz, diferença de horário. Na maioria dos casos, o W32time em uma VM do Azure prefere o tempo de host devido à avaliação que ele faria para comparar ambas as fontes de tempo.

Para máquinas ingressadas no domínio, o domínio em si estabelece a hierarquia de sincronização de data/hora, mas a raiz da floresta ainda exigiria tempo de algum lugar e as seguintes considerações ainda seriam verdadeiras.

Somente do host

Como o time.windows.com é um servidor NTP público, o tempo de sincronização com ele requer o envio de tráfego pela Internet, os atrasos de pacotes variados podem afetar negativamente a qualidade da sincronização de tempo. A remoção de time.windows.com alternando para sincronização somente de host pode às vezes melhorar o tempo de sincronização dos resultados.

Alternar para a sincronização de data/hora somente do host será viável se você tiver problemas de sincronização de data/hora usando a configuração padrão. Experimente a sincronização somente do host para ver se melhoraria a sincronização de data/hora na VM.

Servidor de horário externo

Se você tiver requisitos específicos de sincronização de data/hora, também haverá uma opção de usar servidores de horário externos. Servidores de horário externos podem fornecer hora específica, o que pode ser útil para cenários de teste, garantindo uniformidade de hora com máquinas hospedadas em datacenters que não sejam da Microsoft ou lidando com segundos bissextos de uma maneira especial.

É possível combinar servidores externos com o serviço VMICTimeSync e o VMICTimeProvider para fornecer resultados semelhantes à configuração padrão.

Verificar a configuração

Verifique se o provedor de horário NtpClient está configurado para usar servidores NTP explícitos (NTP) ou sincronização de data/hora de domínio (NT5DS).

w32tm /dumpreg /subkey:Parameters | findstr /i "type"

Se a VM estiver usando NTP, você verá a seguinte saída:

Value Name                 Value Type          Value Data
Type                       REG_SZ              NTP

Para ver o servidor de horário que o provedor de horário NtpClient está usando, em um prompt de comando com privilégios elevados digite:

w32tm /dumpreg /subkey:Parameters | findstr /i "ntpserver"

Se a VM estiver usando o padrão, a saída será semelhante a:

NtpServer                  REG_SZ              time.windows.com,0x8

Para ver qual provedor de horário está sendo usado atualmente.

w32tm /query /source

Aqui está a saída que você pode ver e o que significaria:

  • time.windows.com - na configuração padrão, w32time obteria a hora do time.windows.com. A qualidade da sincronização de data/hora depende da conectividade com a Internet e é afetada por atrasos de pacotes. Essa é a saída usual que você obteria em um computador físico.
  • Provedor de sincronização de hora da IC da VM – a VM está sincronizando a hora do host. Essa é a saída usual que você obteria em uma máquina virtual em execução no Azure.
  • Seu servidor de domínio - a máquina atual está em um domínio e o domínio define a hierarquia de sincronização de data/hora.
  • Algum outro servidor - O w32time foi explicitamente configurado para obter a hora desse outro servidor. A qualidade da sincronização de data/hora depende dessa qualidade do servidor de horário.
  • Relógio CMOS local - relógio não está sincronizado. É possível obter essa saída se o w32time não tiver tido tempo suficiente para iniciar após um reinício ou quando todas as fontes de tempo configuradas não estiverem disponíveis.

Aceitar a sincronização de hora somente do host

O Azure está constantemente trabalhando para melhorar a sincronização de data/hora nos hosts e pode garantir que toda a infraestrutura de sincronização de data/hora seja colocada em datacenters de propriedade da Microsoft. Se você tiver problemas de sincronização de hora com a configuração padrão que prefere usar time.windows.com como a fonte de hora principal, poderá usar os comandos a seguir para aceitar a sincronização de hora somente do host.

Marque o provedor VMIC como habilitado.

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\VMICTimeProvider /v Enabled /t REG_DWORD /d 1 /f

Marque o provedor NTPClient como desabilitado.

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProviders\NtpClient /v Enabled /t REG_DWORD /d 0 /f

Reinicie o serviço w32time.

net stop w32time && net start w32time

VMs do Windows Server 2012 e R2

O Windows Server 2012 e o Windows Server 2012 R2 têm configurações padrão diferentes para a sincronização de hora. O W32Time, por padrão, é configurado de maneira que prefere uma baixa sobrecarga do serviço à hora precisa.

Se você quiser mover as implantações do Windows Server 2012 e 2012 R2 para usar os padrões mais recentes que preferem hora precisa, aplique as configurações a seguir.

Atualize a pesquisa do w32time e atualize os intervalos para que correspondam às configurações do Windows Server 2016.

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config /v MinPollInterval /t REG_DWORD /d 6 /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config /v MaxPollInterval /t REG_DWORD /d 10 /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Config /v UpdateInterval /t REG_DWORD /d 100 /f
w32tm /config /update

Para que w32time possa usar os novos intervalos de sondagem, NtpServers precisam ser marcados como usando-os. Se os servidores forem anotados com máscara de bitflag 0x1, isso substituiria esse mecanismo e w32time usaria SpecialPollInterval. Certifique-se de que os servidores NTP especificados estejam usando o sinalizador 0x8 ou nenhum sinalizador:

Verifique quais sinalizadores estão sendo usados para os servidores NTP.

w32tm /dumpreg /subkey:Parameters | findstr /i "ntpserver"

Próximas etapas

Abaixo, são apresentados links para mais detalhes sobre a sincronização de data/hora: