Configuração do NTP nos servidores Hyper-V

1

Estou tendo problemas com a configuração do NTP em nosso host e clientes do Hyper-V. Eu não estou usando o controlador de domínio (quase todos os conselhos são dados para DC que eu não estou usando).

Em todos os servidores, usei o relógio do Windows para configurar o nome do cliente ntp (clique com o botão direito, ajuste a data / hora, o horário da Internet, altere as configurações, digite o nome do servidor NTP).

Isso não parece funcionar. Ou melhor, todas as noites de segunda a 01:00, o tempo foi ajustado com força (causou todos os tipos de problemas, como um backup de banco de dados quebrado).

Eu mexi no w32tm (leia o status, config, tente cancelar o registro e registre-se novamente). Eu finalmente tenho w32tm / query / config para reconhecer que ele usou o servidor ntp:

Eu tive w32tm / query / source dizendo isso:

Relógio CMOS local time.windows.com, 0x9 (na verdade, um host diferente, mas não importa para este relatório) Relógio do sistema de corrida livre Provedor de Sincronização de Tempo do VM IC (somente para clientes do Hyper-V)

Eu finalmente tive o relatório w32tm "time.windows.com, 0x9" mas depois ele foi automaticamente alterado para "Free-running System Clock". Eu não tenho ideia do porquê. Eu assumo que o free-running não é o que eu quero.

Acho que estou completamente perdido em relação à configuração de horário no host e no cliente do Hyper-V e realmente preciso de ajuda. Eu encontrei alguns guias, mas eles se contradizem (ou apenas falam sobre as configurações do controlador de domínio).

O w32tm em um cliente Hyper-V tem a dizer sobre a configuração:

C:\Windows\system32>w32tm /query /configuration
[Configuration]

EventLogFlags: 2 (Local)
AnnounceFlags: 10 (Local)
TimeJumpAuditOffset: 28800 (Local)
MinPollInterval: 10 (Local)
MaxPollInterval: 15 (Local)
MaxNegPhaseCorrection: 54000 (Local)
MaxPosPhaseCorrection: 54000 (Local)
MaxAllowedPhaseOffset: 1 (Local)

FrequencyCorrectRate: 4 (Local)
PollAdjustFactor: 5 (Local)
LargePhaseOffset: 50000000 (Local)
SpikeWatchPeriod: 900 (Local)
LocalClockDispersion: 10 (Local)
HoldPeriod: 5 (Local)
PhaseCorrectRate: 1 (Local)
UpdateInterval: 360000 (Local)


[TimeProviders]

NtpClient (Local)
DllName: C:\Windows\system32\w32time.DLL (Local)
Enabled: 1 (Local)
InputProvider: 1 (Local)
AllowNonstandardModeCombinations: 1 (Local)
ResolvePeerBackoffMinutes: 15 (Local)
ResolvePeerBackoffMaxTimes: 7 (Local)
CompatibilityFlags: 2147483648 (Local)
EventLogFlags: 1 (Local)
LargeSampleSkew: 3 (Local)
SpecialPollInterval: 604800 (Local)
Type: NTP (Local)
NtpServer: time.windows.com,0x9 (Local)

VMICTimeProvider (Local)
DllName: C:\Windows\System32\vmictimeprovider.dll (Local)
Enabled: 1 (Local)
InputProvider: 1 (Local)
NtpServer (Local)
DllName: C:\Windows\system32\w32time.DLL (Local)
Enabled: 0 (Local)
InputProvider: 0 (Local)

A configuração acima resulta em "Free-running System Clock", que eu acho estranho dizer o mínimo.

O Horário do Windows e o Serviço de Sincronização de Horários do Hyper-V estão sendo executados.

Não há políticas de grupo que segmentem o serviço de horário em vigor.

Sugestões sobre como corrigir esse problema?

    
por galmok 14.02.2013 / 16:46

2 respostas

3

Isso foi o que acabei fazendo e o que eu suponho ser bom:

O host Hyper-V (servidor físico) está configurado para sincronizar com uma seleção de servidores de tempo e cada convidado do Hyper-V está configurado para sincronizar somente com o host. As alterações abaixo são diferenças do padrão.

Configuração do host

Primeiro pare o serviço de tempo com:

net stop w32time

Alterações no registro (base HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\ ):

  • w32time\Config\AnnounceFlags = 10
  • w32time\Parameters\NtpServers = 0.dk.pool.ntp.org,0x1 1.dk.pool.ntp.org,0x1 2.dk.pool.ntp.org,0x1 3.dk.pool.ntp.org,0x1
  • w32time\TimeProviders\NtpClient\SpecialPollInterval = 900 (15 minutos)
  • w32time\TimeProviders\NtpServer\Enabled = 1

Alguns usam AnnounceFlags = 5, mas a correlação com um controlador de domínio (que não é configurado nesse caso) faz com que o servidor ntp não se anuncie (observação; não é fato), portanto, AnnounceFlags é definido como 10 (mais informações sobre AnniversaryFlags)

0x1 nos ntpservers = use o intervalo de sondagem especial (em vez dos intervalos padrão de sondagem ntp). (mais em 0x1, 0x2, 0x4 e 0x8) . O uso de SpecialPollInterval não é obrigatório, mas parece ser recomendado (talvez principalmente para convidados e não tanto para hosts). Se você decidir não usar SpecialPollInterval, terá que limitar MinPollInterval e MaxPollInterval. Seus padrões são 10 (1024 segundos) e 15 (32768 segundos); Sugiro 6 (64 segundos) e 10 (1024 segundos)).

Verifique se o serviço de horário é iniciado quando o servidor tem conexão de rede:

sc triggerinfo w32time start/networkon stop/networkoff

O padrão é iniciar (e parar) o serviço de horário com o controlador de domínio (que não está presente nessa configuração). Esquecer este passo irá parar o seu servidor de tempo em cada arranque (pouco depois de ser iniciado automaticamente). Este problema foi difícil de acompanhar.

E inicie o serviço novamente:

net start w32time

Agora, o host pesquisará um dos servidores de horário ntp a cada 15 minutos e oferecerá um servidor ntp para outros clientes. Tenho o udp: 123 com firewall para garantir que apenas os convidados sejam permitidos.

O servidor pode levar até 15 minutos (SpecialPollInterval) até anunciar seus recursos como um servidor de horário confiável para o mundo (convidados). Isso significa que os convidados podem correr livremente por 15-20 minutos após o início do serviço.

Configuração de convidado

Os convidados se deslocam muito mais do que o host (e também são comparados entre si) e exigem um intervalo de pesquisa relativamente curto. Devido a isso, usar servidores ntp remotos não é o ideal, e como temos um servidor ntp confiável à mão (apenas configurado), vamos usar isso (e somente isso). Os convidados podem acessar o host usando uma rede virtual.

Verifique se o serviço de Integração de Horário do Hyper-V está instalado e em execução. Com essa configuração, ela será usada quando o servidor virtual for inicializado, mas também ao sair do salvamento. Não será usado como fonte de tempo.

Pare o serviço de horário com:

net stop w32time

Faça as alterações necessárias no registro (base HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\ ):

  • w32time\Config\AnnounceFlags = 10
  • w32time\Parameters\NtpServers = 192.168.0.100,0x9
  • w32time\TimeProviders\NtpClient\SpecialPollInterval = 300 (5 minutos)
  • w32time\TimeProviders\NtpServer\Enabled = 0
  • w32time\TimeProviders\VMICTimeProvider\Enabled = 0

Verifique se o serviço de horário é iniciado quando o servidor tem conexão de rede:

sc triggerinfo w32time start/networkon stop/networkoff

E inicie o serviço novamente:

net start w32time

Conclusão

Com esta configuração, o tempo deve estar em bom controle tanto no host quanto nos convidados.

    
por 04.04.2013 / 15:29
0

Você tem duas opções para convidados hyper-v - habilite a sincronização de horário e sincronize com o host (que por sua vez pode sincronizar com um servidor ntp), ou peça a cada convidado diretamente para o NTP.

Para sincronizar com o host, acesse o gerenciador do Hyper-V, em Serviços de Integração, verifique se a sincronização de horário está marcada. Verifique se os serviços de integração de convidados estão instalados (possivelmente os remova e reinstale-os neste momento) e redefinir w32time

A Microsoft não recomenda desativar a sincronização de horário, mas isso pode estar causando seus problemas. Por isso, experimente. Vá para o gerenciador do Hyper-V e desative a Sincronização de horário. Em seguida, configure o w32time como faria com qualquer host físico independente. Mais uma vez, depois de tudo, provavelmente é melhor redefinir o w32time primeiro.

O blog da Microsoft uma descrição bastante boa de como a sincronização de horário funciona no hyper-v. Eu daria uma lida se você ainda não tivesse

    
por 14.02.2013 / 17:03