Допустим, у вас есть новая и современная система Ubuntu (скажем, сервер 20.04 LTS), установленная на реальном оборудовании, и вам необходимо развернуть одну или несколько сетевых служб, таких как:
По моему опыту, если вы настроите службу для привязки к чему-либо, кроме IPv4 0.0.0.0 или IPv6 [::], или к локальному/петлевому интерфейсу, эта служба, скорее всего, выйдет из строя и не восстановится после перезагрузки системы.
Например, если вы привязываетесь к любому из локальных, частных, общедоступных хостов:
192.168.22.30
или же
2601:171с:д401:120а::1001
или же
fde8:b0ab:dd91:1010::feeb
вы успешно запустите и активируете их во время этого сеанса, но, скорее всего, произойдет сбой при перезагрузке системы.
Почему? Потому что кажется, что системные блоки, поставляемые с Ubuntu:
- Не ждите, пока заработают сетевые интерфейсы или система действительно будет подключена к сети.
- Даже после инициализации Ethernet может потребоваться несколько секунд, чтобы IP-адреса (статически настроенные или нет) были готовы к привязке.
- Когда такая служба выходит из строя, стандартные устройства Ubuntu не настроены на перезапуск и повторную попытку запуска службы через несколько секунд.
Поэтому мое текущее решение состоит в том, чтобы изменить эти файлы модулей, чтобы добавить сильную зависимость от работающей сети и системы, находящейся в сети, а также добавить 5-секундный повтор/перезапуск при сбое запуска.
Но что такое правильный способ исправить это?