Kilka lat temu, gdy jeszcze używałem „cat plik | grep abc | wc -l” bo nie wiedziałem, że mogę „grep -c abc plik”, każdy dzień który zwiększał uptime na moim desktopie stojącym pod biurkiem i udającym serwer był powodem do dumy… przecież wysoki uptime oznacza dobry system? Dziś wiem, że wysoki uptime oznacza tyle, że serwer ma dobre źródło zasilania i nic więcej… Możesz mieć system na którym średni uptime to 1 dzień i usługa będzie działała bez przerw a równie dobrze możesz mieć serwer który działa ponad 100 dni a usługa będzie niedostępna kilka razy dziennie.

Dziś gdy trafiam na serwer który żyje rok czy dwa bez restartu, to w mojej głowie pojawiają się myśli,

  • prawdopodobnie nikt tego nie aktualizował… w ogóle to jest jeszcze wspierane?
  • ciekawe czy wstanie po restarcie?
  • nawet jak system wstanie, to ciekawe czy usługi się podniosą… na pewno ktoś coś uruchomił „z palca”…
  • czy konfiguracja usług jest aktualne? czy może ktoś zmienił coś w konfiguracji i nie zrestartował daemon-a?
  • i podobnych przykładów pojawia się dużo więcej…

No dobra… ale czy to oznacza, że wysoki uptime jest zły? Nie… Nie jest zły pod warunkiem, że wiesz jakie zmiany były robione od ostatniego restartu systemu i czy czujesz się z tym komfortowo, przy okazji odpowiedz sobie na pytanie na ile dokładnie dokumentujesz wprowadzane zmiany oraz kto oprócz Ciebie posiada również tę samą wiedzę. Spójrz na to inaczej, jeśli boisz się zrobić reboot to znaczy, że nie jest dobrze ;-)

Słyszałeś kiedyś o Chaos Monkey? Wyobraź sobie, że masz zaimplementowany mechanizm który od czasu do czasu zatrzyma jakąś losową usługę. Co się wtedy stanie? zapasowy serwer przejmie jej rolę? na ile będzie potrzebna Twoja interakcja, żeby usługa wróciła do życia? Dostałeś alert, że takie zdarzenie miało miejsce? Bądź przygotowany, że zawsze jakaś usługa lub cały serwer może przestać odpowiadać i gdy to nastąpi nie bądź zaskoczony, że nie ma danych… lub że nie da się przywrócić usługi do życia poprzez szybki restart, awarie to normalna część naszej pracy i lepiej być na nie przygotowanym ;-)

Uptime 0

Co to dla mnie oznacza? oznacza mniej więcej tyle, że każdy serwer da się zastąpić dowolnym innym, uruchomić kilka skryptów (lub wykorzystać gotowe narzędzia do automatyzacji ansible/puppet/chef/salt), puścić testy i koniec. Nie ważne czy to instalacja nowego serwera, czy przypadkowe uruchomienie rm -rf /*, obie te sytuacje nie powinny Ciebie przerażać. Staraj się doprowadzić do tego, żeby instalacja serwera czy poszczególnych usług była automatyczna, tylko w ten sposób kupisz sobie spokój ;-) Mam nadzieję, że nie brzmi to jak science fiction… Bądź po prostu leniwy! Instalacja serwera nie powinna wymagać od Ciebie żadnego myślenia, chyba, że lubisz zastanawiać się czy /var powinien mieć 100GB czy 50GB za każdym razem gdy instalator zapyta o rozmiary partycji… Ale w naszym zawodzie nie o to chodzi… Są naprawdę ciekawsze rzeczy do zrobienia niż tracenie czasu na te same czynności ;-)

Ktoś kiedyś powiedział, że dobry admin to leniwy admin i trudno się z tym chyba nie zgodzić.