Servers, tijdzones en Network Time Protocol (NTP)
Wat je moet weten om je servers ‘in sync’ te houden met de tijd
In het dagelijks leven ben ik me vaak niet bewust van de tijdzone waarin ik leef. Door de Olympische Spelen 2020 (in 2021) realiseerde ik me dat het in Japan een paar uur later is dan in ons koude kikkerlandje. Als je een wedstrijd live op tv wilde zien dan moest je weten hoe laat het in Tokio is. Zodat je tenminste de wekker kon zetten om ervoor te zorgen dat je klaar zat op het juiste moment.Voor servers geldt eigenlijk precies hetzelfde. Als je wilt dat bepaalde taken op het juiste moment worden uitgevoerd, dan moet je weten op welke tijdzone de server staat afgesteld.
In deze blog lees je meer over tijdzones en het correct instellen van servers.
Inhoud van dit artikel
- Tijdzones, hoe zit het ook alweer?
- Hoe weet een server wat de tijd is?
- Waarom is het Network Time Protocol (NTP) belangrijk?
- Zomertijd/wintertijd
- NTP configureren
Tijdzones, hoe zit het ook alweer?
De aarde is verdeeld in verschillende tijdzones. Een tijdzone is een gebied waar de tijd hetzelfde is. De aarde draait in 24 uur om haar as, dus in theorie zijn er 24 tijdszones. Maar in de praktijk bestaan méér dan 24 tijdzones. Dat komt omdat sommige landen een tijdzone van een half uur of zelfs kwartier gebruiken. Canada hanteert UTC-3:30 en Nepal UTC+5:45.Hoe weet een server wat de tijd is?
Computers en servers kunnen geen klok kijken, maar moeten toch weten hoe laat het is. Door een server te koppelen aan de tijdzonedatabase Iana.org én de Unix Time Stamp, geeft de server de exacte lokale tijd weer, bijvoorbeeld 2021-09-28 10:23:43 in Rio de Janeiro.De Unix Time Stamp start op 1 januari 1970 en is een manier om de tijd bij te houden op basis van het aantal seconden dat verlopen is. Het interessante van deze tijd is dat de Unix Time altijd hetzelfde is ongeacht waar je je ter wereld bevindt.
Een tijdzonedatabase wordt periodiek bijgewerkt en er wordt onder andere rekening gehouden met leap seconds, ook wel schrikkelsecondes. Een leap second is een seconde die aan de kalenderdatum/tijd toegevoegd wordt om het verschil in lengte tussen de gemiddelde zonnedag en de op de klok gebaseerde periode van precies 24 uur te corrigeren. Zo geeft een tijdzonedatabase dus altijd de juiste tijd aan.
Waarom is het Network Time Protocol (NTP) belangrijk?
NTP zorgt ervoor dat de systeemklokken van computers op het internet altijd tot op de milliseconden gelijk lopen. Zonder NTP lukt dat niet.Computers en servers hebben een interne klok die niet heel precies is. Dat komt onder andere doordat de interne klok niet goed functioneert als de batterij op het moederbord leeg is. Om ervoor te zorgen dat computers en servers die met elkaar in verbinding staan hun interne klok synchroniseren met andere computers en servers wordt een Network Time Protocol gebruikt.
Een correcte systeemtijd is cruciaal voor het goed en veilig functioneren van andere protocollen. Denk hierbij aan het instellen van cronjobs, maken van back-ups en uitvoeren van bepaalde beveiligingsprotocollen.
Twee voorbeelden:
- Een SSL-certificaat wordt uitgegeven voor een bepaalde periode, meestal een jaar. Als de tijd van een computer niet goed staat ingesteld dan kán een certificaat als verlopen worden beschouwd, terwijl het nog niet verlopen is.
- Grote cronjobs voer je idealiter ’s nachts uit, omdat de taak dan minder impact heeft op het gebruik overdag. Stel nu dat je een server in New York gebruikt, die staat ingesteld op de Nederlandse tijdzone. Als je wilt dat een cronjob om middernacht Nederlandse tijd wordt uitgevoerd, dan moet je dus rekening houden met de verschillende tijdzones. Doe je dat niet dan wordt een bepaalde cronjob overdag uitgevoerd in plaats van ’s nachts in New York. In New York is het immers 4 uur vroeger dan UTC.
Zomertijd, wintertijd
Jaren geleden werd ik eens uit bed gebeld omdat een bepaalde back-up niet was gemaakt. Nou ja, uit bed gebeld… Het systeem dat we gebruiken voor monitoring stuurde ’s nacht een melding.Het duurde even voordat ik de oorzaak achterhaalde: de tijd had een sprong gemaakt. De zomertijd begint immers op de laatste zondag van maart, als de klok om 01:00 UTC (Nederlandse tijd: 02:00 uur) een uur vooruit wordt gezet, en eindigt op de laatste zondag van oktober, als de klok om 01:00 UTC (Nederland: 03:00 uur zomertijd) een uur terug wordt gezet.
Ik dacht dat ik alles goed had ingesteld en gecheckt, maar aan die zomer-/wintertijd had ik even niét gedacht. Maar bij het instellen van bepaalde cronjobs of andere protocollen is het juist goed om rekening te houden met de zomer- en wintertijd.
De oplossing was uiteindelijk vrij simpel: ik heb de back-ups zo ingesteld dat ze niet meer tussen 2.00u en 3.00u worden gemaakt.