На двух разных серверах разные службы не запускаются, но если они перезапущены, запускаются успешно

На двух разных серверах у меня установлены redis и postgresdb. Ни один из них не запустится успешно при загрузке, но запустится, если они будут запущены / перезапущены вручную. Ошибка для обоих то же самое (сбой привязки к адресу). Вот пример журнала postgres:

2021-05-27 21:12:39.703 UTC [682] LOG:  starting PostgreSQL 12.6 (Ubuntu 12.6-0ubuntu0.20.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bit
2021-05-27 21:12:39.704 UTC [682] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2021-05-27 21:12:39.707 UTC [682] LOG:  could not bind IPv4 address "192.168.86.222": Cannot assign requested address
2021-05-27 21:12:39.707 UTC [682] HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.

и redis:

653:M 27 May 2021 21:12:23.090 # Could not create server TCP listening socket 192.168.86.234:6379: bind: Cannot assign requested address

машины работают на отдельном оборудовании, но обе работают с одной и той же версией ubuntu (20.04.2 LTS). Эти IP-адреса являются статическими для этих машин, поэтому больше их не использует, и тот факт, что я могу найти их сразу после загрузки (когда я перезапускаю службы), заставляет меня думать, что это не тот случай, когда адрес фактически используется где-то еще. . Я не совсем уверен, в чем причина проблемы. Я предполагаю, что службы пытаются запустить до того, как сетевая служба будет полностью запущена / настроена, но я не знаю, как это проверить или подтвердить. Любые идеи или предложения?

0
задан 28 May 2021 в 00:22

1 ответ

Вы можете попробовать перечислить зависимости (используя ufw в качестве примера):

$ systemctl list-dependencies ufw
ufw.service
● └─system.slice
$

Или просмотрите Информация о модульном файле (снова для ufw):

$ systemctl cat ufw
# /lib/systemd/system/ufw.service
[Unit]
Description=Uncomplicated firewall
Documentation=man:ufw(8)
DefaultDependencies=no
Before=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/lib/ufw/ufw-init start quiet
ExecStop=/lib/ufw/ufw-init stop

[Install]
WantedBy=multi-user.target
$

Если вам действительно нужно, чтобы сеть работала, вы можете добавить к модульному файлу:

After=network-online.target
Wants=network-online.target

Вы также можете просмотреть журнал, чтобы узнать, не выдают ли службы какие-либо ошибки:

sudo journalctl -u ufw
1
ответ дан 28 July 2021 в 11:35

Другие вопросы по тегам:

Похожие вопросы: