Como sincronizar o tempo nas máquinas virtuais do ESXi Windows em um segundo?

12

Sou desenvolvedor e estamos usando o Quartz.Net, biblioteca de agendamento amplamente usada com armazenamento de backup SQL para executar servidores de cluster de trabalhos (VMs no cluster ESXI).

O Quartz.Net exige que o tempo seja sincronizado entre as instâncias do servidor de trabalho e recomenda o uso do NTP.

Os relógios devem estar dentro de um segundo um do outro.

Nossos administradores de sistema usando o Windows NTP para sincronizar o tempo com o controlador de domínio. A sincronização de VMs com o host ESXI está desativada.

Eles continuam insistindo que "dentro de um segundo" não é um requisito correto e que não pode ser atendido sem dispositivos de sincronização GPS de hardware. Seu nível de SLA e monitoramento é "dentro de 3 minutos".

Estamos enfrentando um comportamento fora de sincronia periódico (uma vez a cada dois meses), de quartzo, consistente com o tempo fora de sincronia.

  1. É correto pedirmos "dentro de um segundo" ou precisamos abandonar inteiramente o quartzo?
  2. Se sim, quais alterações são recomendadas para a nossa configuração?
Leotsarev
fonte
11
Sincronizar com um segundo não é nada , mesmo em servidores virtuais (que possuem notoriamente baixa estabilidade de tempo por conta própria). Três minutos?! Rindo. Você não pode executar uma rede dessa maneira.
Lightness Races com Monica

Respostas:

20

Isso é 2018. O Windows é capaz de manter os servidores sincronizados em até 2 ms, conforme exigido pelos regulamentos do MIFID II. Portanto, seu problema não é um problema.

Nossos administradores de sistema usando o Windows NTP para sincronizar o tempo com o controlador de domínio. A sincronização de VMs com o host ESXI está desativada.

Por quê? O host pode lidar com isso muito melhor (sendo hardware) e você tem muito menos. Seus administradores de sistemas se atiram no pé e depois reclamam que estão sangrando.

Eles continuam insistindo que "dentro de um segundo" não é um requisito correto e que não pode ser atendido sem dispositivos de sincronização GPS de hardware. Seu nível de SLA e monitoramento é "dentro de 3 minutos".

ANTIGO - antigo - Windows sincronizado nesse período de tempo porque os tíquetes Kerberos tinham validade de 5 minutos.

Mas isso é, como eu disse, 2018. Atualmente, o setor financeiro tem requisitos bastante brutais e a MS administra isso desde 2012, eu acho. 2016 colocou totalmente em vigor. A precisão de milissegundos na Internet é um problema resolvido - resolvido há 50 anos, na verdade, para uma conexão decente. NTP pode lidar com isso. Pode ser necessário instalar uma caixa de hardware barata se você quiser reduzir o tráfego (por exemplo, criar sua própria fonte de tempo NTP de nível 3), mas isso nem sempre é caro.

É correto pedirmos "dentro de um segundo" ou precisamos abandonar inteiramente o quartzo?

Você precisa programar para problemas de tempo ocasionais - como faria com o hardware. Mas "dentro de um segundo" é uma piada de um requisito - é trivial atender em circunstâncias normais.

Algumas referências:

https://docs.microsoft.com/en-us/windows-server/networking/windows-time-service/accurate-time

Regulamentos governamentais como: precisão de 50 ms para FINRA nos EUA 1 ms ESMA (MiFID II) na UE.

Muitos detalhes e instruções lá. Esta é uma leitura incrível, na verdade, se você precisar resolver esse problema. Pode ser necessário atualizar seu hypervisor - eles falam sobre o Hyper-V. O VMWare deve poder fazer o mesmo, mas não sabe quantos anos sua versão tem.

TomTom
fonte
FWIW, a conformidade com o MiFID II no setor financeiro do [Reino Unido] é chocantemente pobre (os bancos preferem pagar as insignificantes multas do que se preocupar com todo esse hoo-har), mas você está tecnicamente certo, é claro.
Lightness Races com Monica
Não se trata de conformidade, trata-se da HABILIDADE de ser compatível. MS resolveu isso há muito tempo. Como tal, o "minuto 3 exato" que o OP fala sobre piada de área.
TomTom
Concordo; isso foi apenas um aparte.
Lightness Races com Monica
2
Estou convosco de que o NTP é mais do que rápido o suficiente, mas a VMware não recomenda o uso de serviços de integração para sincronizar o tempo, na maioria dos casos (embora não todos) o NTP comum faz um trabalho melhor e mais rápido.
HoD
Como sua preocupação é com o tempo relativo entre os servidores, você pode usar o NTP para sincronizá-los com os comutadores de rede que, por sua vez, são sincronizados com o seu ISP - sem necessidade de hardware extra.
grahamj42
6

É correto pedirmos "dentro de um segundo" ou precisamos abandonar inteiramente o quartzo?

Existem muitas razões muito boas para várias pilhas de aplicativos precisarem de controle de tempo apertado e o que o Quartz está solicitando está longe de ser incomum.

Se sim, quais alterações são recomendadas para a nossa configuração?

A melhor aposta é fazer com que cada parte do seu sistema use o NTP e aponte-o para o mesmo par de servidores NTP. Portanto, o ESXi hospeda e as VMs em execução neles, todos usando as mesmas fontes NTP, iguais para qualquer outra coisa envolvida. Dessa forma, mesmo que os servidores NTP estejam "fora do horário", pelo menos todas as partes do seu sistema estarão atualizadas.

Chopper3
fonte
4

https://docs.microsoft.com/en-us/windows-server/networking/windows-time-service/support-boundary

Suporte de alta precisão para Windows 8.1 e 2012 R2 (ou anterior)

As versões anteriores do Windows (anteriores ao Windows 10 1607 ou Windows Server 2016 1607) não podem garantir um tempo altamente preciso. O serviço Windows Time nesses sistemas:

  • Forneceu a precisão do tempo necessário para atender aos requisitos de autenticação Kerberos versão 5

  • Forneceu um tempo pouco preciso para clientes e servidores Windows ingressarem em uma floresta comum do Active Directory

Os requisitos de precisão mais rígidos estavam fora da especificação de design do Windows Time Service nesses sistemas operacionais e não são suportados.

Windows 10 e Windows Server 2016

A precisão do tempo no Windows 10 e no Windows Server 2016 foi substancialmente aprimorada, mantendo a compatibilidade total com NTP com versões anteriores do Windows. Sob as condições operacionais corretas, os sistemas que executam o Windows 10 ou o Windows Server 2016 e as versões mais recentes podem fornecer precisão de 1 segundo, 50ms (milissegundos) ou 1ms.

Precisão alvo: 1 segundo (1s)

Para alcançar a precisão de 1s para uma máquina de destino específica quando comparado a uma fonte de tempo altamente precisa:

  • O sistema de destino deve executar o Windows 10, Windows Server 2016.

  • O sistema de destino deve sincronizar o tempo a partir de uma hierarquia NTP de servidores de horário, culminando em uma fonte de tempo NTP altamente precisa e compatível com o Windows.

  • Todos os sistemas operacionais Windows na hierarquia NTP mencionados acima devem ser configurados conforme documentado na documentação Configurando sistemas para alta precisão.

  • A latência cumulativa da rede unidirecional entre o destino e a origem não deve exceder 100 ms. O atraso acumulado da rede é medido adicionando-se os atrasos unidirecionais individuais entre pares de nós cliente-servidor NTP na hierarquia, começando com o destino e terminando na origem. Para mais informações, consulte o documento de sincronização de tempo de alta precisão.

https://docs.microsoft.com/en-us/windows-server/networking/windows-time-service/configuring-systems-for-high-accuracy

Greg Askew
fonte
Na verdade, estamos usando o Windows 2012R2. Parece que é raiz do problema (juntamente com não-sincronização com o hospedeiro ESXi)
Leotsarev
1
@ Leotsarev: se estes são membros do domínio, eles não devem sincronizar com o host da VM.
Greg Askew