Configurare NTP su una VM


Molti sistemi software che dipendono da una sequenza accurata di eventi si basano su un orologio di sistema stabile e coerente. I log di sistema scritti dalla maggior parte dei servizi includono un timestamp, che consente di eseguire il debug dei problemi che si verificano tra i vari componenti del sistema. Per mantenere sincronizzati gli orologi di sistema, Compute Engine Le istanze sono preconfigurate per l'uso del Network Time Protocol (NTP).

Oltre a mantenere sincronizzato il tempo del server, NTP è utile nel raro caso di un secondo intercalare. Un secondo bisestile è un aggiustamento di un secondo apportato all'ora UTC per tenere conto delle variazioni nella rotazione della Terra. I secondi intercalari non si verificano a intervalli di routine, perché la velocità di rotazione della Terra varia in modo irregolare in risposta a eventi climatici e geologici. I secondi intercalari precedenti sono stati ha avuto un impatto notevole su una varietà di servizi e applicazioni sul web. I server NTP contribuiscono ad assicurare che tutti i server registrino la stessa ora in caso di un secondo intercalare.

Questo documento descrive come configurare i server NTP sulle tue macchine virtuali (VM) di comportarsi correttamente in caso di secondo intercalare.

Google NTP Server e leap smearing

In un sistema operativo Unix, i secondi intercalari vengono comunemente implementati ripetendo l'ultimo secondo della giornata. Ciò può causare problemi con il software che si aspetta i timestamp in modo che possano solo aumentare. Per aggirare questo problema, i server di riferimento in Google Cloud "sparsa" il secondo in più nelle ventiquattro ore, dodici prima e dodici dopo evento del secondo intercalare, in modo che i computer non vedano il secondo aggiuntivo una volta come timestamp ripetuto. Questo riduce il rischio nei sistemi che dipendono da con un timestamp coerente. È consigliabile che tutti i Compute Engine le istanze di macchine virtuali (VM) sono configurate per utilizzare Servizi Google NTP.

Configura NTP per le istanze

Google Cloud non può prevedere in che modo i servizi NTP esterni, come pool.ntp.org, gestire il secondo intercalare. Se possibile, ti consigliamo di non utilizzare origini NTP esterne con le VM Compute Engine. Uniforme peggio ancora, l'utilizzo sia del servizio NTP di Google sia di un servizio esterno può causare cambiamenti imprevedibili nell'orario del sistema. È preferibile utilizzare una sola fonte NTP esterna rispetto a una combinazione, ma i servizi NTP esterni, comepool.ntp.org, probabilmente utilizzeranno il passaggio per gestire il secondo intercalare. Di conseguenza, le VM potrebbero visualizzare un timestamp ripetuto.

L'approccio più sicuro consiste nel configurare le VM di Compute Engine di utilizzare un solo server NTP, il server NTP interno fornito in tutti i canali Google. Non combinare server NTP esterni e server NTP di Google, in quanto questo potrebbe comportare un comportamento imprevisto. Per ulteriori informazioni sulla NTP interna server fornito da Google, consulta Domande frequenti su Google Public NTP.

Per assicurarti che le VM siano configurate correttamente, segui queste istruzioni.

Linux (chrony)

Per impostazione predefinita, la maggior parte delle nuove release di Linux utilizza chrony per gestire le impostazioni NTP e la sincronizzazione dell'ora. Per fare in modo che chrony utilizza solo il servizio NTP interno, controlla chrony configurazione e rimuovi i server NTP esterni.

  1. Utilizza ssh per connetterti all'istanza.

    Console

    Per utilizzare la console per connetterti alla VM tramite SSH, segui questi passaggi:

    1. Vai alla pagina Istanze VM nella console Google Cloud.

      Vai a Istanze VM

    2. Fai clic sul pulsante SSH per la VM che vuoi configurare.

      Pulsante SSH.

    gcloud

    Per utilizzare Google Cloud CLI per connetterti alla VM tramite SSH, esegui il seguente comando:

    gcloud compute instances ssh VM_NAME
    

    Sostituisci VM_NAME con il nome della VM che stai a cui connetterti.

  2. Nell'istanza, esegui chronyc sources per controllare lo stato attuale della configurazione NTP:

    $ chronyc sources
    

    L'output è simile al seguente:

     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 vedi un singolo record che rimanda a metadata.google o metadata.google.internal, non devi apportare alcuna modifica. Se visualizza più fonti, combinate tra metadata.google e una fonte pubblica ad esempio pool.ntp.org, aggiorna le tue fonti per rimuovere eventuali server NTP esterni.

    Nell'output di esempio sono presenti due record, uno che rimanda a metadata.google.internal e un altro che rimanda a un indirizzo esterno. Poiché esistono più origini, devi aggiornare i server NTP per rimuovere l'indirizzo 38.229.53.9, come descritto nel passaggio successivo.

  3. Configura i server NTP in modo da rimuovere i server NTP esterni.

    Per rimuovere il server NTP aggiuntivo dall'elenco, modifica il /etc/chrony/chrony.conf utilizzando il tuo editor di testo preferito. Trova tutte le righe che iniziano con server external_source_ip_or_name e rimuovile.

    Dopo aver modificato il file /etc/chrony/chrony.conf, riavvia chrony completamente gestito di Google Cloud. Il comando di riavvio potrebbe variare a seconda della distribuzione Linux, come mostrato nei seguenti esempi:

    sudo service chrony restart
    
    sudo systemctl restart chrony
    
  4. Verifica la configurazione eseguendo di nuovo il comando chronyc sources:

    $ chronyc sources
    

    L'output dovrebbe essere simile al seguente:

     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)

La maggior parte delle distribuzioni Linux precedenti utilizza ntpd per gestire le impostazioni NTP e la sincronizzazione dell'ora. Per assicurarti che ntpd utilizzi solo il servizio NTP interno, controlla la configurazione di ntpd e rimuovi i server NTP esterni.

  1. Utilizza ssh per connetterti all'istanza.

    Console

    Per utilizzare la console per connetterti alla VM tramite SSH, segui questi passaggi:

    1. Vai alla pagina Istanze VM nella console Google Cloud.

      Vai a Istanze VM

    2. Fai clic sul pulsante SSH per la VM da configurare.

      Pulsante SSH.

    gcloud

    Per utilizzare Google Cloud CLI per connetterti alla VM tramite SSH, esegui il seguente comando:

    gcloud compute instances ssh VM_NAME
    

    Sostituisci VM_NAME con il nome della VM a cui ti stai collegando.

  2. Sulla tua istanza, esegui ntpq -p per controllare lo stato attuale Configurazione NTP:

    $ ntpq -p
    

    L'output è simile al seguente:

    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 vedi un singolo record che punta a metadata.google o metadata.google.internal, non devi apportare alcuna modifica. Se visualizza più fonti, combinate tra metadata.google e una fonte pubblica come pool.ntp.org, devi aggiornare le tue fonti per rimuovere eventuali server NTP esterni.

    Nell'output di esempio sono presenti due record, uno che rimanda a metadata.google e un altro che rimanda a un indirizzo esterno. Poiché da più fonti, devi aggiornare i server NTP per rimuovere l'indirizzo *217.162.232.173, come descritto nel prossimo passaggio.

  3. Configura i server NTP per rimuovere le origini esterne.

    Per configurare i server NTP, modifica il file /etc/ntp.conf utilizzando il tuo editor di testo preferito. Trova la sezione servers della configurazione, e rimuovi tutte le sorgenti NTP non Google, ad esempio:

    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
    

    Dopo aver modificato il file /etc/ntp.conf, riavvia il servizio NTP. La di riavvio può variare in base alla distribuzione Linux:

    sudo service ntp reload
    
  4. Verifica la configurazione eseguendo di nuovo il comando ntpq -p:

    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

  1. Vai alla pagina Istanze VM nella console Google Cloud.

    Vai a Istanze VM

  2. Fai clic sul pulsante RDP accanto all'istanza Windows a cui vuoi connetterti.

    Pulsante SSH.

  3. Dopo aver effettuato l’accesso, fai clic con il tasto destro del mouse sull’icona di PowerShell e seleziona Esegui come amministratore.

    Icona PowerShell.

  4. Quando viene caricato il prompt dei comandi, esegui il comando seguente per visualizzare la configurazione NTP corrente:

    w32tm /query /configuration
    
    [Configuration]
    ...
    Type: NTP (Local)
    NtpServer: metadata.google.internal,
    ...
    

    Se vedi un singolo record che rimanda a metadata.google o metadata.google.internal, non devi apportare alcuna modifica. Se visualizzare più fonti, combinate tra metadata.google e un pubblico devi rimuovere il server esterno. Segui la guida di Windows per configurare il server NTP.

  5. Per garantire la compatibilità software più diffusa nelle VM Windows, Google consiglia di utilizzare il driver gVNIC per garantire l'accuratezza NTP inferiore al millisecondo con metadata.google.

    Se devi utilizzare VirtIO con una VM Windows, per ottenere meno di un millisecondo la precisione con i server NTP, Google consiglia di non utilizzare Servizio orario di Windows (interrompi e annulla la registrazione di w32tm).

    1. Interrompi il servizio Windows Time:

      net stop w32time
      
    2. Rimuovi Windows Time Service dal Registro di sistema:

      w32tm /unregister
      
    3. Dopo aver interrotto il servizio Windows Time e averlo rimosso dal registry, installa il client NTP Meinberg.

      Segui le istruzioni di configurazione riportate nella documentazione di Meinberg.

    4. Configura il server NTP per il client NTP Meinberg come metadata.google.internal.

      Dopo aver completato la configurazione di NTP, attendi da 5 a 15 minuti affinché l'orologio di sistema nella VM si stabilizzi con il server NTP.

      Per informazioni sul perché non è consigliabile utilizzare w32tm, consulta Documentazione sui problemi noti.

Utilizzo dell'iap smearing con sistemi esterni a Google Cloud

La funzionalità di smagliamento rapido di I server NTP di Google rappresentano un modo conveniente per gestire il rischio legato ripetere un secondo su sistemi sensibili al tempo. Altri servizi NTP possono fornire è accettabile per la maggior parte dei sistemi software. Tuttavia, è importante che non combini i servizi NTP di Google con i passi NTP pubblici i servizi di machine learning.

Per sincronizzare i dispositivi esterni a Google Cloud in modo che il tempo sia sparso, puoi utilizzare Google Public NTP per questi dispositivi. Google Public NTP utilizza lo stesso sbrinamento del secondo intercalare fornito a di Compute Engine.

Passaggi successivi