Să presupunem că aveți un sistem Ubuntu proaspăt și modern (de exemplu, 20.04 LTS Server) instalat pe hardware real și că trebuie să implementați unul sau mai multe servicii legate de rețea, cum ar fi:
Din experiența mea, dacă configurați un serviciu pentru a se lega la orice altceva decât IPv4 0.0.0.0 sau IPv6 [::] sau la o interfață locală/loopback, acest serviciu va eșua și nu se va recupera la repornirea sistemului.
De exemplu, dacă vă legați de oricare dintre gazdele locale, private, publice:
192.168.22.30
sau
2601:171c:d401:120a::1001
sau
fde8:b0ab:dd91:1010::feeb
le veți porni și le veți activa cu succes în timpul acelei sesiuni, dar probabil că va eșua la repornirea sistemului.
De ce? Pentru că se pare că unitățile de sistem care sunt livrate cu Ubuntu:
- Nu așteptați până când interfețele de rețea sunt activate sau sistemul este de fapt online
- Chiar și atunci când ethernet-ul s-a inițializat, ar putea dura câteva secunde pentru ca IP-urile (configurate static sau nu) să fie gata pentru legare
- Când un astfel de serviciu eșuează, unitățile de stoc Ubuntu nu sunt configurate să repornească și să încerce din nou pornirea serviciului după ce au trecut câteva secunde
Deci soluția mea actuală este să modific aceste fișiere Unit pentru a adăuga o dependență puternică de funcționarea rețelei și sistemul online și, de asemenea, adăugarea unei reîncercări/reporniri de 5 secunde la eșecul de pornire.
Dar ce este potrivit mod de a corecta asta?