{"id":377,"date":"2018-10-09T00:33:55","date_gmt":"2018-10-09T00:33:55","guid":{"rendered":"http:\/\/labiol.xyz\/?p=377"},"modified":"2019-02-05T01:35:59","modified_gmt":"2019-02-05T01:35:59","slug":"synchronizacja-czasu-ntp","status":"publish","type":"post","link":"https:\/\/www.labiol.xyz\/index.php\/2018\/10\/09\/synchronizacja-czasu-ntp\/","title":{"rendered":"Synchronizacja czasu &#8211; NTP"},"content":{"rendered":"\n<p>Czas na serwerach (NTP).<\/p>\n\n\n\n<p>Czas odgrywa na serwerach bardzo wa\u017cn\u0105 rol\u0119. Zar\u00f3wno w kontek\u015bcie wsp\u00f3\u0142pracy wielu serwer\u00f3w przy realizacji danego zadania (na przyk\u0142ad dla mechanizmu autoryzacji) jak i r\u00f3wnie\u017c przy pracy aplikacji typu baza danych. Nieprawid\u0142owy czas jak i r\u00f3wnie\u017c nag\u0142e operacje zwi\u0105zane z przy\u015bpieszeniem czasu mog\u0105 mie\u0107 niepodziewane konsekwencje.<\/p>\n\n\n\n<p>Czas w szczeg\u00f3lno\u015bci jest istotny w \u015brodowiskach wirtualizacyjnych, gdzie element\u00f3w mog\u0105cych wp\u0142ywa\u0107 na jego poprawno\u015b\u0107 jest zdecydowanie wi\u0119cej.<\/p>\n\n\n\n<p>Wzorcem czasu w sieci firmowej powinien by\u0107 serwer NTP. Najlepiej je\u015bli b\u0119dzie to dedykowany appliance z wbudowanymi mo\u017cliwo\u015bciami ustalania czasu takimi jak \u017ar\u00f3d\u0142a czasu w Internecie, serwery GPS, serwery GLONASS czy sygna\u0142 radiowy (dc77). Serwer czasu powinien m\u00f3\u0107 jak najd\u0142u\u017cej pracowa\u0107 poprawnie na baterii i pozbawiony zewn\u0119trznych \u017ar\u00f3de\u0142 czasu jak najd\u0142u\u017cej utrzymywa\u0107 precyzj\u0119 dzia\u0142ania.<\/p>\n\n\n\n<p>Ostatnia uwaga natury og\u00f3lnej \u2013 o wiele wa\u017cniejsze od tego, aby lokalny czas by\u0142 idealny wzgl\u0119dem wzorca czasu jest to aby czas by\u0142 sp\u00f3jny w obr\u0119bie \u015brodowiska<\/p>\n\n\n\n<p>W przypadku \u015brodowiska wirtualnego prawid\u0142owy czas powinien by\u0107 ustawiony we wszystkich warstwach \u2013 tj. hardware clock (bios), warstwa wirtualizacji (ESXi), warstwa wirtualnego systemu operacyjnego. Idealnie, je\u015bli na ka\u017cdej warstwie czas jest pobierany z tego samego \u017ar\u00f3d\u0142a i sp\u00f3jny jak najbardziej si\u0119 da.<\/p>\n\n\n\n<p>Czas mierzymy w milisekundach i odchylenia czasu nie powinny przekracza\u0107 kilkudziesi\u0119ciu milisekund.<\/p>\n\n\n\n<p>W wi\u0119kszo\u015bci przypadk\u00f3w ustalamy czas w BIOS wzgl\u0119dem zegara UTC. W\u00f3wczas czas w BIOS si\u0119 nie zmienia z zimowego na letni i odwrotnie. Niestety czas hardware jest niezbyt stabilny. Widzia\u0142em sytuacje \u017ce na serwerach pracuj\u0105cych zaledwie kilka miesi\u0119cy zegar hardware r\u00f3\u017cni\u0142 si\u0119 od wzorca czasu o minuty. Sytuacja taka jest niebezpieczna poniewa\u017c serwer uruchamiaj\u0105c si\u0119 wszystkie pocz\u0105tkowe ustawienia, informacje w logu pobiera wg tego zegara. jest to podstawowy czas pobierany podczas uruchamiania systemu i czas ten jest istotny dla kolejnych etap\u00f3w uruchamiania serwera. St\u0105d te\u017c jest on super istotny. Nowoczesne serwery pozwalaj\u0105 na synchronizacj\u0119 tego czasu (np. za pomoc\u0105 warstwy management wbudowanej w serwer fizyczny) z ustalonym serwerem NTP. W wi\u0119kszo\u015bci przypadk\u00f3w r\u00f3wnie\u017c korzystnie jest je\u015bli system operacyjny (hypervisor) synchronizuje zegar BIOS z serwerem NTP zaraz po uruchomieniu si\u0119. <\/p>\n\n\n\n<p>Warstwa wirtualizacji podczas uruchamiania korzysta z \u201chardware clock\u201d. Natomaist zaraz po uruchomieniu powinna zsynchronizowa\u0107 si\u0119 z serwerem czasu NTP. Przy czym to \u201czaraz\u201d mo\u017ce trwa\u0107 kilka minut i by\u0107 zale\u017cne od innych czynnik\u00f3w.<\/p>\n\n\n\n<p>Z kolei warstwa systemu operacyjnego r\u00f3wnie\u017c powinna synchronizowa\u0107 czas wzgl\u0119dem NTP. Podobnie jak dla uruchamiaj\u0105cego si\u0119 hypervisora podstawowym zegarem b\u0119dzie zegar BIOS, dla systemu wirtualnego b\u0119dzie to zegar \u201cudost\u0119pniany\u201d przez system wirtualizucj\u0105cy. W przypadku VMware, ESXi b\u0119dzie r\u00f3wnie\u017c wzorcem czasu w nast\u0119puj\u0105cych sytuacjach:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>tworzenie snapshotu (r\u00f3wnie\u017c podczas backupu)<\/li><li>pauza i wznowienie dzia\u0142ania systemu wirtualnego<\/li><li>vMotion (!!!!)<\/li><li>VMTools &#8211; uruchomienie narz\u0119dzi, b\u0105d\u017a regularna praca w niedomy\u015blnej konfiguracji<\/li><\/ul>\n\n\n\n<p>Wszystkie powy\u017csze elementy mo\u017cna zmieni\u0107 z warto\u015bci domy\u015blnych, jadnak\u017ce nie zaleca si\u0119 tego.<\/p>\n\n\n\n<p>Dla system\u00f3w deployowanych za pomoc\u0105 audoteploy parametry NTP musza byc przechowywane w profilu serwera ESXi.<\/p>\n\n\n\n<p>Do synchronizacji czasu ESXi korzysta z demona ntpd. Podobnie jak wi\u0119kszo\u015b\u0107 dzia\u0142aj\u0105cych obecnie instalacji Linuksowych. Jednak\u017ce nowoczesne Linuksy (sles 15, redhat 7) korzystaj\u0105 z demona chrony i nale\u017cy zwr\u00f3ci\u0107 na to szczeg\u00f3ln\u0105 uwag\u0119. Z mojego do\u015bwiadczenia mechanizm zwi\u0105zany z chrony zwykle zachowuje si\u0119 o wiele stabilniej ni\u017c daemin ntpd. Oczywi\u015bcie wszystko zale\u017cy od konfiguracji i konkretnej sytuacji.<\/p>\n\n\n<p>Postawowe komendy:<\/p>\n<ul>\n<li>ntpq -pn<\/li>\n<li>chronyc sources<\/li>\n<li>chronyc tracking<\/li>\n<\/ul>\n\n\n<p>Podstawowe zmienne przekazywane do ntpd (domy\u015blnie plik \/etc\/sysconfig\/ntpd lub \/etc\/default\/ntpd lub odpowiednio chronyd):<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>-x &#8212; ustawienie spowolnienia synchronizacji czasu, niekt\u00f3re systemy \u017ale reaguja na szybka zmiane czasu, opcja -x wyd\u0142u\u017ca synchronizacj\u0119 czasu. Ale synchronizacja ta nast\u0119puje bardzo wolno (10 min w oko\u0142o 2 tygodnie)<\/li><li>-g &#8212; u\u017cytkownik i grupa na kt\u00f3rym b\u0119dzie dzia\u0142a\u0107 daemon ntp<\/li><li>-p<\/li><\/ul>\n\n\n\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/IRIG_timecode\">https:\/\/en.wikipedia.org\/wiki\/IRIG_timecode<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/DCF77\">https:\/\/en.wikipedia.org\/wiki\/DCF77<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Czas na serwerach (NTP). Czas odgrywa na serwerach bardzo wa\u017cn\u0105 rol\u0119. Zar\u00f3wno w kontek\u015bcie wsp\u00f3\u0142pracy wielu serwer\u00f3w przy realizacji danego zadania (na przyk\u0142ad dla mechanizmu autoryzacji) jak i r\u00f3wnie\u017c przy pracy aplikacji typu baza danych. Nieprawid\u0142owy czas jak i r\u00f3wnie\u017c nag\u0142e operacje zwi\u0105zane z przy\u015bpieszeniem czasu mog\u0105 mie\u0107 niepodziewane konsekwencje. &hellip; <\/p>\n","protected":false},"author":1,"featured_media":385,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,2],"tags":[],"class_list":["post-377","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","category-vmware"],"_links":{"self":[{"href":"https:\/\/www.labiol.xyz\/index.php\/wp-json\/wp\/v2\/posts\/377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.labiol.xyz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.labiol.xyz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.labiol.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.labiol.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=377"}],"version-history":[{"count":9,"href":"https:\/\/www.labiol.xyz\/index.php\/wp-json\/wp\/v2\/posts\/377\/revisions"}],"predecessor-version":[{"id":390,"href":"https:\/\/www.labiol.xyz\/index.php\/wp-json\/wp\/v2\/posts\/377\/revisions\/390"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.labiol.xyz\/index.php\/wp-json\/wp\/v2\/media\/385"}],"wp:attachment":[{"href":"https:\/\/www.labiol.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.labiol.xyz\/index.php\/wp-json\/wp\/v2\/categories?post=377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.labiol.xyz\/index.php\/wp-json\/wp\/v2\/tags?post=377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}