Linux

重啟後 PostgreSQL 不在本地 eth1 上監聽

  • June 11, 2020

我有一個帶有 2 個網路介面的伺服器 - eth0 上的全域介面和 eth1 上的本地介面,IP 為 10.181.xx.xx。執行 Ubuntu 16.04。

我設置 PostgreSQL 來監聽這個本地地址,這樣網路中的另一台伺服器就可以訪問它。

問題是當我重新啟動數據庫伺服器時,PostgreSQL 無法綁定到這個本地地址。在 postgresql.log 中有這個:

2016-07-01 15:06:09 GMT LOG:  could not bind IPv4 socket: Cannot assign   requested address
2016-07-01 15:06:09 GMT HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2016-07-01 15:06:09 GMT WARNING:  could not create listen socket for "10.181.xx.xx"

完成後service postgresql restart一切正常。

如何讓 Postgres 等到重啟後 eth1 啟動並綁定到它?

調查/var/log/syslog並發現這是systemd啟動順序的問題。

添加

After=network-online.target

/lib/systemd/system/postgresql@.service[Unit]部分

所以它看起來像這樣:

[Unit]
Description=PostgreSQL Cluster %i
ConditionPathExists=/etc/postgresql/%I/postgresql.conf
PartOf=postgresql.service
ReloadPropagatedFrom=postgresql.service
Before=postgresql.service
After=network-online.target

一切都開始工作 - PostgreSQL 現在在網路線上後載入。

引用自:https://serverfault.com/questions/787426