Czas na serwerach (NTP).
Czas odgrywa na serwerach bardzo ważną rolę. Zarówno w kontekście współpracy wielu serwerów przy realizacji danego zadania (na przykład dla mechanizmu autoryzacji) jak i również przy pracy aplikacji typu baza danych. Nieprawidłowy czas jak i również nagłe operacje związane z przyśpieszeniem czasu mogą mieć niepodziewane konsekwencje.
Czas w szczególności jest istotny w środowiskach wirtualizacyjnych, gdzie elementów mogących wpływać na jego poprawność jest zdecydowanie więcej.
Wzorcem czasu w sieci firmowej powinien być serwer NTP. Najlepiej jeśli będzie to dedykowany appliance z wbudowanymi możliwościami ustalania czasu takimi jak źródła czasu w Internecie, serwery GPS, serwery GLONASS czy sygnał radiowy (dc77). Serwer czasu powinien móć jak najdłużej pracować poprawnie na baterii i pozbawiony zewnętrznych źródeł czasu jak najdłużej utrzymywać precyzję działania.
Ostatnia uwaga natury ogólnej – o wiele ważniejsze od tego, aby lokalny czas był idealny względem wzorca czasu jest to aby czas był spójny w obrębie środowiska
W przypadku środowiska wirtualnego prawidłowy czas powinien być ustawiony we wszystkich warstwach – tj. hardware clock (bios), warstwa wirtualizacji (ESXi), warstwa wirtualnego systemu operacyjnego. Idealnie, jeśli na każdej warstwie czas jest pobierany z tego samego źródła i spójny jak najbardziej się da.
Czas mierzymy w milisekundach i odchylenia czasu nie powinny przekraczać kilkudziesięciu milisekund.
W większości przypadków ustalamy czas w BIOS względem zegara UTC. Wówczas czas w BIOS się nie zmienia z zimowego na letni i odwrotnie. Niestety czas hardware jest niezbyt stabilny. Widziałem sytuacje że na serwerach pracujących zaledwie kilka miesięcy zegar hardware różnił się od wzorca czasu o minuty. Sytuacja taka jest niebezpieczna ponieważ serwer uruchamiając się wszystkie początkowe ustawienia, informacje w logu pobiera wg tego zegara. jest to podstawowy czas pobierany podczas uruchamiania systemu i czas ten jest istotny dla kolejnych etapów uruchamiania serwera. Stąd też jest on super istotny. Nowoczesne serwery pozwalają na synchronizację tego czasu (np. za pomocą warstwy management wbudowanej w serwer fizyczny) z ustalonym serwerem NTP. W większości przypadków również korzystnie jest jeśli system operacyjny (hypervisor) synchronizuje zegar BIOS z serwerem NTP zaraz po uruchomieniu się.
Warstwa wirtualizacji podczas uruchamiania korzysta z “hardware clock”. Natomaist zaraz po uruchomieniu powinna zsynchronizować się z serwerem czasu NTP. Przy czym to “zaraz” może trwać kilka minut i być zależne od innych czynników.
Z kolei warstwa systemu operacyjnego również powinna synchronizować czas względem NTP. Podobnie jak dla uruchamiającego się hypervisora podstawowym zegarem będzie zegar BIOS, dla systemu wirtualnego będzie to zegar “udostępniany” przez system wirtualizucjący. W przypadku VMware, ESXi będzie również wzorcem czasu w następujących sytuacjach:
- tworzenie snapshotu (również podczas backupu)
- pauza i wznowienie działania systemu wirtualnego
- vMotion (!!!!)
- VMTools – uruchomienie narzędzi, bądź regularna praca w niedomyślnej konfiguracji
Wszystkie powyższe elementy można zmienić z wartości domyślnych, jadnakże nie zaleca się tego.
Dla systemów deployowanych za pomocą audoteploy parametry NTP musza byc przechowywane w profilu serwera ESXi.
Do synchronizacji czasu ESXi korzysta z demona ntpd. Podobnie jak większość działających obecnie instalacji Linuksowych. Jednakże nowoczesne Linuksy (sles 15, redhat 7) korzystają z demona chrony i należy zwrócić na to szczególną uwagę. Z mojego doświadczenia mechanizm związany z chrony zwykle zachowuje się o wiele stabilniej niż daemin ntpd. Oczywiście wszystko zależy od konfiguracji i konkretnej sytuacji.
Postawowe komendy:
- ntpq -pn
- chronyc sources
- chronyc tracking
Podstawowe zmienne przekazywane do ntpd (domyślnie plik /etc/sysconfig/ntpd lub /etc/default/ntpd lub odpowiednio chronyd):
- -x — ustawienie spowolnienia synchronizacji czasu, niektóre systemy źle reaguja na szybka zmiane czasu, opcja -x wydłuża synchronizację czasu. Ale synchronizacja ta następuje bardzo wolno (10 min w około 2 tygodnie)
- -g — użytkownik i grupa na którym będzie działać daemon ntp
- -p
No Comments