Sincronização de tempo do Hyper-V para o controlador de domínio da VM

13

Temos dois servidores físicos hyper-V executando 8 VMs entre eles, cada servidor físico possui um controlador de domínio em execução em uma VM e todos os servidores são 2008R2

O VM PDC é definido como NTP e sincronizado com time.microsoft.com e o restante, incluindo os servidores físicos, é NT5DS. Esse PDC principal da VM definitivamente contém o FSMO e o UDP 123 está ativo

quando executo w32tm / query / status

Estou recebendo o VM IC Time Synchronization Provider nos dois VMs, sei que isso significa sincronizar com o host.

Quando executo w32tm / resync / redescoberto

Eu recebi "não ressincronizei porque não havia dados de tempo disponíveis" e um ID de evento 134 nos logs tem alguma idéia sobre isso?

Eu também olhei através dos logs e tenho o evento 144 e 12

Segui os detalhes do MS KB sobre como configurar uma fonte de tempo externa e fiz todas as alterações no registro, mas acho que o DNS está me afetando?

Mas quando eu mudo o horário em uma das máquinas físicas, é aí que o horário está sendo definido. Talvez se eu cancelar o registro de todos e registrar, atualizar e sincronizar, mas tenho medo de criar um problema maior!

Estou tentando deixar a sincronização de tempo entre a VM e o host Hyper-V ativada, pois acredito que essa seja a melhor prática do que li.

Obrigado pela ajuda



Finalmente consegui funcionar! O objetivo disso é ajudar as pessoas que estão começando no início da definição do horário de um domínio.

Neste exemplo, todos os servidores, controlador de domínio primário (PDC), outros controladores de domínio (DC) e outros servidores estão executando o Windows 2008 R2 e são virtualizados com o Hyper-V.

Primeiramente, você lerá para desativar o 'Serviço de Integração de Sincronização de Tempo' em qualquer máquina virtual dentro do Hyper-V; em vez disso, você deve manipular o Serviço de Tempo do Windows (serviço w32tm) a partir do controlador de domínio virtual, não deve desativá-lo porque quando um A VM reinicia, isso causa problemas; isso deve ser feito com o w32tm. http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/11/19/time-synchronization-in-hyper-v.aspx

Você precisará descobrir qual servidor é o PDC e as funções FSMO em execução. Execute isto: netdom query fsmo O resultado deve ser seu PDC e é aqui que você faz a maioria das alterações.

Verifique se no firewall existe uma regra de "Saída" no UDP123 e se o programa é% SystemRoot% \ System32 \ w32tm.exe, basta procurar o diretório do Windows e encontrar o exe por tempo.

É aqui que as alterações no registro diminuem! HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ W32Time

Verifique se o PDC sob configuração no endereço de registro acima está definido como NTP para "tipo" e todos os outros servidores são NT5DS, isso significa que NTP é o pai! A melhor prática aqui é fazer com que o PDC procure externamente o tempo e tudo sincronize com ele.

Execute isso em todos os controladores de domínio (incluindo o PDC); ele desativará parcialmente o tempo do Windows para que não olhe para a máquina host por algum tempo, importante porque estamos virtualizados. reg add HKLM \ SYSTEM \ CurrentControlSet \ Services \ W32Time \ TimeProviders \ VMICTimeProvider / v Ativado / t reg_dword / d 0

Você pode acessar o site ntp.org http://support.ntp.org/bin/view/Servers/WebHome para encontrar um servidor mais próximo de você para sincronizar seu tempo externo. Eu recomendo não usar a Microsoft, pois eles são muito usados ​​e podem escorregar por causa disso.

O comando abaixo definirá o PDC para aparência externa, mas também verificará as configurações do Registro, conforme definidas aqui, para sincronizar externamente (é necessário fazer as duas coisas) http://support.microsoft.com/kb/816042

Execute isso no PDC w32tm / config /manualpeerlist: declarou0.pool.ntp.org,0x1 ”/ syncfromflags: MANUAL / confiável: sim w32tm / config / update w32tm / resync w32tm / resync / redescoberto

Execute esses 2 comandos a qualquer momento em qualquer servidor para ver sua origem e, quando forem atualizados pela última vez, eles serão usados ​​durante este exercício para garantir que seu PDC e outros servidores estejam obtendo tempo do local certo w32tm / query / status w32tm / query /fonte

Em seguida, execute isso em todos os controladores de domínio, exceto o PDC, ele fará com que eles olhem para o PDC por tempo e ressincronizem com ele w32tm / config / syncfromflags: DOMHIER / update net stop w32time net start w32time w32tm / resync / force

Problemas: ao executar a consulta Status ou Origem, dê-lhes um minuto ou dois após as alterações, você não deve olhar para o Relógio CMOS Local e não deve usar o provedor de sincronização de tempo vm ic como origem.

Se for bem-sucedido, o PDC deve ler o site externo que você definiu e os outros servidores devem dizer o PDC como origem

Espero que isso ajude as pessoas a boa sorte!

Karl
fonte
Olá, as respostas estão na seção Resposta, não como edições da pergunta.
Michael Hampton
2
Isso não funciona completamente no Hyper-V 2012R2 mais recente, com as atualizações de integração mais recentes, pois o tempo volta imediatamente ao host subjacente após ser definido pelo servidor NTP. Mesmo depois de ficar sentado por um tempo, ficou preso na hora errada. Descobri que, também modificando a chave do registro TimeProviders / VMICTimeProvider / InputProvider = 0, o servidor parou de voltar a funcionar tão rapidamente no host subjacente.
Brain2000
1
Formatei sua resposta abaixo para melhor legibilidade. Pode querer remover a resposta da sua pergunta e apenas fazer referência à sua resposta.
Tilo

Respostas:

12

@PSaul está correto. Você não deseja usar time.microsoftou time.windows.comcomo fonte de tempo para o seu controlador de domínio que está mantendo a função FSMO do emulador PDC. Como padrão, eles são muito usados, geralmente lentos devido à falta de localidade e às vezes indisponíveis. Escolha um pool NTP mais próximo de você.

No entanto, não desative a integração da sincronização de tempo do Hyper-V. É necessário para determinadas funções, como redefinir o tempo após uma reinicialização ou quando a máquina virtual volta de um estado salvo. O que você deseja fazer é dizer aos controladores de domínio virtualizados que ignorem o host Hyper-V como fonte de tempo.

Isso pode ser feito da seguinte forma:

reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider /v Enabled /t reg_dword /d 0

Este comando remove a fonte de tempo do Hyper-V como uma possível fonte para o W32Time.

w32tm /config /syncfromflags:DOMHIER /update

Agora diga ao W32Time para procurar a melhor fonte de tempo possível na hierarquia de domínio. Se você quiser usar uma fonte externa para os dois controladores de domínio, poderá configurá-la usando os comandos @PSaul publicados ou a partir daqui . De um modo geral, o Controlador de Domínio que detém a função Emulador de PDC deve sincronizar a partir da fonte externa e seus outros Controladores de Domínio devem sincronizar a partir dela.

net stop w32time & net start w32time
w32tm /resync /force

Reinicie o serviço de horário e force uma ressincronização.

w32tm /query /source

Finalmente, você deve confirmar se seus controladores de domínio têm a fonte de tempo correta.

Veja a excelente publicação de Ben Armstrong no blog para mais detalhes.


fonte
Obrigado pela informação, eu tinha lido o blog Ben Armstrongs e queria seguir as melhores práticas. Na VM que hoje é o PDC, executei: w32tm / config / manualpeerlist: declarou0.pool.ntp.org,0x1 ”/ syncfromflags: MANUAL / confiável: sim w32tm / config / update w32tm / resync w32tm / resync / redescoberto
Karl
No registro 0.pool.ntp.org, 0x1 agora é o valor para o Servidor NTP. Posso executar ping no 0.pool.ntp.org no PDC, mas ainda não consigo executar o time.windows.com, o que achei estranho! O tempo está sendo definido por um dos hosts. Tenho certeza disso, mas ele está definido como NT5DS e / query / status está me dizendo que está usando o PDC. Preciso executar alguns comandos no host para fazer a ressincronização para o VM PDC? Eu vi o comando reg add e presumo que isso precise ser feito em todos os controladores de domínio? Gostaria de saber se o w32tm / config / syncfromflags: DOMHIER / update também precisa ser executado no PDC ou apenas em todos os outros controladores de domínio?
Karl
Acho que falta o final do primeiro comentário, depois de executar os comandos abaixo no PDC. Tudo foi bem-sucedido, mas quando executei o w32tm / query / status, eu ainda tinha uma fonte de "provedor de sincronização de tempo vm ic" w32tm / config / update w32tm / resync w32tm / resync / redescubra e inicie e pare
Karl
Obrigado por todos os conselhos que eu acho que finalmente tê-lo, mas vou deixar por alguns dias para confirmar e, em seguida, vou atualizar o que eu fiz para correção
Karl
5

Finalmente consegui funcionar! O objetivo disso é ajudar as pessoas que estão começando no início da definição do horário de um domínio.

Neste exemplo, todos os servidores, controlador de domínio primário (PDC), outros controladores de domínio (DC) e outros servidores estão executando o Windows 2008 R2 e são virtualizados com o Hyper-V.

Primeiramente, você lerá para desativar o 'Serviço de Integração de Sincronização de Tempo' em qualquer máquina virtual dentro do Hyper-V; em vez disso, você deve manipular o Serviço de Tempo do Windows (serviço w32tm) a partir do controlador de domínio virtual, não deve desativá-lo porque quando um A VM reinicia, isso causa problemas; isso deve ser feito com o w32tm. Informações do MSDN

Você precisará descobrir qual servidor é o PDC e as funções FSMO em execução. Execute isto: netdom query fsmo O resultado deve ser seu PDC e é aqui que você faz a maioria das alterações.

Verifique se no firewall existe uma regra de "Saída" no UDP123 e se o programa é % SystemRoot% \ System32 \ w32tm.exe, basta procurar o diretório do Windows e encontrar o exe por tempo.

É aqui que as alterações no registro diminuem!

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ W32Time

Verifique se o PDC sob configuração no endereço de registro acima está definido como NTP para " Tipo " e todos os outros servidores são NT5DS, isso significa que NTP é o pai! A melhor prática aqui é fazer com que o PDC procure externamente o tempo e tudo sincronize com ele.

Execute isso em todos os controladores de domínio (incluindo o PDC); ele desativará parcialmente o tempo do Windows para que não olhe para a máquina host por algum tempo, importante porque somos virtuais.

reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider /v Enabled /t reg_dword /d 0

Você pode ir ao site ntp.org para encontrar um servidor mais próximo de você para sincronizar seu tempo externo. Eu recomendo não usar a Microsoft, pois eles são muito usados ​​e podem escorregar por causa disso.

O comando abaixo definirá o PDC para aparência externa, mas também verificará as configurações do Registro conforme definidas aqui para sincronizar externamente (é necessário fazer as duas coisas) MS KB 816042

Execute isso no PDC

w32tm /config /manualpeerlist:"0.pool.ntp.org,0x1" /syncfromflags:MANUAL /reliable:yes   
w32tm /config /update   
w32tm /resync 
w32tm /resync /rediscover

Execute esses 2 comandos a qualquer momento em qualquer servidor para ver sua origem e, quando atualizados pela última vez, eles serão usados ​​durante todo este exercício para garantir que seu PDC e outros servidores estejam obtendo tempo no local certo.

w32tm /query /status  
w32tm /query /source

Em seguida, execute isso em todos os controladores de domínio , exceto o PDC , fará com que eles olhem para o PDC por tempo e ressincronizem com ele

w32tm /config /syncfromflags:DOMHIER /update 
net stop w32time 
net start w32time 
w32tm /resync /force

Problemas : ao executar a consulta Status ou Origem, dê-lhes um minuto ou dois após as alterações, você não deve olhar para o Relógio CMOS local e não deve usar o Provedor de sincronização de tempo de IC da VM como origem.

Se for bem-sucedido, o PDC deve ler o site externo que você definiu e os outros servidores devem dizer o PDC como origem

Espero que isso ajude as pessoas a boa sorte!

Karl
fonte
Mais duas coisas: Use um GPO para configurar o horário NTP no PDCE - isso significa que ele será configurado automaticamente se a função do PDCE se mover: www.sysadminlab.net/windows/configuring-ntp-on-windows-using-gpo.
Trix
Para definir os sinalizadores no serviço NTP, considere usar 0x8 - isso significa que é uma fonte de tempo confiável que está sincronizando com um relógio de hardware em algum lugar. Considere também não usar o 0x1 para "intervalo de tempo especial". A menos que você precise sincronizar seu relógio em intervalos especificados, é meio desnecessário nos dias de hoje. Se o controlador de domínio não obtiver seu tempo imediatamente após a inicialização (por exemplo, a rede não está pronta), ele aguardará todo esse intervalo. Ou, se você usar 0x1 / 0x9, defina outra fonte com 0xa - fonte de fallback, será consultada imediatamente se a (s) fonte (s) principal (s) não responderem.
Trix
1

Eu sugeriria:

  • NÃO habilitando a sincronização de horário entre o host HyperV e as VMs convidadas - especialmente para controladores de domínio. O detentor da função PDC deve atualizar via NTP a partir de várias fontes de bom tempo. O relógio do host também pode ser atualizado via NTP, mas você deseja que o PDC seja o "mestre" de outros controladores de domínio e servidores membros. (pelo menos com VMwre, assumo o mesmo com HyperV)
  • Verifique se a porta UDP 123 está aberta para o tráfego de saída.
  • Que você pode resolver o FQDN dos servidores NTP (você pode PING-los?)
  • Todos os outros controladores de domínio e máquinas membros devem atualizar automaticamente.

Não use ONLY time.windows.com ou time.microsoft.com, use um dos servidores * .pool.ntp.org. Eu uso north-america.pool.ntp.org ou ca.north-america.pool.ntp.org - quanto mais perto, melhor. Você pode verificar: http://www.pool.ntp.org/ para encontrar servidores perto de você.

Em seguida, execute algo como:

w32tm /config /manualpeerlist:"north-america.pool.ntp.org 0.pool.ntp.org" /syncfromflags:MANUAL /update /reliable:YES

(Adicione os servidores NTP desejados. No Canadá eu também uso o time.nrc.ca)

Seguido por:

net stop w32time
net start w32time

Você pode verificar os pares com:

w32tm /query /peers

Verifique o log do sistema para ver se está atualizando. Você poderá acertar o relógio em 1 minuto, reiniciar o serviço w32time e ele será atualizado em 30 segundos. [menos de 5 minutos de inclinação é aceitável em um domínio do AD]

PSaul
fonte
0

Conforme recomendado por outros, definitivamente não há sincronização de horário do hardware do host para o convidado. Você também deve sincronizar com servidores NTP externos apenas do controlador de domínio que possui a função de emulador PDC raiz da floresta. Se o controlador de domínio da função de emulador PDC raiz da floresta não estiver sincronizando, os controladores de domínio que dependem dele terão problemas.

Você também pode tentar o seguinte hotfix:

A sincronização de horário não é executada, mesmo que o serviço W32Time tenha sido iniciado com êxito no Windows Server 2008 ou no Windows Server 2008 R2

http://support.microsoft.com/kb/2493006

Você pode achar mais útil se você usar o sinalizador / verbose para w32tm:

w32tm /query /status /verbose /computer:dcname

Informação adicional:

https://technet.microsoft.com/en-us/library/virtual_active_directory_domain_controller_virtualization_hyperv%28WS.10%29.aspx

"Para máquinas virtuais configuradas como controladoras de domínio, é recomendável desabilitar a sincronização de horário entre o sistema host e o sistema operacional convidado que atua como controlador de domínio. Isso permite que o controlador de domínio convidado sincronize o tempo da hierarquia de domínio."

"Para desativar o provedor de sincronização de horário do Hyper-V, desligue a VM e limpe a caixa de seleção Sincronização de horário em Integration Services."

Greg Askew
fonte